theme defaults in general settings save and apply correctly with auth enabled
This commit is contained in:
8 files changed
+139
-18
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import { describe, it, expect } from 'bun:test';
|
||||
import { resolveToggleValue, preferenceTarget, shouldSkipApply } from '../src/lib/utils/theme-preference';
|
||||
|
||||
describe('resolveToggleValue', () => {
|
||||
it('shows the global default when one is provided (General editor)', () => {
|
||||
expect(resolveToggleValue(true, false)).toBe(true);
|
||||
expect(resolveToggleValue(false, true)).toBe(false);
|
||||
});
|
||||
it('shows the store (personal) value when no global is provided', () => {
|
||||
expect(resolveToggleValue(undefined, true)).toBe(true);
|
||||
expect(resolveToggleValue(undefined, false)).toBe(false);
|
||||
});
|
||||
it('a global value of false is respected, not treated as "unset"', () => {
|
||||
// The guard is `!== undefined`, so `false` is a real global default, not a fallthrough.
|
||||
expect(resolveToggleValue(false, true)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('preferenceTarget', () => {
|
||||
it('saves to the profile (PUT) for a per-user preference', () => {
|
||||
expect(preferenceTarget(42)).toEqual({ url: '/api/profile/preferences', method: 'PUT' });
|
||||
});
|
||||
it('saves to the global default (POST) when no user id is given', () => {
|
||||
expect(preferenceTarget(undefined)).toEqual({ url: '/api/settings/general', method: 'POST' });
|
||||
});
|
||||
});
|
||||
|
||||
describe('shouldSkipApply', () => {
|
||||
it('skips while auth state is still loading', () => {
|
||||
expect(shouldSkipApply(true, false, undefined)).toBe(true);
|
||||
expect(shouldSkipApply(true, true, 42)).toBe(true);
|
||||
});
|
||||
it('skips a global edit when auth is on (admin keeps their own view)', () => {
|
||||
expect(shouldSkipApply(false, true, undefined)).toBe(true);
|
||||
});
|
||||
it('applies a per-user edit even with auth on', () => {
|
||||
expect(shouldSkipApply(false, true, 42)).toBe(false);
|
||||
});
|
||||
it('applies a global edit when auth is off (store is the global value)', () => {
|
||||
expect(shouldSkipApply(false, false, undefined)).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user