@@ -233,4 +233,40 @@ internal class RestCallResultTest {
233233 assertNull(staticObservation.execIndex)
234234 assertEquals(""" {"id":"$UUID_MARKER "}""" , staticObservation.differences[ResponseField .BODY ])
235235 }
236+
237+ @Test
238+ fun testMergedFlakyBodyCombinesDifferentExecutionDeltas (){
239+ val original = createCallResult(""" {"stable":"same","first":"a","second":"b"}""" )
240+ val firstDiff = createCallResult(""" {"stable":"same","first":"x","second":"b"}""" )
241+ val secondDiff = createCallResult(""" {"stable":"same","first":"a","second":"y"}""" )
242+
243+ original.recordFlakyObservation(firstDiff, 1 )
244+ original.recordFlakyObservation(secondDiff, 2 )
245+
246+ assertEquals(""" {"stable":"same","first":"x","second":"y"}""" , original.getMergedFlakyBody())
247+ }
248+
249+ @Test
250+ fun testMergedFlakyBodyCombinesNestedExecutionDeltas (){
251+ val original = createCallResult(""" {"data":{"stable":"same","first":"a","second":"b"},"items":[{"id":"1"},{"id":"2"}]}""" )
252+ val firstDiff = createCallResult(""" {"data":{"stable":"same","first":"x","second":"b"},"items":[{"id":"1"},{"id":"2"}]}""" )
253+ val secondDiff = createCallResult(""" {"data":{"stable":"same","first":"a","second":"b"},"items":[{"id":"1"},{"id":"3"}]}""" )
254+
255+ original.recordFlakyObservation(firstDiff, 1 )
256+ original.recordFlakyObservation(secondDiff, 2 )
257+
258+ assertEquals(""" {"data":{"stable":"same","first":"x","second":"b"},"items":[{"id":"1"},{"id":"3"}]}""" , original.getMergedFlakyBody())
259+ }
260+
261+ @Test
262+ fun testMergedFlakyBodyFallsBackToFirstObservedBodyForNonJson (){
263+ val original = createCallResult(" original" )
264+ val firstDiff = createCallResult(" first" )
265+ val secondDiff = createCallResult(" second" )
266+
267+ original.recordFlakyObservation(firstDiff, 1 )
268+ original.recordFlakyObservation(secondDiff, 2 )
269+
270+ assertEquals(" first" , original.getMergedFlakyBody())
271+ }
236272}
0 commit comments