diff --git a/apps/server/src/services/__tests__/rollUtils.test.ts b/apps/server/src/services/__tests__/rollUtils.test.ts index daf737ddd..4acbff29f 100644 --- a/apps/server/src/services/__tests__/rollUtils.test.ts +++ b/apps/server/src/services/__tests__/rollUtils.test.ts @@ -1,23 +1,7 @@ -import { OntimeEvent, SupportedEvent } from 'ontime-types'; import { MILLIS_PER_HOUR, MILLIS_PER_MINUTE } from 'ontime-utils'; import { loadRoll } from '../rollUtils.js'; - -const baseEvent = { - type: SupportedEvent.Event, - skip: false, -}; - -function makeOntimeEvent(patch: Partial): OntimeEvent { - return { - ...baseEvent, - ...patch, - } as OntimeEvent; -} - -function prepareTimedEvents(events: Partial[]): OntimeEvent[] { - return events.map(makeOntimeEvent); -} +import { prepareTimedEvents, makeOntimeEvent } from '../rundown-service/__mocks__/rundown.mocks.js'; describe('loadRoll()', () => { const eventlist = [ diff --git a/apps/server/src/services/rundown-service/__mocks__/rundown.mocks.ts b/apps/server/src/services/rundown-service/__mocks__/rundown.mocks.ts new file mode 100644 index 000000000..bff811e2d --- /dev/null +++ b/apps/server/src/services/rundown-service/__mocks__/rundown.mocks.ts @@ -0,0 +1,31 @@ +import { SupportedEvent, OntimeEvent, OntimeDelay } from 'ontime-types'; + +const baseEvent = { + type: SupportedEvent.Event, + skip: false, + revision: 1, +}; + +/** + * Utility to create a Ontime event + */ +export function makeOntimeEvent(patch: Partial): OntimeEvent { + return { + ...baseEvent, + ...patch, + } as OntimeEvent; +} + +/** + * Utility to create a delay event + */ +export function makeOntimeDelay(duration: number): OntimeDelay { + return { id: 'delay', type: SupportedEvent.Delay, duration }; +} + +/** + * Utility to generate a rundown of OntimeEvents form partial objects + */ +export function prepareTimedEvents(events: Partial[]): OntimeEvent[] { + return events.map(makeOntimeEvent); +} diff --git a/apps/server/src/services/rundown-service/__tests__/delayUtils.test.ts b/apps/server/src/services/rundown-service/__tests__/delayUtils.test.ts index c78ce5300..a88bbec3a 100644 --- a/apps/server/src/services/rundown-service/__tests__/delayUtils.test.ts +++ b/apps/server/src/services/rundown-service/__tests__/delayUtils.test.ts @@ -1,20 +1,8 @@ -import { OntimeBlock, OntimeDelay, OntimeEvent, OntimeRundown, SupportedEvent } from 'ontime-types'; -import { apply } from '../delayUtils.js'; +import { OntimeBlock, OntimeEvent, OntimeRundown, SupportedEvent } from 'ontime-types'; import { MILLIS_PER_HOUR } from 'ontime-utils'; -/** - * Small utility to fill in the necessary data for the test - */ -function makeOntimeEvent(event: Partial): OntimeEvent { - return { ...event, type: SupportedEvent.Event, revision: 1 } as OntimeEvent; -} - -/** - * Small utility to make a delay event - */ -function makeOntimeDelay(duration: number): OntimeDelay { - return { id: 'delay', type: SupportedEvent.Delay, duration } as OntimeDelay; -} +import { apply } from '../delayUtils.js'; +import { makeOntimeDelay, makeOntimeEvent } from '../__mocks__/rundown.mocks.js'; describe('apply()', () => { it('applies a positive delay to the rundown', () => { diff --git a/apps/server/src/stores/__mocks__/runtimeState.mocks.ts b/apps/server/src/stores/__mocks__/runtimeState.mocks.ts new file mode 100644 index 000000000..3596bab6d --- /dev/null +++ b/apps/server/src/stores/__mocks__/runtimeState.mocks.ts @@ -0,0 +1,46 @@ +import { TimerPhase, Playback } from 'ontime-types'; +import { deepmerge } from 'ontime-utils'; +import { RuntimeState } from '../runtimeState.js'; + +const baseState: RuntimeState = { + clock: 0, + currentBlock: { + block: null, + startedAt: null, + }, + eventNow: null, + publicEventNow: null, + eventNext: null, + publicEventNext: null, + runtime: { + selectedEventIndex: null, + numEvents: 0, + offset: 0, + plannedStart: 0, + plannedEnd: 0, + actualStart: null, + expectedEnd: null, + }, + timer: { + addedTime: 0, + current: null, + duration: null, + elapsed: null, + expectedFinish: null, + finishedAt: null, + phase: TimerPhase.None, + playback: Playback.Stop, + secondaryTimer: null, + startedAt: null, + }, + _timer: { + forceFinish: null, + totalDelay: 0, + pausedAt: null, + secondaryTarget: null, + }, +}; + +export function makeRuntimeStateData(patch?: Partial) { + return deepmerge(baseState, patch); +}