import * as React from 'react';
import { cleanup, render } from '@testing-library/react';
import { Else, If, Then, ElseIf, ThenIf } from '.';
describe('If component', () => {
afterEach(cleanup);
test('Empty render', () => {
const { container } = render();
expect(container.innerHTML).toBe('');
});
test('Render children if true', () => {
const { container } = render(<>Test string>);
expect(container.innerHTML).toBe('Test string');
});
test('Render children if condition === true when children is function', () => {
const { container } = render({() => <>Test string>});
expect(container.innerHTML).toBe('Test string');
});
test('Render null if condition === false when children is function', () => {
const { container } = render({() => <>Test string>});
expect(container.innerHTML).toBe('');
});
test('Render array like children', () => {
const { container } = render(
Test
<>String>
);
expect(container.textContent).toBe('TestString');
});
test('Render Then if true', () => {
const { container } = render(
Wrong string
Right string
);
expect(container.innerHTML).toBe('Right string');
});
test('Render Then and Else empty if no children', () => {
const { container } = render(
);
expect(container.innerHTML).toBe('');
});
test('Render Else if false', () => {
const { container } = render(
Wrong string
Right string
);
expect(container.innerHTML).toBe('Right string');
const { container: anotherContainer } = render(Right string);
expect(anotherContainer.innerHTML).toBe('Right string');
});
test('Render nothing if false', () => {
const { container } = render(<>Test string>);
expect(container.innerHTML).toBe('');
});
test('Render ElseIf the same way as If inside Else', () => {
const { container: container1 } = render(
<>Test string>
);
const { container: container2 } = render(
<>Test string>
);
expect(container1.innerHTML).toBe('Test string');
expect(container2.innerHTML).toBe('Test string');
});
test('Render ThenIf the same way as If inside Then', () => {
const { container: container1 } = render(
<>Test string>
);
const { container: container2 } = render(
<>Test string>
);
expect(container1.innerHTML).toBe('Test string');
expect(container2.innerHTML).toBe('Test string');
});
});