import * as React from 'react';
import { counterBadgeDriverFactory } from './CounterBadge.driver';
import { CounterBadge } from './';
import { createDriverFactory } from 'wix-ui-test-utils/driver-factory';
import { isTestkitExists } from 'wix-ui-test-utils/vanilla';
import { isEnzymeTestkitExists } from 'wix-ui-test-utils/enzyme';
import { stylableCounterBadgeTestkitFactory as counterBadgeTestkitFactory } from '../../testkit';
import { stylableCounterBadgeTestkitFactory as enzymeCounterBadgeTestkitFactory } from '../../testkit/enzyme';
import { mount } from 'enzyme';
import { SKIN, Skin } from './constants';
import Email from 'wix-ui-icons-common/Email';
describe('CounterBadge', () => {
const createDriver = createDriverFactory(counterBadgeDriverFactory);
describe('children prop', () => {
it('should render the children', () => {
const driver = createDriver(12);
expect(driver.text()).toBe('12');
});
it('should render a number type children', () => {
const children = 12;
const driver = createDriver({children});
expect(driver.text()).toBe('12');
});
it('should render the children as icon', () => {
const driver = createDriver(
);
expect(driver.getIcon()).toBeTruthy();
});
it('should render a default empty child', () => {
const driver = createDriver();
expect(driver.text()).toBe('');
});
});
describe('skin prop', () => {
it('should be general by default', () => {
const wrapper = createDriver(12);
expect(wrapper.getSkin()).toBe(SKIN.general);
});
Object.keys(SKIN).forEach((skin: Skin) => {
it(`should be ${skin}`, () => {
const wrapper = createDriver(
12
);
expect(wrapper.getSkin()).toBe(skin);
});
});
});
describe('width', () => {
it('should be wide when content is string with length > 1', () => {
const wrapper = createDriver(12);
expect(wrapper.isWide()).toBe(true);
});
it('should not be wide when content is string with length <= 1', () => {
const wrapper = createDriver(1);
expect(wrapper.isWide()).toBe(false);
});
it('should not be wide when content is an icon', () => {
const wrapper = createDriver(
);
expect(wrapper.isWide()).toBe(false);
});
});
describe('behavior', () => {
it('should display 99+ when content is a number > 99', () => {
const wrapper = createDriver(777);
expect(wrapper.text()).toBe('99+');
});
});
describe('testkit', () => {
it('should exist', () => {
expect(
isTestkitExists(
12,
counterBadgeTestkitFactory
)
).toBe(true);
});
});
describe('enzyme testkit', () => {
it('should exist', () => {
expect(
isEnzymeTestkitExists(
12,
enzymeCounterBadgeTestkitFactory,
mount
)
).toBe(true);
});
});
});