import 'jest-styled-components';
import * as stories from './Notification.stories';
import React from 'react';
import { render, cleanup } from '@testing-library/react';
import { composeStories } from '@storybook/testing-react';
const { Regular, Standard, CustomIcon } = composeStories(stories);
describe('Notification - Standard - Active - Regular Text - Regular Icon', () => {
let container: HTMLDivElement;
const message = Standard.args?.message;
const messageId = 'test-notification-message';
const testId = 'test-notification-id';
const closeId = 'test-notification-x';
const title = 'New Message';
const iconId = 'test-notification-icon-wrapper';
const titleId = 'test-notification-title';
beforeEach(() => {
container = document.createElement('div');
render(, {
container: document.body.appendChild(container),
});
});
afterEach(() => {
cleanup();
});
it('renders the component', () => {
const element = container.querySelector(`[data-testid="${testId}"]`);
expect(element).not.toBeNull();
});
it('renders title correctly', () => {
const element = container.querySelector(`[data-testid="${titleId}"]`);
expect(element?.textContent).toBe(title);
});
it('renders message correctly', () => {
const element = container.querySelector(`[data-testid="${messageId}"]`);
expect(element?.textContent).toBe(message);
});
it('should render left icon', () => {
const iconSVG = container.querySelector(
`[data-testid="${iconId}"] > div > svg`,
);
expect(iconSVG).not.toBeNull();
});
it('should render close icon', () => {
const closeSVGtitle = container.querySelector(
`[data-testid="${closeId}"] > div > svg > title`,
);
expect(closeSVGtitle?.innerHTML).toBe('x icon');
});
it('should render correct', () => {
const iconSVG = container.querySelector(
`[data-testid="${closeId}"] > div > svg`,
);
expect(iconSVG).not.toBeNull();
});
});
describe('Notification - Regular - Active - Custom Text - Regular Icon', () => {
let container: HTMLDivElement;
const testId = 'test-notification-id';
const messageId = 'test-notification-message';
const titleId = 'test-notification-title';
const closeId = 'test-notification-x';
const title = Regular?.args?.title;
const message = Regular?.args?.message;
const iconId = 'test-notification-icon-wrapper';
beforeEach(() => {
container = document.createElement('div');
render(, {
container: document.body.appendChild(container),
});
});
afterEach(() => {
cleanup();
});
it('renders the component', () => {
const element = container.querySelector(`[data-testid="${testId}"]`);
expect(element).not.toBeNull();
});
it('renders title correctly', () => {
const element = container.querySelector(`[data-testid="${titleId}"]`);
expect(element?.textContent).toBe(title);
});
it('renders message correctly', () => {
const element = container.querySelector(`[data-testid="${messageId}"]`);
expect(element?.textContent).toBe(message);
});
it('should render left icon', () => {
const iconSVG = container.querySelector(
`[data-testid="${iconId}"] > div > svg`,
);
expect(iconSVG).not.toBeNull();
});
it('should render close icon', () => {
const iconSVG = container.querySelector(
`[data-testid="${closeId}"] > div > svg`,
);
expect(iconSVG).not.toBeNull();
});
});
describe('Notification - Active - Custom Text - Custom Icon', () => {
let container: HTMLDivElement;
const testId = 'test-notification-id';
const messageId = 'test-notification-message';
const titleId = 'test-notification-title';
const closeId = 'test-notification-x';
const iconId = 'test-notification-icon-wrapper';
const title = CustomIcon?.args?.title;
const message = CustomIcon?.args?.message;
beforeEach(() => {
container = document.createElement('div');
render(, {
container: document.body.appendChild(container),
});
});
afterEach(() => {
cleanup();
});
it('renders the component', () => {
const element = container.querySelector(`[data-testid="${testId}"]`);
expect(element).not.toBeNull();
});
it('renders title correctly', () => {
const element = container.querySelector(`[data-testid="${titleId}"]`);
expect(element?.textContent).toBe(title);
});
it('renders message correctly', () => {
const element = container.querySelector(`[data-testid="${messageId}"]`);
expect(element?.textContent).toBe(message);
});
it('should render left icon', () => {
const iconSVG = container.querySelector(
`[data-testid="${iconId}"] > div > svg`,
);
expect(iconSVG).not.toBeNull();
});
it('should render close icon', () => {
const iconSVG = container.querySelector(
`[data-testid="${closeId}"] > div > svg`,
);
expect(iconSVG).not.toBeNull();
});
});