5180 fichiers 38.5 Mo 0 téléchargements 242 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / hooks / navigator / navigatorFavouritesStore.test.ts
navigatorFavouritesStore.test.ts 1.9 Ko Télécharger le fichier
import { beforeEach, describe, expect, it } from 'vitest';
import { useNavigatorFavouritesStore } from './navigatorFavouritesStore';

const reset = () => useNavigatorFavouritesStore.setState({ ids: new Set<number>() });

describe('navigatorFavouritesStore', () => {
    beforeEach(reset);

    it('setAll replaces membership and coerces ids to numbers', () => {
        useNavigatorFavouritesStore.getState().setAll(['1', 2, '3'] as any);
        const { ids } = useNavigatorFavouritesStore.getState();
        expect(ids.has(1)).toBe(true);
        expect(ids.has(2)).toBe(true);
        expect(ids.has(3)).toBe(true);
        expect(ids.size).toBe(3);
    });

    it('apply(true) adds and apply(false) removes', () => {
        const { apply } = useNavigatorFavouritesStore.getState();
        apply(7, true);
        expect(useNavigatorFavouritesStore.getState().ids.has(7)).toBe(true);
        apply(7, false);
        expect(useNavigatorFavouritesStore.getState().ids.has(7)).toBe(false);
    });

    it('apply returns the same state reference when nothing changes (no needless re-render)', () => {
        useNavigatorFavouritesStore.getState().setAll([5]);
        const before = useNavigatorFavouritesStore.getState().ids;
        useNavigatorFavouritesStore.getState().apply(5, true); // already present
        expect(useNavigatorFavouritesStore.getState().ids).toBe(before);
        useNavigatorFavouritesStore.getState().apply(99, false); // already absent
        expect(useNavigatorFavouritesStore.getState().ids).toBe(before);
    });

    it('apply creates a new Set reference when membership actually changes', () => {
        useNavigatorFavouritesStore.getState().setAll([5]);
        const before = useNavigatorFavouritesStore.getState().ids;
        useNavigatorFavouritesStore.getState().apply(6, true);
        expect(useNavigatorFavouritesStore.getState().ids).not.toBe(before);
    });
});
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser