wix-style-react
Version:
119 lines (102 loc) • 3.68 kB
JavaScript
import React from 'react';
import Text from '../index';
import { SIZES, SKINS, WEIGHTS } from '../constants';
import {
createRendererWithDriver,
createRendererWithUniDriver,
cleanup,
} from '../../../test/utils/react/index';
import textDriverFactory from '../Text.driver';
import { textUniDriverFactory } from '../Text.uni.driver';
describe('Text', () => {
afterEach(() => cleanup());
describe('[sync]', () => {
runTests(createRendererWithDriver(textDriverFactory));
});
describe('[async]', () => {
runTests(createRendererWithUniDriver(textUniDriverFactory));
});
function runTests(render) {
describe('size prop', () => {
it(`should be ${SIZES.medium} by default`, async () => {
const { driver } = render(<Text>Hello</Text>);
expect(await driver.getSize()).toBe(SIZES.medium);
});
Object.keys(SIZES).forEach(size => {
it(`should be ${size}`, async () => {
const { driver } = render(<Text size={size}>Hello</Text>);
expect(await driver.getSize()).toBe(size);
});
});
});
describe('weight prop', () => {
it(`should be ${WEIGHTS.thin} by default`, async () => {
const { driver } = render(<Text>Hello</Text>);
expect(await driver.getWeight()).toBe(WEIGHTS.thin);
});
Object.keys(WEIGHTS).forEach(weight => {
it(`should be ${weight}`, async () => {
const { driver } = render(<Text weight={weight}>Hello</Text>);
expect(await driver.getWeight()).toBe(weight);
});
});
});
describe('secondary prop', () => {
it('should be false by default', async () => {
const { driver } = render(<Text>Hello</Text>);
expect(await driver.isSecondary()).toBe(false);
});
it(`should be true`, async () => {
const { driver } = render(<Text secondary>Hello</Text>);
expect(await driver.isSecondary()).toBe(true);
});
});
describe('skin prop', () => {
it(`should be ${SKINS.standard} by default`, async () => {
const { driver } = render(<Text>Hello</Text>);
expect(await driver.getSkin()).toBe(SKINS.standard);
});
Object.keys(SKINS).forEach(skin => {
it(`should be ${skin}`, async () => {
const { driver } = render(<Text skin={skin}>Hello</Text>);
expect(await driver.getSkin()).toBe(skin);
});
});
});
describe('light prop', () => {
it('should be dark by default', async () => {
const { driver } = render(<Text>Hello</Text>);
expect(await driver.isLight()).toBe(false);
});
it('should be light', async () => {
const { driver } = render(<Text light>Hello</Text>);
expect(await driver.isLight()).toBe(true);
});
});
describe('tagName', () => {
it(`should have default tagName of span`, async () => {
const { driver } = render(<Text>Hello</Text>);
expect(await driver.getTagName()).toBe('span');
});
it(`should have custom tagName of div`, async () => {
const { driver } = render(<Text tagName="div">Hello</Text>);
expect(await driver.getTagName()).toBe('div');
});
});
describe('getText', () => {
it(`should have the html passed as children`, async () => {
const { driver } = render(
<Text>
Hello<b>World</b>
</Text>,
);
expect(await driver.getText()).toEqual(
expect.stringContaining('Hello'),
);
expect(await driver.getText()).toEqual(
expect.stringContaining('<b>World</b>'),
);
});
});
}
});