Skip to content

Commit 30ef80f

Browse files
committed
Fix unit tests failing
1 parent 382f37b commit 30ef80f

File tree

3 files changed

+213
-22
lines changed

3 files changed

+213
-22
lines changed

src/amp/streaming/types.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ class ResumeWatermark:
164164
"""Watermark for resuming streaming queries"""
165165

166166
ranges: List[BlockRange]
167+
# TODO: timestamp and sequence are unused. Remove?
167168
timestamp: Optional[str] = None
168169
sequence: Optional[int] = None
169170

@@ -180,6 +181,7 @@ def to_json(self) -> str:
180181
data[r.network] = {'number': r.end, 'hash': r.hash}
181182
return json.dumps(data)
182183

184+
# TODO: ResumeWatermark.from_json appears to be unused. Remove?
183185
@classmethod
184186
def from_json(cls, json_str: str) -> 'ResumeWatermark':
185187
"""Deserialize from JSON string"""

tests/unit/test_streaming_types.py

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)