Skip to content

Commit 811bd8e

Browse files
committed
feat: improve ab notifications SOFIE-207
1 parent d78002e commit 811bd8e

File tree

5 files changed

+208
-51
lines changed

5 files changed

+208
-51
lines changed

packages/job-worker/src/playout/abPlayback/__tests__/abPlayback.spec.ts

Lines changed: 94 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function createBasicResolvedPieceInstance(
3333
const piece = literal<PieceInstancePiece>({
3434
_id: protectString(id),
3535
externalId: id,
36-
name: id,
36+
name: `name-${id}`,
3737
enable: {
3838
start,
3939
},
@@ -142,13 +142,20 @@ describe('resolveMediaPlayers', () => {
142142
[1, 2],
143143
4500
144144
)
145-
expect(assignments.failedRequired).toEqual(['inst_2_clip_ghi'])
145+
expect(assignments.failedRequired).toEqual([{ id: 'inst_2_clip_ghi', pieceNames: ['name-2'] }])
146146
expect(assignments.failedOptional).toHaveLength(0)
147147
expect(assignments.requests).toHaveLength(3)
148148
expect(assignments.requests).toEqual([
149-
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false },
150-
{ end: 5400, id: 'inst_1_clip_def', playerId: 2, start: 400, optional: false },
151-
{ end: 4800, id: 'inst_2_clip_ghi', playerId: undefined, start: 800, optional: false }, // Massive overlap
149+
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false, pieceNames: ['name-0'] },
150+
{ end: 5400, id: 'inst_1_clip_def', playerId: 2, start: 400, optional: false, pieceNames: ['name-1'] },
151+
{
152+
end: 4800,
153+
id: 'inst_2_clip_ghi',
154+
playerId: undefined,
155+
start: 800,
156+
optional: false,
157+
pieceNames: ['name-2'],
158+
}, // Massive overlap
152159
])
153160

154161
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)
@@ -189,13 +196,34 @@ describe('resolveMediaPlayers', () => {
189196
['player1', 'player2'],
190197
4500
191198
)
192-
expect(assignments.failedRequired).toEqual(['inst_2_clip_ghi'])
199+
expect(assignments.failedRequired).toEqual([{ id: 'inst_2_clip_ghi', pieceNames: ['name-2'] }])
193200
expect(assignments.failedOptional).toHaveLength(0)
194201
expect(assignments.requests).toHaveLength(3)
195202
expect(assignments.requests).toEqual([
196-
{ end: 5400, id: 'inst_0_clip_abc', playerId: 'player1', start: 400, optional: false },
197-
{ end: 5400, id: 'inst_1_clip_def', playerId: 'player2', start: 400, optional: false },
198-
{ end: 4800, id: 'inst_2_clip_ghi', playerId: undefined, start: 800, optional: false }, // Massive overlap
203+
{
204+
end: 5400,
205+
id: 'inst_0_clip_abc',
206+
playerId: 'player1',
207+
start: 400,
208+
optional: false,
209+
pieceNames: ['name-0'],
210+
},
211+
{
212+
end: 5400,
213+
id: 'inst_1_clip_def',
214+
playerId: 'player2',
215+
start: 400,
216+
optional: false,
217+
pieceNames: ['name-1'],
218+
},
219+
{
220+
end: 4800,
221+
id: 'inst_2_clip_ghi',
222+
playerId: undefined,
223+
start: 800,
224+
optional: false,
225+
pieceNames: ['name-2'],
226+
}, // Massive overlap
199227
])
200228

201229
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)
@@ -236,13 +264,27 @@ describe('resolveMediaPlayers', () => {
236264
[1, 'player2'],
237265
4500
238266
)
239-
expect(assignments.failedRequired).toEqual(['inst_2_clip_ghi'])
267+
expect(assignments.failedRequired).toEqual([{ id: 'inst_2_clip_ghi', pieceNames: ['name-2'] }])
240268
expect(assignments.failedOptional).toHaveLength(0)
241269
expect(assignments.requests).toHaveLength(3)
242270
expect(assignments.requests).toEqual([
243-
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false },
244-
{ end: 5400, id: 'inst_1_clip_def', playerId: 'player2', start: 400, optional: false },
245-
{ end: 4800, id: 'inst_2_clip_ghi', playerId: undefined, start: 800, optional: false }, // Massive overlap
271+
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false, pieceNames: ['name-0'] },
272+
{
273+
end: 5400,
274+
id: 'inst_1_clip_def',
275+
playerId: 'player2',
276+
start: 400,
277+
optional: false,
278+
pieceNames: ['name-1'],
279+
},
280+
{
281+
end: 4800,
282+
id: 'inst_2_clip_ghi',
283+
playerId: undefined,
284+
start: 800,
285+
optional: false,
286+
pieceNames: ['name-2'],
287+
}, // Massive overlap
246288
])
247289

