import { composeStories } from '@storybook/testing-react';
import { render, screen } from '@testing-library/react';
import React from 'react';
import * as stories from './Todo.stories';
const { DefaultTodo, WithInitialTodos, FullWidthTodos } =
composeStories(stories);
const todoTestId = 'test-todo';
const todoLabelId = 'test-label';
const todoButtonId = 'test-button';
const todoElementId = 'test-tag-id';
const todoContentId = 'test-todo_content';
export const testCompId = 'test-new-comp';
test('DefaultTodo', async () => {
const labelText = DefaultTodo.args?.label;
render();
const element = screen.getByTestId(todoTestId);
expect(element).not.toBeNull();
const labelElement = screen.getByTestId(todoLabelId);
expect(labelElement?.textContent).toContain(labelText);
});
test('WithInitialTodos', async () => {
const labelText = WithInitialTodos.args?.label;
const todos = WithInitialTodos.args?.todos;
const buttonText = WithInitialTodos.args?.buttonText;
render(
,
);
const element = screen.getByTestId(todoTestId);
expect(element).not.toBeNull();
const labelElement = screen.getByTestId(todoLabelId);
expect(labelElement?.textContent).toContain(labelText);
const buttonElement = screen.getByTestId(todoButtonId);
expect(buttonElement?.textContent).toContain(buttonText);
const todoElement = await screen.findAllByTestId(todoElementId);
expect(todoElement?.length).toBe(todos?.length);
});
test('FullWidthTodos', async () => {
const labelText = FullWidthTodos.args?.label;
const todos = FullWidthTodos.args?.todos;
const buttonText = FullWidthTodos.args?.buttonText;
const fullWidth = FullWidthTodos.args?.fullWidth;
render(
,
);
const element = screen.getByTestId(todoTestId);
expect(element).not.toBeNull();
const labelElement = screen.getByTestId(todoLabelId);
expect(labelElement?.textContent).toContain(labelText);
const buttonElement = screen.getByTestId(todoButtonId);
expect(buttonElement?.textContent).toContain(buttonText);
const todoElement = await screen.findAllByTestId(todoElementId);
expect(todoElement?.length).toBe(todos?.length);
const todoContent = screen.getByTestId(todoContentId);
const styles = todoContent && (getComputedStyle(todoContent) as any);
const flexDirection = styles?._values?.['flex-direction'];
expect(flexDirection).toBe('column');
});