@@ -5,6 +5,7 @@ import { protectString } from '@sofie-automation/corelib/dist/protectedString'
55import { getSegmentId } from '../../../ingest/lib'
66import { MutableIngestPartImpl } from '../MutableIngestPartImpl'
77import { IngestPart , IngestSegment , SofieIngestSegment } from '@sofie-automation/blueprints-integration'
8+ import { SofieIngestDataCacheObjPart } from '@sofie-automation/corelib/dist/dataModel/SofieIngestDataCache'
89
910describe ( 'MutableIngestSegmentImpl' , ( ) => {
1011 function getBasicIngestSegment ( ) : SofieIngestSegment < any > {
@@ -70,7 +71,6 @@ describe('MutableIngestSegmentImpl', () => {
7071 allCacheObjectIds : ingestSegment . parts . map ( ( p ) => ingestObjectGenerator . getPartObjectId ( p . externalId ) ) ,
7172 segmentHasChanges : false ,
7273 partIdsWithChanges : [ ] ,
73- partOrderHasChanged : false ,
7474 originalExternalId : ingestSegment . externalId ,
7575 }
7676 }
@@ -87,6 +87,17 @@ describe('MutableIngestSegmentImpl', () => {
8787 return mutableSegment . parts . map ( ( p ) => p . externalId )
8888 }
8989
90+ function pushAllPartsToChanges (
91+ expectedChanges : MutableIngestSegmentChanges ,
92+ ingestSegment : SofieIngestSegment
93+ ) : void {
94+ const segmentId = getSegmentId ( ingestObjectGenerator . rundownId , ingestSegment . externalId )
95+ for ( const ingestPart of ingestSegment . parts ) {
96+ expectedChanges . partIdsWithChanges . push ( ingestPart . externalId )
97+ expectedChanges . changedCacheObjects . push ( ingestObjectGenerator . generatePartObject ( segmentId , ingestPart ) )
98+ }
99+ }
100+
90101 test ( 'create basic' , ( ) => {
91102 const ingestSegment = getBasicIngestSegment ( )
92103 const mutableSegment = new MutableIngestSegmentImpl ( clone ( ingestSegment ) )
@@ -114,11 +125,7 @@ describe('MutableIngestSegmentImpl', () => {
114125 // check it has no changes
115126 const expectedChanges = createNoChangesObject ( ingestSegment )
116127 expectedChanges . segmentHasChanges = true
117- const segmentId = getSegmentId ( ingestObjectGenerator . rundownId , ingestSegment . externalId )
118- for ( const ingestPart of ingestSegment . parts ) {
119- expectedChanges . partIdsWithChanges . push ( ingestPart . externalId )
120- expectedChanges . changedCacheObjects . push ( ingestObjectGenerator . generatePartObject ( segmentId , ingestPart ) )
121- }
128+ pushAllPartsToChanges ( expectedChanges , ingestSegment )
122129 expect ( mutableSegment . intoChangesInfo ( ingestObjectGenerator ) ) . toEqual ( expectedChanges )
123130
124131 // check changes have been cleared
@@ -279,7 +286,7 @@ describe('MutableIngestSegmentImpl', () => {
279286 const expectedIngestSegment = clone ( ingestSegment )
280287 removePartFromIngestSegment ( expectedIngestSegment , 'part1' )
281288 const expectedChanges = createNoChangesObject ( expectedIngestSegment )
282- expectedChanges . partOrderHasChanged = true
289+ pushAllPartsToChanges ( expectedChanges , expectedIngestSegment )
283290 expect ( mutableSegment . intoChangesInfo ( ingestObjectGenerator ) ) . toEqual ( expectedChanges )
284291
285292 // try removing a second time
@@ -347,14 +354,12 @@ describe('MutableIngestSegmentImpl', () => {
347354 expectedIngestSegment . parts . push ( { ...newPart , rank : 3 , userEditStates : { } } )
348355
349356 const expectedChanges = createNoChangesObject ( expectedIngestSegment )
350- expectedChanges . partOrderHasChanged = true
351- expectedChanges . partIdsWithChanges . push ( 'part1' )
352- expectedChanges . changedCacheObjects . push (
353- ingestObjectGenerator . generatePartObject (
354- getSegmentId ( ingestObjectGenerator . rundownId , ingestSegment . externalId ) ,
355- { ...newPart , rank : 3 , userEditStates : { } }
356- )
357+ pushAllPartsToChanges ( expectedChanges , expectedIngestSegment )
358+ const generatedCacheObject = expectedChanges . changedCacheObjects . find (
359+ ( o ) : o is SofieIngestDataCacheObjPart => o . type === 'part' && o . data . externalId === 'part1'
357360 )
361+ expect ( generatedCacheObject ) . toBeDefined ( )
362+ expect ( generatedCacheObject ?. data . rank ) . toBe ( 3 )
358363
359364 expect ( mutableSegment . intoChangesInfo ( ingestObjectGenerator ) ) . toEqual ( expectedChanges )
360365 } )
@@ -386,7 +391,6 @@ describe('MutableIngestSegmentImpl', () => {
386391 expectedIngestSegment . parts . push ( { ...newPart , rank : 4 , userEditStates : { } } )
387392
388393 const expectedChanges = createNoChangesObject ( expectedIngestSegment )
389- expectedChanges . partOrderHasChanged = true
390394 expectedChanges . partIdsWithChanges . push ( 'partX' )
391395 expectedChanges . changedCacheObjects . push (
392396 ingestObjectGenerator . generatePartObject (
@@ -425,8 +429,14 @@ describe('MutableIngestSegmentImpl', () => {
425429 expect ( mutableSegment . replacePart ( newPart , 'part2' ) ) . toBeDefined ( )
426430 expect ( getPartIdOrder ( mutableSegment ) ) . toEqual ( [ 'part0' , 'part1' , 'partX' , 'part2' , 'part3' ] )
427431
428- // Only the one should have changes
429- expect ( mutableSegment . intoChangesInfo ( ingestObjectGenerator ) . partIdsWithChanges ) . toEqual ( [ 'partX' ] )
432+ // All should report changes because of their rank property
433+ expect ( mutableSegment . intoChangesInfo ( ingestObjectGenerator ) . partIdsWithChanges ) . toEqual ( [
434+ 'part0' ,
435+ 'part1' ,
436+ 'partX' ,
437+ 'part2' ,
438+ 'part3' ,
439+ ] )
430440
431441 // Try inserting before itself
432442 expect ( ( ) => mutableSegment . replacePart ( newPart , newPart . externalId ) ) . toThrow (
@@ -470,7 +480,7 @@ describe('MutableIngestSegmentImpl', () => {
470480
471481 // Only the one should have changes
472482 const expectedChanges = createNoChangesObject ( ingestSegment )
473- expectedChanges . partOrderHasChanged = true
483+ pushAllPartsToChanges ( expectedChanges , ingestSegment )
474484 expect ( mutableSegment . intoChangesInfo ( ingestObjectGenerator ) ) . toEqual ( expectedChanges )
475485
476486 // Try inserting before itself
@@ -511,9 +521,9 @@ describe('MutableIngestSegmentImpl', () => {
511521 mutableSegment . movePartAfter ( 'part1' , 'part0' )
512522 expect ( getPartIdOrder ( mutableSegment ) ) . toEqual ( [ 'part0' , 'part1' , 'part2' , 'part3' ] )
513523
514- // Only the one should have changes
524+ // All the parts should be reported as having changed
515525 const expectedChanges = createNoChangesObject ( ingestSegment )
516- expectedChanges . partOrderHasChanged = true
526+ pushAllPartsToChanges ( expectedChanges , ingestSegment )
517527 expect ( mutableSegment . intoChangesInfo ( ingestObjectGenerator ) ) . toEqual ( expectedChanges )
518528
519529 // Try inserting before itself
0 commit comments