setting-profile-mode.test.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { describe, expect, it } from 'vitest';
  2. import { AllSetting } from '@/models/setting';
  3. import { AllSettingSchema } from '@/schemas/setting';
  4. describe('subscription profile mode', () => {
  5. it.each([undefined, {}, { subProfileUrl: '' }, { subProfileUrl: ' ' }])(
  6. 'defaults to no link without a legacy URL: %j',
  7. (data) => {
  8. expect(new AllSetting(data).subProfileMode).toBe('none');
  9. },
  10. );
  11. it('preserves a legacy custom URL when its mode is missing', () => {
  12. const setting = new AllSetting({ subProfileUrl: 'https://example.com/profile' });
  13. expect(setting.subProfileMode).toBe('custom');
  14. expect(setting.subProfileUrl).toBe('https://example.com/profile');
  15. });
  16. it.each(['none', 'builtin', 'custom'])(
  17. 'honors the explicit %s mode with a stored URL',
  18. (mode) => {
  19. const result = AllSettingSchema.safeParse({
  20. subProfileMode: mode,
  21. subProfileUrl: 'https://example.com/profile',
  22. });
  23. expect(result.success).toBe(true);
  24. if (!result.success) return;
  25. expect(new AllSetting(result.data).subProfileMode).toBe(mode);
  26. },
  27. );
  28. it.each(['auto', '', null, true])('rejects an invalid mode: %j', (mode) => {
  29. expect(AllSettingSchema.safeParse({ subProfileMode: mode }).success).toBe(false);
  30. });
  31. });