57 lines
1.6 KiB
TypeScript

import '../../fixtures/window';
import { Session } from '../../../src/document/history';
import { delay } from '../../utils/misc';
describe('Session', () => {
it('constructor', () => {
const session = new Session(1, { a: 1 });
expect(session.cursor).toBe(1);
expect(session.data).toEqual({ a: 1 });
// @ts-ignore
expect(session.timeGap).toBe(1000);
expect(session.isActive()).toBeTruthy();
});
it('log()', () => {
const session = new Session(1, { a: 1 });
session.log({ a: 2 });
session.log({ a: 3 });
expect(session.data).toEqual({ a: 3 });
});
it('end()', () => {
const session = new Session(1, { a: 1 });
session.end();
expect(session.isActive()).toBeFalsy();
session.log({ a: 2 });
// log is not possible if current session is inactive
expect(session.data).toEqual({ a: 1 });
});
it('timeGap', async () => {
const session = new Session(1, { a: 1 });
expect(session.isActive()).toBeTruthy();
await delay(1200);
expect(session.isActive()).toBeFalsy();
session.log({ a: 2 });
// log is not possible if current session is inactive
expect(session.data).toEqual({ a: 1 });
});
it('custom timeGap', async () => {
const session = new Session(1, { a: 1 }, 2000);
expect(session.isActive()).toBeTruthy();
await delay(1200);
expect(session.isActive()).toBeTruthy();
await delay(1000);
expect(session.isActive()).toBeFalsy();
session.log({ a: 2 });
// log is not possible if current session is inactive
expect(session.data).toEqual({ a: 1 });
});
});