27 lines
1.2 KiB
TypeScript
27 lines
1.2 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { selectAddonKeyForScope } from '../addons';
|
|
import type { EventAddonCatalogItem } from '../../api';
|
|
|
|
const sampleAddons: EventAddonCatalogItem[] = [
|
|
{ key: 'extra_photos_500', label: '500 photos', price_id: 'price_1' },
|
|
{ key: 'extend_gallery_30d', label: '30 days', price_id: 'price_2' },
|
|
{ key: 'custom_photos', label: 'Custom photos', price_id: 'price_3' },
|
|
];
|
|
|
|
describe('selectAddonKeyForScope', () => {
|
|
it('prefers scoped default with price id', () => {
|
|
expect(selectAddonKeyForScope(sampleAddons, 'photos')).toBe('extra_photos_500');
|
|
expect(selectAddonKeyForScope(sampleAddons, 'gallery')).toBe('extend_gallery_30d');
|
|
});
|
|
|
|
it('falls back to first scoped addon when defaults missing', () => {
|
|
const addons: EventAddonCatalogItem[] = [{ key: 'custom_gallery', label: 'Gallery', price_id: 'price_9' }];
|
|
expect(selectAddonKeyForScope(addons, 'gallery')).toBe('custom_gallery');
|
|
});
|
|
|
|
it('returns fallback key when no priced addons exist', () => {
|
|
const addons: EventAddonCatalogItem[] = [{ key: 'extra_photos_500', label: '500 photos', price_id: null }];
|
|
expect(selectAddonKeyForScope(addons, 'photos')).toBe('extra_photos_500');
|
|
});
|
|
});
|