57 lines
2 KiB
TypeScript
57 lines
2 KiB
TypeScript
import { afterEach, describe, expect, it } from 'vitest';
|
|
|
|
import {
|
|
captureTeamLocalStateEpoch,
|
|
clearAllTeamLocalStateEpochs,
|
|
clearTeamLocalStateEpoch,
|
|
hasTeamLocalStateEpoch,
|
|
invalidateTeamLocalStateEpoch,
|
|
isTeamLocalStateEpochCurrent,
|
|
} from '../../../src/renderer/store/team/teamLocalStateEpoch';
|
|
|
|
afterEach(() => {
|
|
clearAllTeamLocalStateEpochs();
|
|
});
|
|
|
|
describe('teamLocalStateEpoch', () => {
|
|
it('starts missing teams at epoch zero without materializing an entry', () => {
|
|
expect(captureTeamLocalStateEpoch('my-team')).toBe(0);
|
|
expect(isTeamLocalStateEpochCurrent('my-team', 0)).toBe(true);
|
|
expect(hasTeamLocalStateEpoch('my-team')).toBe(false);
|
|
});
|
|
|
|
it('increments epochs independently per team', () => {
|
|
invalidateTeamLocalStateEpoch('my-team');
|
|
invalidateTeamLocalStateEpoch('my-team');
|
|
invalidateTeamLocalStateEpoch('other-team');
|
|
|
|
expect(captureTeamLocalStateEpoch('my-team')).toBe(2);
|
|
expect(captureTeamLocalStateEpoch('other-team')).toBe(1);
|
|
expect(isTeamLocalStateEpochCurrent('my-team', 1)).toBe(false);
|
|
expect(isTeamLocalStateEpochCurrent('my-team', 2)).toBe(true);
|
|
});
|
|
|
|
it('clears one team epoch without touching other teams', () => {
|
|
invalidateTeamLocalStateEpoch('my-team');
|
|
invalidateTeamLocalStateEpoch('other-team');
|
|
|
|
clearTeamLocalStateEpoch('my-team');
|
|
|
|
expect(captureTeamLocalStateEpoch('my-team')).toBe(0);
|
|
expect(hasTeamLocalStateEpoch('my-team')).toBe(false);
|
|
expect(captureTeamLocalStateEpoch('other-team')).toBe(1);
|
|
expect(hasTeamLocalStateEpoch('other-team')).toBe(true);
|
|
});
|
|
|
|
it('clears all materialized epochs', () => {
|
|
invalidateTeamLocalStateEpoch('my-team');
|
|
invalidateTeamLocalStateEpoch('other-team');
|
|
|
|
clearAllTeamLocalStateEpochs();
|
|
|
|
expect(hasTeamLocalStateEpoch('my-team')).toBe(false);
|
|
expect(hasTeamLocalStateEpoch('other-team')).toBe(false);
|
|
expect(captureTeamLocalStateEpoch('my-team')).toBe(0);
|
|
expect(captureTeamLocalStateEpoch('other-team')).toBe(0);
|
|
});
|
|
});
|