import React from 'react';
import { fireEvent, waitFor, screen, render } from '@testing-library/react';
import { composeStories } from '@storybook/testing-react';
import * as stories from './Breadcrumbs.stories';
import color from '../../styles/colors';
import 'jest-styled-components';
const { One, Two, Three, Four } = composeStories(stories);
const olId = 'breadcrumbs-ol-test-id';
const navId = 'breadcrumbs-nav-test-id';
const separatorId = 'breadcrumbs-separator-test-id';
const breadcrumbId = 'breadcrumb-test-id';
test('Renders - Breadcrumbs One', () => {
render();
expect(screen.getByTestId(navId)).not.toBeNull();
expect(screen.queryByTestId(separatorId)).toBeNull();
expect(
screen.queryByTestId(breadcrumbId)?.querySelector('svg'),
).toBeDefined();
expect(screen.queryByTestId(olId)).not.toBeNull();
});
xtest('Renders - Breadcrumbs One: Hover Test', async () => {
render();
// TODO: Hover/MouseOver Event does not work as expected so it passes. Need to Fix
const breadcrumbElement = screen.getByTestId(breadcrumbId);
fireEvent.mouseOver(breadcrumbElement);
await waitFor(() => breadcrumbElement);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.grey}`);
});
test('Renders - Breadcrumbs Two', async () => {
render();
expect(screen.getByTestId(navId)).not.toBeNull();
expect(screen.queryByTestId(separatorId)).not.toBeNull();
expect(
screen.queryByTestId(breadcrumbId)?.querySelector('svg'),
).toBeDefined();
expect(screen.queryByTestId(olId)).not.toBeNull();
});
xtest('Renders - Breadcrumbs Two: Hover Test', async () => {
render();
// TODO: Hover Event does not work as expected so it passes. Need to Fix
const breadcrumbElement = screen.getByTestId(breadcrumbId);
fireEvent.mouseOver(breadcrumbElement);
await waitFor(() => breadcrumbElement);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.blueDark}`);
const breadcrumbElement1 = screen.getByTestId(`${breadcrumbId}-1`);
fireEvent.mouseOver(breadcrumbElement1);
await waitFor(() => breadcrumbElement1);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.grey}`);
});
test('Renders - Breadcrumbs Three', () => {
render();
expect(screen.getByTestId(navId)).not.toBeNull();
expect(screen.queryAllByTestId(separatorId).length).toBeGreaterThanOrEqual(
1,
);
expect(
screen.queryByTestId(breadcrumbId)?.querySelector('svg'),
).toBeDefined();
expect(screen.queryByTestId(olId)).not.toBeNull();
});
xtest('Renders - Breadcrumbs Three: Hover Test', async () => {
render();
// TODO: Hover Event does not work as expected so it passes. Need to Fix
const breadcrumbElement = screen.getByTestId(breadcrumbId);
fireEvent.mouseOver(breadcrumbElement);
await waitFor(() => breadcrumbElement);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.blueDark}`);
const breadcrumbElement1 = screen.getByTestId(`${breadcrumbId}-1`);
fireEvent.mouseOver(breadcrumbElement1);
await waitFor(() => breadcrumbElement1);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.blueDark}`);
// third breadcrumb should not change color on hover
const breadcrumbElement2 = screen.getByTestId(`${breadcrumbId}-2`);
fireEvent.mouseOver(breadcrumbElement2);
await waitFor(() => breadcrumbElement2);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.grey}`);
});
test('Renders - Breadcrumbs Four', () => {
render();
expect(screen.getByTestId(navId)).not.toBeNull();
expect(screen.queryAllByTestId(separatorId).length).toBeGreaterThanOrEqual(
1,
);
expect(
screen.queryByTestId(breadcrumbId)?.querySelector('svg'),
).toBeDefined();
expect(screen.queryByTestId(olId)).not.toBeNull();
});
xtest('Renders - Breadcrumbs Four: Hover Test', async () => {
render();
// TODO: Hover Event does not work as expected so it passes. Need to Fix
const breadcrumbElement = screen.getByTestId(breadcrumbId);
fireEvent.mouseOver(breadcrumbElement);
await waitFor(() => breadcrumbElement);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.blueDark}`);
const breadcrumbElement1 = screen.getByTestId(`${breadcrumbId}-1`);
fireEvent.mouseOver(breadcrumbElement1);
await waitFor(() => breadcrumbElement1);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.blueDark}`);
// third breadcrumb should change color on hover
const breadcrumbElement2 = screen.getByTestId(`${breadcrumbId}-2`);
fireEvent.mouseOver(breadcrumbElement2);
await waitFor(() => breadcrumbElement2);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.blueDark}`);
// third breadcrumb should not change color on hover
const breadcrumbElement3 = screen.getByTestId(`${breadcrumbId}-3`);
fireEvent.mouseOver(breadcrumbElement3);
await waitFor(() => breadcrumbElement3);
expect(breadcrumbElement).toHaveStyleRule(`background: ${color.grey}`);
});