/
githubmirror
/
tldraw
Обзор
Документация
Войти
/
githubmirror
/
tldraw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
apps/analytics/src/state/state.test.ts
57 строк
2 KB
Steve Ruiz
Refactor analytics app to vanilla JS and modular architecture (#6964)
21 окт 2025, 14:57
Не верифицирован
21 окт 2025, 14:57
e993810
Код
Авторство
О чём код?
import { AnalyticsState } from './state' describe('mini reactive state', () => { test('creates a state with an initial value', () => { class MyState extends AnalyticsState<number> {} const myState = new MyState(10) expect(myState.getValue()).toBe(10) const myOtherState = new MyState(20) expect(myOtherState.getValue()).toBe(20) }) test('updates the state', () => { class MyState extends AnalyticsState<number> {} const myState = new MyState(10) myState.setValue(20) expect(myState.getValue()).toBe(20) }) test('handles subscribers', () => { class MyState extends AnalyticsState<number> {} const myState = new MyState(10) const fn = vi.fn() myState.subscribe((value) => fn(value)) myState.setValue(20) expect(fn).toHaveBeenCalledWith(20) expect(fn).toHaveBeenCalledOnce() }) test('removes subscribers', () => { class MyState extends AnalyticsState<number> {} const myState = new MyState(10) const fn = vi.fn() const unsubscribe = myState.subscribe((value) => fn(value)) unsubscribe() myState.setValue(20) expect(fn).not.toHaveBeenCalled() }) test('handles initializer / dispose', () => { const someState = {} as { something?: boolean } class MyState extends AnalyticsState<number> { override initialize(): void { someState.something = true } override dispose(): void { delete someState.something } } const myState = new MyState(10) expect(someState.something).not.toBeDefined() myState.initialize() expect(someState.something).toBeDefined() myState.dispose() expect(someState.something).not.toBeDefined() }) })