Highlight upgrades in package shop

This commit is contained in:
Codex Agent
2026-01-12 11:38:16 +01:00
parent c08fbf2e45
commit ad336f5e18
5 changed files with 101 additions and 10 deletions

View File

@@ -0,0 +1,33 @@
import { describe, expect, it } from 'vitest';
import { classifyPackageTier, selectRecommendedPackageId } from '../lib/packageShop';
describe('classifyPackageTier', () => {
it('returns neutral when no active price', () => {
expect(classifyPackageTier(100, null)).toEqual({ isUpgrade: false, isDowngrade: false });
});
it('marks upgrades and downgrades by price', () => {
expect(classifyPackageTier(150, 100)).toEqual({ isUpgrade: true, isDowngrade: false });
expect(classifyPackageTier(80, 100)).toEqual({ isUpgrade: false, isDowngrade: true });
});
});
describe('selectRecommendedPackageId', () => {
const packages = [
{ id: 1, price: 100, features: { advanced_analytics: false } },
{ id: 2, price: 150, features: { advanced_analytics: true } },
{ id: 3, price: 200, features: { advanced_analytics: true } },
] as any;
it('returns null when no feature is requested', () => {
expect(selectRecommendedPackageId(packages, null, 100)).toBeNull();
});
it('selects the cheapest upgrade with the feature', () => {
expect(selectRecommendedPackageId(packages, 'advanced_analytics', 120)).toBe(2);
});
it('falls back to cheapest feature package if no upgrades exist', () => {
expect(selectRecommendedPackageId(packages, 'advanced_analytics', 250)).toBe(2);
});
});