@@ -2512,6 +2512,45 @@ describe('analysis timestamps', () => {
25122512 expect ( approved . link ) . toMatchObject ( { createdAt : SECOND_WRITE , updatedAt : SECOND_WRITE } ) ;
25132513 } ) ;
25142514
2515+ it ( 'stamps every link a merge moves onto the target' , ( ) => {
2516+ const store = createAnalysisStore ( ) ;
2517+ store . dispatch ( writeGloss ( 'tok-1' , 'cat' , 'feline' ) ) ;
2518+ store . dispatch ( writeGloss ( 'tok-2' , 'cat' , 'tomcat' ) ) ;
2519+ const source = approvedPair ( store . getState ( ) . analysis , 'tok-1' ) ;
2520+ const target = approvedPair ( store . getState ( ) . analysis , 'tok-2' ) ;
2521+
2522+ setClock ( SECOND_WRITE ) ;
2523+ store . dispatch (
2524+ mergeAnalysisInto ( {
2525+ sourceAnalysisId : source . analysis ?. id ?? '' ,
2526+ targetAnalysisId : target . analysis ?. id ?? '' ,
2527+ } ) ,
2528+ ) ;
2529+
2530+ const moved = approvedPair ( store . getState ( ) . analysis , 'tok-1' ) ;
2531+ expect ( moved . link ) . toMatchObject ( { createdAt : FIRST_WRITE , updatedAt : SECOND_WRITE } ) ;
2532+ } ) ;
2533+
2534+ it ( 'leaves the merge target payload and its own links dated by their content' , ( ) => {
2535+ const store = createAnalysisStore ( ) ;
2536+ store . dispatch ( writeGloss ( 'tok-1' , 'cat' , 'feline' ) ) ;
2537+ store . dispatch ( writeGloss ( 'tok-2' , 'cat' , 'tomcat' ) ) ;
2538+ const source = approvedPair ( store . getState ( ) . analysis , 'tok-1' ) ;
2539+ const target = approvedPair ( store . getState ( ) . analysis , 'tok-2' ) ;
2540+
2541+ setClock ( SECOND_WRITE ) ;
2542+ store . dispatch (
2543+ mergeAnalysisInto ( {
2544+ sourceAnalysisId : source . analysis ?. id ?? '' ,
2545+ targetAnalysisId : target . analysis ?. id ?? '' ,
2546+ } ) ,
2547+ ) ;
2548+
2549+ const survivor = approvedPair ( store . getState ( ) . analysis , 'tok-2' ) ;
2550+ expect ( survivor . analysis ) . toMatchObject ( { createdAt : FIRST_WRITE , updatedAt : FIRST_WRITE } ) ;
2551+ expect ( survivor . link ) . toMatchObject ( { createdAt : FIRST_WRITE , updatedAt : FIRST_WRITE } ) ;
2552+ } ) ;
2553+
25152554 it ( 'stamps a morpheme gloss edit on the payload and the link' , ( ) => {
25162555 const store = createAnalysisStore ( ) ;
25172556 store . dispatch ( writeMorphemes ( 'tok-1' , 'cats' , [ 'cat' , 's' ] , 'en' ) ) ;
0 commit comments