5180 fichiers 38.5 Mo 0 téléchargements 563 vues mis à jour il y a 8 heures ui
nitro-v36-with-renderer-v36 / src / components / catalog / views / page / layout / clubPurchase.helpers.test.ts
clubPurchase.helpers.test.ts 2.5 Ko Télécharger le fichier
import { describe, expect, it } from 'vitest';
import { clubOffersWindowId, getClubMembershipSummary, groupClubOffers, isVipPurchaseLayout } from './clubPurchase.helpers';

const offer = (offerId: number, vip: boolean) => ({ offerId, vip });

describe('club purchase rules', () => {
    it('shows only VIP offers on the VIP purchase page', () => {
        const groups = groupClubOffers('vip_buy', [offer(1, false), offer(2, true), offer(3, true)]);

        expect(groups.hc).toEqual([]);
        expect(groups.vip.map((entry) => entry.offerId)).toEqual([2, 3]);
        expect(groups.visible.map((entry) => entry.offerId)).toEqual([2, 3]);
    });

    it('treats the loyalty vip page like the VIP purchase page', () => {
        const groups = groupClubOffers('loyalty_vip_buy', [offer(1, false), offer(2, true)]);

        expect(groups.hc).toEqual([]);
        expect(groups.visible.map((entry) => entry.offerId)).toEqual([2]);
        expect(isVipPurchaseLayout('loyalty_vip_buy')).toBe(true);
        expect(isVipPurchaseLayout('vip_buy')).toBe(true);
        expect(isVipPurchaseLayout('club_buy')).toBe(false);
    });

    it('keeps HC and VIP offers separate on the club purchase page', () => {
        const groups = groupClubOffers('club_buy', [offer(1, false), offer(2, true), offer(3, false)]);

        expect(groups.hc.map((entry) => entry.offerId)).toEqual([1, 3]);
        expect(groups.vip.map((entry) => entry.offerId)).toEqual([2]);
        expect(groups.visible.map((entry) => entry.offerId)).toEqual([1, 3, 2]);
    });

    it('returns a safe inactive membership state before purse data is available', () => {
        expect(getClubMembershipSummary(null)).toEqual({ active: false, tier: 'none', totalDays: 0 });
    });

    it('distinguishes active HC and VIP memberships', () => {
        expect(getClubMembershipSummary({ clubDays: 2, clubPeriods: 1, isVip: false })).toEqual({
            active: true,
            tier: 'hc',
            totalDays: 33
        });
        expect(getClubMembershipSummary({ clubDays: 4, clubPeriods: 0, isVip: true })).toEqual({
            active: true,
            tier: 'vip',
            totalDays: 4
        });
    });

    it('asks for the offer window AIR asks for on each club page', () => {
        expect(clubOffersWindowId('club_buy')).toBe(0);
        expect(clubOffersWindowId('vip_buy')).toBe(1);
        expect(clubOffersWindowId('loyalty_vip_buy')).toBe(6);
        expect(clubOffersWindowId('something_else')).toBe(0);
    });
});
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