mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
1b39062ecd
Signed-off-by: phernandez <paul@basicmachines.co> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
"""Telemetry coverage for the lower-level file spans used by entity service."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from contextlib import contextmanager
|
|
|
|
import logfire
|
|
import pytest
|
|
|
|
from basic_memory.schemas import Entity as EntitySchema
|
|
|
|
|
|
def _capture_spans():
|
|
spans: list[tuple[str, dict]] = []
|
|
|
|
@contextmanager
|
|
def fake_span(name: str, **attrs):
|
|
spans.append((name, attrs))
|
|
yield
|
|
|
|
return spans, fake_span
|
|
|
|
|
|
def _span_names(spans: list[tuple[str, dict]]) -> list[str]:
|
|
return [name for name, _ in spans]
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_create_entity_emits_file_write_span(entity_service, monkeypatch) -> None:
|
|
spans, fake_span = _capture_spans()
|
|
monkeypatch.setattr(logfire, "span", fake_span)
|
|
|
|
schema = EntitySchema(
|
|
title="Telemetry Create",
|
|
directory="notes",
|
|
note_type="note",
|
|
content_type="text/markdown",
|
|
content="Create telemetry content",
|
|
)
|
|
|
|
entity = await entity_service.create_entity(schema)
|
|
|
|
assert entity.title == "Telemetry Create"
|
|
assert "file_service.write" in _span_names(spans)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_edit_entity_emits_file_read_and_write_spans(entity_service, monkeypatch) -> None:
|
|
created = await entity_service.create_entity(
|
|
EntitySchema(
|
|
title="Telemetry Edit",
|
|
directory="notes",
|
|
note_type="note",
|
|
content_type="text/markdown",
|
|
content="Before edit",
|
|
)
|
|
)
|
|
|
|
spans, fake_span = _capture_spans()
|
|
monkeypatch.setattr(logfire, "span", fake_span)
|
|
|
|
updated = await entity_service.edit_entity(
|
|
created.file_path,
|
|
operation="append",
|
|
content="\n\nAfter edit",
|
|
)
|
|
|
|
assert updated.id == created.id
|
|
span_names = _span_names(spans)
|
|
assert "file_service.read" in span_names
|
|
assert "file_service.write" in span_names
|
|
assert span_names.index("file_service.read") < span_names.index("file_service.write")
|