248290
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)
@@ -286,7 +328,14 @@ describe('resolveMediaPlayers', () => {
286328
expect(assignments.failedOptional).toHaveLength(0)
287329
expect(assignments.requests).toHaveLength(1)
288330
expect(assignments.requests).toEqual([
289-
{ end: 7400, id: 'tmp_clip_abc', playerId: 1, start: 400, optional: false },
331+
{
332+
end: 7400,
333+
id: 'tmp_clip_abc',
334+
playerId: 1,
335+
start: 400,
336+
optional: false,
337+
pieceNames: ['name-0', 'name-1', 'name-2', 'name-3'],
338+
},
290339
])
291340

292341
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(4)
@@ -335,9 +384,9 @@ describe('resolveMediaPlayers', () => {
335384
expect(assignments.failedOptional).toHaveLength(0)
336385
expect(assignments.requests).toHaveLength(3)
337386
expect(assignments.requests).toEqual([
338-
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false },
339-
{ end: 4800, id: 'inst_1_clip_def', playerId: 2, start: 800, optional: false },
340-
{ end: 7400, id: 'inst_3_clip_ghi', playerId: 2, start: 6400, optional: false },
387+
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false, pieceNames: ['name-0'] },
388+
{ end: 4800, id: 'inst_1_clip_def', playerId: 2, start: 800, optional: false, pieceNames: ['name-1'] },
389+
{ end: 7400, id: 'inst_3_clip_ghi', playerId: 2, start: 6400, optional: false, pieceNames: ['name-3'] },
341390
])
342391

343392
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)
@@ -382,9 +431,9 @@ describe('resolveMediaPlayers', () => {
382431
expect(assignments.failedOptional).toHaveLength(0)
383432
expect(assignments.requests).toHaveLength(3)
384433
expect(assignments.requests).toEqual([
385-
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false },
386-
{ end: 6800, id: 'inst_1_clip_def', playerId: 2, start: 800, optional: false },
387-
{ end: 6400, id: 'inst_3_clip_ghi', playerId: 1, start: 5400, optional: false },
434+
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false, pieceNames: ['name-0'] },
435+
{ end: 6800, id: 'inst_1_clip_def', playerId: 2, start: 800, optional: false, pieceNames: ['name-1'] },
436+
{ end: 6400, id: 'inst_3_clip_ghi', playerId: 1, start: 5400, optional: false, pieceNames: ['name-3'] },
388437
])
389438

390439
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)
@@ -429,9 +478,9 @@ describe('resolveMediaPlayers', () => {
429478
expect(assignments.failedOptional).toHaveLength(0)
430479
expect(assignments.requests).toHaveLength(3)
431480
expect(assignments.requests).toEqual([
432-
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false },
433-
{ end: 6800, id: 'inst_1_clip_def', playerId: 2, start: 800, optional: false },
434-
{ end: 6400, id: 'inst_3_clip_ghi', playerId: 1, start: 5400, optional: false },
481+
{ end: 5400, id: 'inst_0_clip_abc', playerId: 1, start: 400, optional: false, pieceNames: ['name-0'] },
482+
{ end: 6800, id: 'inst_1_clip_def', playerId: 2, start: 800, optional: false, pieceNames: ['name-1'] },
483+
{ end: 6400, id: 'inst_3_clip_ghi', playerId: 1, start: 5400, optional: false, pieceNames: ['name-3'] },
435484
])
436485

437486
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)
@@ -483,13 +532,20 @@ describe('resolveMediaPlayers', () => {
483532
[1, 2],
484533
0
485534
)
486-
expect(assignments.failedRequired).toEqual(['inst_2_clip_ghi'])
535+
expect(assignments.failedRequired).toEqual([{ id: 'inst_2_clip_ghi', pieceNames: ['name-2'] }])
487536
expect(assignments.failedOptional).toHaveLength(0)
488537
expect(assignments.requests).toHaveLength(3)
489538
expect(assignments.requests).toEqual([
490-
{ end: 7400, id: 'inst_0_clip_abc', playerId: 2, start: 2400, optional: false },
491-
{ end: 7400, id: 'inst_1_clip_def', playerId: 1, start: 2400, optional: false },
492-
{ end: 6800, id: 'inst_2_clip_ghi', playerId: undefined, start: 2800, optional: false },
539+
{ end: 7400, id: 'inst_0_clip_abc', playerId: 2, start: 2400, optional: false, pieceNames: ['name-0'] },
540+
{ end: 7400, id: 'inst_1_clip_def', playerId: 1, start: 2400, optional: false, pieceNames: ['name-1'] },
541+
{
542+
end: 6800,
543+
id: 'inst_2_clip_ghi',
544+
playerId: undefined,
545+
start: 2800,
546+
optional: false,
547+
pieceNames: ['name-2'],
548+
},
493549
])
494550

495551
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)
@@ -542,12 +598,19 @@ describe('resolveMediaPlayers', () => {
542598
0
543599
)
544600
expect(assignments.failedRequired).toHaveLength(0)
545-
expect(assignments.failedOptional).toEqual(['inst_1_clip_def'])
601+
expect(assignments.failedOptional).toEqual([{ id: 'inst_1_clip_def', pieceNames: ['name-1'] }])
546602
expect(assignments.requests).toHaveLength(3)
547603
expect(assignments.requests).toEqual([
548-
{ end: 7400, id: 'inst_0_clip_abc', playerId: 2, start: 2400, optional: false },
549-
{ end: 7400, id: 'inst_1_clip_def', playerId: undefined, start: 2400, optional: true },
550-
{ end: 6800, id: 'inst_2_clip_ghi', playerId: 1, start: 2800, optional: false },
604+
{ end: 7400, id: 'inst_0_clip_abc', playerId: 2, start: 2400, optional: false, pieceNames: ['name-0'] },
605+
{
606+
end: 7400,
607+
id: 'inst_1_clip_def',
608+
playerId: undefined,
609+
start: 2400,
610+
optional: true,
611+
pieceNames: ['name-1'],
612+
},
613+
{ end: 6800, id: 'inst_2_clip_ghi', playerId: 1, start: 2800, optional: false, pieceNames: ['name-2'] },
551614
])
552615

553616
expect(mockGetPieceSessionId).toHaveBeenCalledTimes(3)

0 commit comments

Comments
 (0)