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

describe('soundboard feed store', () => {
    beforeEach(() => useSoundboardFeedStore.getState().clear());

    it('keeps the newest plays first up to the limit and remembers the last sound', () => {
        const { push } = useSoundboardFeedStore.getState();

        for (let index = 1; index <= SOUNDBOARD_FEED_LIMIT + 2; index++) push({ username: `user${index}`, userId: index, soundName: 'Click', soundId: index });

        const { entries, lastPlayed } = useSoundboardFeedStore.getState();
        expect(entries).toHaveLength(SOUNDBOARD_FEED_LIMIT);
        expect(entries[0].username).toBe(`user${SOUNDBOARD_FEED_LIMIT + 2}`);
        expect(lastPlayed?.soundId).toBe(SOUNDBOARD_FEED_LIMIT + 2);
    });

    it('never reuses a key, not even after the feed was cleared', () => {
        const { push, clear } = useSoundboardFeedStore.getState();
        const first = push({ username: 'tester', userId: 1, soundName: 'Click', soundId: 1 });

        clear();
        const second = push({ username: 'tester', userId: 1, soundName: 'Click', soundId: 1 });

        expect(second).toBeGreaterThan(first);
    });

    it('dismisses a single entry', () => {
        const key = useSoundboardFeedStore.getState().push({ username: 'tester', userId: 1, soundName: 'Click', soundId: 1 });
        useSoundboardFeedStore.getState().push({ username: 'other', userId: 2, soundName: 'Ding', soundId: 2 });

        useSoundboardFeedStore.getState().dismiss(key);
        expect(useSoundboardFeedStore.getState().entries.map((entry) => entry.username)).toEqual(['other']);
    });
});
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