@@ -336,11 +336,11 @@ class TestResumeWatermark:
336336 """Test ResumeWatermark serialization"""
337337
338338 def test_to_json_full_data (self ):
339- """Test serializing watermark with all fields """
339+ """Test serializing watermark to server format """
340340 watermark = ResumeWatermark (
341341 ranges = [
342- BlockRange (network = 'ethereum' , start = 100 , end = 200 ),
343- BlockRange (network = 'polygon' , start = 50 , end = 150 ),
342+ BlockRange (network = 'ethereum' , start = 100 , end = 200 , hash = '0xabc123' ),
343+ BlockRange (network = 'polygon' , start = 50 , end = 150 , hash = '0xdef456' ),
344344 ],
345345 timestamp = '2024-01-01T00:00:00Z' ,
346346 sequence = 42 ,
@@ -349,22 +349,27 @@ def test_to_json_full_data(self):
349349 json_str = watermark .to_json ()
350350 data = json .loads (json_str )
351351
352- assert len (data ['ranges' ]) == 2
353- assert data ['ranges' ][0 ]['network' ] == 'ethereum'
354- assert data ['timestamp' ] == '2024-01-01T00:00:00Z'
355- assert data ['sequence' ] == 42
352+ assert len (data ) == 2
353+ assert 'ethereum' in data
354+ assert data ['ethereum' ]['number' ] == 200
355+ assert data ['ethereum' ]['hash' ] == '0xabc123'
356+ assert 'polygon' in data
357+ assert data ['polygon' ]['number' ] == 150
358+ assert data ['polygon' ]['hash' ] == '0xdef456'
356359
357360 def test_to_json_minimal_data (self ):
358361 """Test serializing watermark with only ranges"""
359- watermark = ResumeWatermark (ranges = [BlockRange (network = 'ethereum' , start = 100 , end = 200 )])
362+ watermark = ResumeWatermark (ranges = [BlockRange (network = 'ethereum' , start = 100 , end = 200 , hash = '0xabc123' )])
360363
361364 json_str = watermark .to_json ()
362365 data = json .loads (json_str )
363366
364- assert len (data ['ranges' ]) == 1
365- assert 'timestamp' not in data
366- assert 'sequence' not in data
367+ assert len (data ) == 1
368+ assert 'ethereum' in data
369+ assert data ['ethereum' ]['number' ] == 200
370+ assert data ['ethereum' ]['hash' ] == '0xabc123'
367371
372+ # TODO: ResumeWatermark.from_json appears to be unused. Remove?
368373 def test_from_json_full_data (self ):
369374 """Test deserializing watermark with all fields"""
370375 json_str = json .dumps (
@@ -386,22 +391,21 @@ def test_from_json_full_data(self):
386391 assert watermark .sequence == 42
387392
388393 def test_round_trip_serialization (self ):
389- """Test that serialization round-trip preserves data """
390- original = ResumeWatermark (
394+ """Test that to_json produces server format (not reversible via from_json) """
395+ watermark = ResumeWatermark (
391396 ranges = [
392- BlockRange (network = 'ethereum' , start = 100 , end = 200 ),
393- BlockRange (network = 'polygon' , start = 50 , end = 150 ),
397+ BlockRange (network = 'ethereum' , start = 100 , end = 200 , hash = '0xabc123' ),
398+ BlockRange (network = 'polygon' , start = 50 , end = 150 , hash = '0xdef456' ),
394399 ],
395- timestamp = '2024-01-01T00:00:00Z' ,
396- sequence = 42 ,
397400 )
398401
399- json_str = original .to_json ()
400- restored = ResumeWatermark . from_json (json_str )
402+ json_str = watermark .to_json ()
403+ data = json . loads (json_str )
401404
402- assert len (restored .ranges ) == len (original .ranges )
403- assert restored .timestamp == original .timestamp
404- assert restored .sequence == original .sequence
405+ assert 'ethereum' in data
406+ assert data ['ethereum' ]['number' ] == 200
407+ assert 'polygon' in data
408+ assert data ['polygon' ]['number' ] == 150
405409
406410
407411@pytest .mark .unit
0 commit comments