Files
fotospiel-app/resources/js/admin/mobile/__tests__/addons.test.ts
2025-12-12 13:38:06 +01:00

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');
});
});