5180 fichiers 38.5 Mo 0 téléchargements 227 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / api / avatar / dedupeBadges.test.ts
dedupeBadges.test.ts 1.3 Ko Télécharger le fichier
import { describe, expect, it } from 'vitest';
import { dedupeBadges } from './dedupeBadges';

describe('dedupeBadges', () => {
    it('returns an empty array for an empty input', () => {
        expect(dedupeBadges([])).toEqual([]);
    });

    it('preserves unique badges in slot order', () => {
        expect(dedupeBadges(['a', 'b', 'c'])).toEqual(['a', 'b', 'c']);
    });

    it('replaces duplicate slots with empty strings to preserve slot indices', () => {
        expect(dedupeBadges(['a', 'b', 'a', 'c'])).toEqual(['a', 'b', '', 'c']);
    });

    it('normalizes falsy entries (null, undefined, "") to empty string', () => {
        // server sometimes returns null/undefined for unused slots
        const input = ['a', null as unknown as string, '', undefined as unknown as string, 'b'];

        expect(dedupeBadges(input)).toEqual(['a', '', '', '', 'b']);
    });

    it('only keeps the FIRST occurrence of each unique code', () => {
        expect(dedupeBadges(['a', 'a', 'a'])).toEqual(['a', '', '']);
    });

    it('is order-sensitive: identical multisets but different orderings yield different outputs', () => {
        expect(dedupeBadges(['a', 'b', 'a'])).toEqual(['a', 'b', '']);
        expect(dedupeBadges(['b', 'a', 'a'])).toEqual(['b', 'a', '']);
    });
});
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