mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-11 02:13:48 +00:00
62c8319d70
refactor: extract functions to api domain refactor: strict custom field parsing refactor: remove rundown cache utilities refactor: directory restructure
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
/* eslint-disable no-console -- we are mocking the console */
|
|
|
|
import { demoDb } from '../../../models/demoProject.js';
|
|
|
|
import { parseDatabaseModel } from '../db.parser.js';
|
|
|
|
// mock data provider
|
|
beforeAll(() => {
|
|
vi.mock('../../classes/data-provider/DataProvider.js', () => {
|
|
return {
|
|
getDataProvider: vi.fn().mockImplementation(() => {
|
|
return {
|
|
setRundown: vi.fn().mockImplementation((newData) => newData),
|
|
setCustomFields: vi.fn().mockImplementation((newData) => newData),
|
|
};
|
|
}),
|
|
};
|
|
});
|
|
});
|
|
|
|
describe('test parseDatabaseModel() with demo project (valid)', () => {
|
|
const filteredDemoProject = structuredClone(demoDb);
|
|
const { data } = parseDatabaseModel(filteredDemoProject);
|
|
|
|
it('has 17 events with 12 top level events', () => {
|
|
expect(data.rundowns.default.order.length).toBe(12);
|
|
expect(Object.keys(data.rundowns.default.entries).length).toBe(17);
|
|
});
|
|
|
|
it('is the same as the demo project since all data is valid', () => {
|
|
// @ts-expect-error -- its ok
|
|
delete filteredDemoProject.settings.version;
|
|
// @ts-expect-error -- its ok
|
|
delete data.settings.version;
|
|
expect(data).toMatchObject(filteredDemoProject);
|
|
});
|
|
});
|
|
|
|
describe('test parseDatabaseModel() edge cases', () => {
|
|
it('skips unknown app and version settings', () => {
|
|
console.log = vi.fn();
|
|
const testData = {
|
|
settings: {
|
|
osc_port: 8888,
|
|
},
|
|
};
|
|
|
|
// @ts-expect-error -- we know this is wrong, testing imports outside domain
|
|
expect(() => parseDatabaseModel(testData)).toThrow();
|
|
});
|
|
|
|
it('fails with invalid JSON', () => {
|
|
// @ts-expect-error -- we know this is wrong, testing imports outside domain
|
|
expect(() => parseDatabaseModel('some random dataset')).toThrow();
|
|
});
|
|
});
|