| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import { TestBed } from '@angular/core/testing';
- import { ChatFontService, CHAT_FONT_SIZES, DEFAULT_CHAT_FONT } from './chat-font.service';
- import { SessionService } from './session.service';
- describe('ChatFontService(会话字号偏好)', () => {
- let svc: ChatFontService;
- let session: SessionService;
- /*
- * effect() 由 Angular 的变更检测调度,测试里必须手动 flush 才会跑。
- * 不 flush 的话读到的永远是初始值(实测:默认 15 时读到的还是 CSS 兜底的 14)。
- */
- const flush = () => TestBed.flushEffects();
- beforeEach(() => {
- localStorage.clear();
- document.documentElement.style.removeProperty('--chat-read-size');
- TestBed.configureTestingModule({});
- svc = TestBed.inject(ChatFontService);
- session = TestBed.inject(SessionService);
- session.setSession('tok', { id: 'u1', name: '测试', companyId: 'c1' } as never);
- svc.load();
- });
- afterEach(() => {
- localStorage.clear();
- document.documentElement.style.removeProperty('--chat-read-size');
- });
- it('未保存过时为默认值', () => {
- expect(svc.size()).toBe(DEFAULT_CHAT_FONT);
- });
- it('设置后写进 DOM 变量(正文即时生效)', () => {
- svc.set(17);
- flush();
- expect(document.documentElement.style.getPropertyValue('--chat-read-size')).toBe('17px');
- });
- it('默认值也会写进 DOM 变量(不依赖 CSS 兜底)', () => {
- flush();
- expect(document.documentElement.style.getPropertyValue('--chat-read-size')).toBe(
- `${DEFAULT_CHAT_FONT}px`,
- );
- });
- it('非法值吸附到最近的合法档位', () => {
- svc.set(16.4);
- expect(svc.size()).toBe(16);
- svc.set(100);
- expect(svc.size()).toBe(CHAT_FONT_SIZES[CHAT_FONT_SIZES.length - 1]);
- svc.set(-5);
- expect(svc.size()).toBe(CHAT_FONT_SIZES[0]);
- });
- it('持久化:重载后保持', () => {
- svc.set(18);
- // 模拟刷新
- (svc as unknown as { loadedFor: string | null }).loadedFor = null;
- svc.load();
- expect(svc.size()).toBe(18);
- });
- it('按用户隔离', () => {
- svc.set(18);
- session.setSession('tok2', { id: 'u2', name: '乙', companyId: 'c1' } as never);
- (svc as unknown as { loadedFor: string | null }).loadedFor = null;
- svc.load();
- expect(svc.size()).toBe(DEFAULT_CHAT_FONT);
- });
- });
|