import { h } from 'preact';
import { render, within } from '@testing-library/preact';
import '@testing-library/jest-dom';
import { i18nSupport } from '../../../__support__/i18n';
import { reactionImagesSupport } from '../../../__support__/reaction_images';
import { ReactionsCount } from '..';
import {
articleWithReactions,
articleWithoutReactions,
articleWithOneReaction,
} from '../../__tests__/utilities/articleUtilities.js';
describe(' component', () => {
beforeAll(() => {
i18nSupport();
reactionImagesSupport();
});
it('should not display reactions data when there are no reactions', async () => {
const { queryByText } = render(
,
);
expect(queryByText(/0 reactions/i)).not.toExist();
});
it('should display reaction count when there are exactly one reaction', async () => {
const { queryByText } = render(
,
);
expect(queryByText(/1 reaction/i)).toExist();
});
it('should display reactions data when there are reactions', async () => {
const { queryByText } = render(
,
);
expect(queryByText(/232 reactions/i)).toExist();
});
it('should display multiple reactions when there are reactions', async () => {
const { getByTestId } = render(
,
);
const container = getByTestId('multiple-reactions-icons-container');
const { queryByAltText } = within(container);
// `articleWithReactions` has all reactions except exploding head
// also, we are not using `toHaveAttribute` directly because Jest inserts a
// base URL and we are only interested in the path
expect(queryByAltText('Like').getAttribute('src')).toContain(
'/assets/sparkle-heart.svg',
);
expect(queryByAltText('Unicorn').getAttribute('src')).toContain(
'/assets/multi-unicorn.svg',
);
expect(queryByAltText('Fire').getAttribute('src')).toContain(
'/assets/fire.svg',
);
expect(queryByAltText('Raised Hands').getAttribute('src')).toContain(
'/assets/raised-hands.svg',
);
expect(queryByAltText('Exploding Head')).not.toExist();
});
});