5180 fichiers 38.5 Mo 0 téléchargements 599 vues mis à jour il y a 8 heures ui
nitro-v36-with-renderer-v36 / src / components / catalog / views / page / layout / vip-gifts / clubGifts.helpers.test.ts
clubGifts.helpers.test.ts 5.2 Ko Télécharger le fichier
import { describe, expect, it } from 'vitest';
import { getClubGiftFurniText, getGiftRequirementText, getPastClubDaysText, getPastVipDaysText } from './clubGifts.helpers';

const gift = (overrides: Partial<{ isVip: boolean; isSelectable: boolean; daysRequired: number }> = {}) => ({
    isVip: false,
    isSelectable: false,
    daysRequired: 31,
    ...overrides
});

describe('club gift past days texts', () => {
    it('counts club and vip days together for the club line', () => {
        expect(getPastClubDaysText(0, 0)).toEqual({ key: 'catalog.club_gift.past_club', params: { days: 0, months: 0 } });
        expect(getPastClubDaysText(20, 10)).toEqual({ key: 'catalog.club_gift.past_club', params: { days: 30, months: 0 } });
    });

    it('switches to the long club line from a full month', () => {
        expect(getPastClubDaysText(31, 0)).toEqual({ key: 'catalog.club_gift.past_club.long', params: { days: 0, months: 1 } });
        expect(getPastClubDaysText(20, 13)).toEqual({ key: 'catalog.club_gift.past_club.long', params: { days: 2, months: 1 } });
        expect(getPastClubDaysText(31, 31)).toEqual({ key: 'catalog.club_gift.past_club.long', params: { days: 0, months: 2 } });
    });

    it('counts only vip days for the vip line', () => {
        expect(getPastVipDaysText(0)).toEqual({ key: 'catalog.club_gift.past_vip', params: { days: 0, months: 0 } });
        expect(getPastVipDaysText(30)).toEqual({ key: 'catalog.club_gift.past_vip', params: { days: 30, months: 0 } });
        expect(getPastVipDaysText(31)).toEqual({ key: 'catalog.club_gift.past_vip.long', params: { days: 0, months: 1 } });
        expect(getPastVipDaysText(62)).toEqual({ key: 'catalog.club_gift.past_vip.long', params: { days: 0, months: 2 } });
        expect(getPastVipDaysText(45)).toEqual({ key: 'catalog.club_gift.past_vip.long', params: { days: 14, months: 1 } });
    });

    it('never reports negative days', () => {
        expect(getPastVipDaysText(-5)).toEqual({ key: 'catalog.club_gift.past_vip', params: { days: 0, months: 0 } });
    });
});

describe('club gift requirement text', () => {
    it('measures a vip gift against vip days only', () => {
        const text = getGiftRequirementText(gift({ isVip: true, daysRequired: 62 }), { pastClubDays: 100, pastVipDays: 0 }, 0);

        expect(text).toEqual({ key: 'catalog.club_gift.vip_missing.long', params: { days: 0, months: 2 } });
    });

    it('measures a club gift against club and vip days together', () => {
        expect(getGiftRequirementText(gift({ daysRequired: 62 }), { pastClubDays: 40, pastVipDays: 10 }, 0)).toEqual({
            key: 'catalog.club_gift.club_missing',
            params: { days: 12, months: 0 }
        });
        expect(getGiftRequirementText(gift({ daysRequired: 30 }), { pastClubDays: 0, pastVipDays: 0 }, 0)).toEqual({
            key: 'catalog.club_gift.club_missing',
            params: { days: 30, months: 0 }
        });
        expect(getGiftRequirementText(gift({ daysRequired: 31 }), { pastClubDays: 0, pastVipDays: 0 }, 0)).toEqual({
            key: 'catalog.club_gift.club_missing.long',
            params: { days: 0, months: 1 }
        });
    });

    it('uses the vip wording for a vip gift', () => {
        expect(getGiftRequirementText(gift({ isVip: true, daysRequired: 20 }), { pastClubDays: 0, pastVipDays: 5 }, 0)).toEqual({
            key: 'catalog.club_gift.vip_missing',
            params: { days: 15, months: 0 }
        });
    });

    it('marks a selectable gift while gifts are available', () => {
        expect(getGiftRequirementText(gift({ isSelectable: true }), { pastClubDays: 31, pastVipDays: 0 }, 1)).toEqual({
            key: 'catalog.club_gift.selectable',
            params: null
        });
    });

    it('says nothing for a selectable gift when no gift is available', () => {
        expect(getGiftRequirementText(gift({ isSelectable: true }), { pastClubDays: 31, pastVipDays: 0 }, 0)).toBeNull();
    });

    it('says nothing for a gift that is not selectable without missing days', () => {
        expect(getGiftRequirementText(gift({ daysRequired: 31 }), { pastClubDays: 31, pastVipDays: 0 }, 0)).toBeNull();
    });
});

describe('getClubGiftFurniText', () => {
    const localize = (key: string) => (key === 'known.desc' ? 'Known text' : key);

    it('uses the furnidata text', () => {
        expect(getClubGiftFurniText({ className: 'hc19_1', name: 'HC Sofa', description: 'Comfy' }, 'name', localize)).toBe('HC Sofa');
        expect(getClubGiftFurniText({ className: 'hc19_1', name: 'HC Sofa', description: 'Comfy' }, 'desc', localize)).toBe('Comfy');
    });

    it('never shows a raw key', () => {
        expect(getClubGiftFurniText({ className: 'hc19_1', name: 'HC Sofa', description: 'hc19_1.desc' }, 'desc', localize)).toBe('');
        expect(getClubGiftFurniText({ className: 'hc19_1', name: 'hc19_1.name', description: '' }, 'name', localize)).toBe('hc19_1');
        expect(getClubGiftFurniText({ className: 'x', description: 'known.desc' }, 'desc', localize)).toBe('Known text');
    });

    it('falls back to the class name for a missing name', () => {
        expect(getClubGiftFurniText(null, 'name', localize)).toBe('');
        expect(getClubGiftFurniText({ className: 'hc19_2' }, 'name', localize)).toBe('hc19_2');
    });
});
15Sujets
1Dépôts
20Membres
4En 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