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

describe('getTargetedOfferSecondsLeft', () => {
    it('counts down and stops at zero', () => {
        expect(getTargetedOfferSecondsLeft(10_000, 4_500)).toBe(5);
        expect(getTargetedOfferSecondsLeft(10_000, 20_000)).toBe(0);
    });

    it('has no countdown when the offer never expires', () => {
        expect(getTargetedOfferSecondsLeft(0, 4_500)).toBeNull();
    });
});

describe('getTargetedOfferPurchaseBlock', () => {
    const offer = { priceInCredits: 10, priceInActivityPoints: 5, purchaseLimit: 1 };

    it('allows a purchase the user can afford', () => {
        expect(getTargetedOfferPurchaseBlock(offer, 10, 5)).toBeNull();
    });

    it('allows an offer priced only in activity points', () => {
        expect(getTargetedOfferPurchaseBlock({ ...offer, priceInCredits: 0 }, 0, 5)).toBeNull();
    });

    it('names what is missing', () => {
        expect(getTargetedOfferPurchaseBlock({ ...offer, purchaseLimit: 0 }, 10, 5)).toBe('limit');
        expect(getTargetedOfferPurchaseBlock(offer, 9, 5)).toBe('credits');
        expect(getTargetedOfferPurchaseBlock(offer, 10, 4)).toBe('points');
    });
});

describe('targeted offer quantity', () => {
    const offer = { priceInCredits: 10, priceInActivityPoints: 0, purchaseLimit: 5 };

    it('holds the quantity inside 1..purchaseLimit and reads an empty field as 1', () => {
        expect(clampTargetedOfferQuantity(3, 5)).toBe(3);
        expect(clampTargetedOfferQuantity(9, 5)).toBe(5);
        expect(clampTargetedOfferQuantity(0, 5)).toBe(1);
        expect(clampTargetedOfferQuantity(Number.NaN, 5)).toBe(1);
    });

    it('checks the wallet against the price of the whole quantity', () => {
        expect(getTargetedOfferPurchaseBlock(offer, 25, 0, 2)).toBeNull();
        expect(getTargetedOfferPurchaseBlock(offer, 25, 0, 3)).toBe('credits');
    });
});
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