@@ -86,6 +86,41 @@ describe(WebSignalsRuntime, () => {
8686 const result = signalsRuntime . filter ( signal1 , 'interaction' )
8787 expect ( result ) . toEqual ( [ signal2 , signal3 ] )
8888 } )
89+
90+ it ( 'should handle referential comparison' , ( ) => {
91+ signalsRuntime . signalBuffer = [ signal1 , signal2 ]
92+ const result = signalsRuntime . filter ( signal1 , 'interaction' )
93+ expect ( result ) . toEqual ( [ signal2 ] )
94+ } )
95+
96+ it ( 'should handle comparison by id' , ( ) => {
97+ const young = { ...signal1 , id : undefined }
98+ const middle = { ...signal1 , id : 'unique-id3' }
99+ const old = { ...signal1 , id : undefined }
100+
101+ signalsRuntime . signalBuffer = [ young , middle , old ]
102+ const result = signalsRuntime . filter ( middle , 'instrumentation' )
103+ expect ( result ) . toEqual ( [ old ] )
104+ } )
105+
106+ it ( 'should handle comparison by index' , ( ) => {
107+ const young = { ...signal1 , index : 1 , id : undefined }
108+ const middle = { ...signal1 , index : 2 , id : undefined }
109+ const old = { ...signal1 , index : 3 , id : undefined }
110+
111+ signalsRuntime . signalBuffer = [ young , middle , old ]
112+ const result = signalsRuntime . filter ( middle , 'instrumentation' )
113+ expect ( result ) . toEqual ( [ old ] )
114+ } )
115+
116+ it ( 'should handle deep comparison' , ( ) => {
117+ const signalCopy1 = { ...signal1 }
118+ const signalCopy2 = { ...signal1 , foo : 123 }
119+ const signalCopy3 = { ...signal1 , foo : 123 }
120+ signalsRuntime . signalBuffer = [ signalCopy1 , signalCopy2 , signalCopy3 ]
121+ const result = signalsRuntime . filter ( signalCopy1 , 'instrumentation' )
122+ expect ( result [ 0 ] ) . toBe ( signalCopy2 )
123+ } )
89124 } )
90125
91126 describe ( 'signalBuffer property' , ( ) => {
0 commit comments