Skip to content

Commit ced2263

Browse files
committed
Review and update insertion
Signed-off-by: Edwin Yu <edwinyyyu@gmail.com>
1 parent dcdecfb commit ced2263

2 files changed

Lines changed: 167 additions & 110 deletions

File tree

packages/server/server_tests/memmachine_server/episodic_memory/extra_memory/segment_linker/test_sqlalchemy_segment_linker.py

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def _seg(
4949
index=index,
5050
timestamp=BASE_TIME + timedelta(seconds=ts_offset_seconds),
5151
content=TextContent(text=text),
52-
properties=properties,
52+
properties=properties or {},
5353
)
5454

5555

@@ -161,6 +161,36 @@ async def test_register_empty_links_still_validates_active(
161161
await linker.register_segments(PARTITION_KEY, {}, active=[unknown])
162162

163163

164+
@pytest.mark.asyncio
165+
async def test_register_rejects_existing_derivative_not_declared_active(
166+
linker: SQLAlchemySegmentLinker,
167+
) -> None:
168+
"""Linking to an existing derivative without declaring it active is an error."""
169+
seg1 = _seg(ts_offset_seconds=0)
170+
deriv = uuid4()
171+
await linker.register_segments(PARTITION_KEY, {seg1: [deriv]})
172+
173+
seg2 = _seg(ts_offset_seconds=1)
174+
with pytest.raises(DerivativeNotActiveError):
175+
await linker.register_segments(PARTITION_KEY, {seg2: [deriv]})
176+
177+
178+
@pytest.mark.asyncio
179+
async def test_register_allows_existing_derivative_declared_active(
180+
linker: SQLAlchemySegmentLinker,
181+
) -> None:
182+
"""Linking to an existing derivative works when declared active."""
183+
seg1 = _seg(ts_offset_seconds=0)
184+
deriv = uuid4()
185+
await linker.register_segments(PARTITION_KEY, {seg1: [deriv]})
186+
187+
seg2 = _seg(ts_offset_seconds=1)
188+
await linker.register_segments(PARTITION_KEY, {seg2: [deriv]}, active=[deriv])
189+
190+
result = await linker.get_segments_by_derivatives(PARTITION_KEY, [deriv])
191+
assert len(list(result[deriv])) == 2
192+
193+
164194
# ===================================================================
165195
# get_segments_by_derivatives
166196
# ===================================================================
@@ -369,7 +399,9 @@ async def test_contexts_with_properties(linker: SQLAlchemySegmentLinker) -> None
369399
s1 = _seg(episode_uuid=ep, index=1, ts_offset_seconds=1, properties={"k": "v1"})
370400
s2 = _seg(episode_uuid=ep, index=2, ts_offset_seconds=2, properties={"k": "v2"})
371401
deriv = uuid4()
372-
await linker.register_segments(PARTITION_KEY, {s0: [deriv], s1: [deriv], s2: [deriv]})
402+
await linker.register_segments(
403+
PARTITION_KEY, {s0: [deriv], s1: [deriv], s2: [deriv]}
404+
)
373405

374406
result = await linker.get_segment_contexts(
375407
PARTITION_KEY, [s1.uuid], max_backward_segments=1, max_forward_segments=1
@@ -417,7 +449,9 @@ async def test_contexts_session_isolation(linker: SQLAlchemySegmentLinker) -> No
417449
s_after = _seg(episode_uuid=ep, index=2, ts_offset_seconds=2)
418450
deriv = uuid4()
419451
await linker.register_segments("other-session", {s_other: [deriv]})
420-
await linker.register_segments(PARTITION_KEY, {s_seed: [deriv], s_after: [deriv]})
452+
await linker.register_segments(
453+
PARTITION_KEY, {s_seed: [deriv], s_after: [deriv]}, active=[deriv]
454+
)
421455

422456
result = await linker.get_segment_contexts(
423457
PARTITION_KEY,
@@ -469,7 +503,7 @@ async def test_delete_by_episodes(linker: SQLAlchemySegmentLinker) -> None:
469503

470504

471505
@pytest.mark.asyncio
472-
async def test_delete_by_episodes_decrements_refcount(
506+
async def test_delete_by_episodes_decrements_ref_count(
473507
linker: SQLAlchemySegmentLinker,
474508
) -> None:
475509
ep = uuid4()

0 commit comments

Comments
 (0)