import type React from 'react';
import { render, screen, fireEvent } from '@testing-library/react';
import { useLastViewedFlags } from './useLastViewedFlags';
const TestComponent: React.FC<{
testId: string;
featureId: string;
projectId: string;
}> = ({ testId, featureId, projectId }) => {
const { lastViewed, setLastViewed } = useLastViewedFlags();
const handleUpdate = () => {
setLastViewed({ featureId, projectId });
};
return (
{lastViewed.map((flag, index) => (
{`${flag.featureId} - ${flag.projectId}`}
))}
);
};
describe('Last three unique flags are persisted and duplicates are skipped', () => {
beforeEach(() => {
localStorage.clear();
render(
<>
>,
);
});
it('only persists the last three unique flags across components and skips duplicates', async () => {
fireEvent.click(screen.getByTestId('update-component1'));
fireEvent.click(screen.getByTestId('update-component2'));
fireEvent.click(screen.getByTestId('update-component1')); // duplicate
fireEvent.click(screen.getByTestId('update-component3'));
fireEvent.click(screen.getByTestId('update-component4'));
expect(await screen.findAllByText('Feature2 - Project2')).toHaveLength(
4,
);
expect(await screen.findAllByText('Feature3 - Project3')).toHaveLength(
4,
);
expect(await screen.findAllByText('Feature4 - Project4')).toHaveLength(
4,
);
});
});