Files
basicmachines-co-basic-memory/tests/markdown/test_metadata_parser.py
T
2024-12-22 18:16:39 -06:00

103 lines
2.9 KiB
Python

"""Tests for entity metadata parsing."""
from textwrap import dedent
import pytest
from basic_memory.markdown.parser import EntityParser
@pytest.mark.asyncio
async def test_parse_metadata():
"""Test parsing basic metadata."""
parser = EntityParser()
metadata = {
"owner": "team-auth",
"priority": "high",
"status": "active"
}
result = await parser.parse_metadata(metadata)
assert result.metadata["owner"] == "team-auth"
assert result.metadata["priority"] == "high"
assert result.metadata["status"] == "active"
@pytest.mark.asyncio
async def test_parse_metadata_empty():
"""Test parsing empty metadata."""
parser = EntityParser()
result = await parser.parse_metadata(None)
assert result.metadata == {}
# Should also handle empty dict
result = await parser.parse_metadata({})
assert result.metadata == {}
@pytest.mark.asyncio
async def test_parse_metadata_whitespace():
"""Test handling of various whitespace in metadata."""
parser = EntityParser()
metadata = {
"owner": " team-auth ",
"priority": " high ",
"status": " active "
}
result = await parser.parse_metadata(metadata)
assert result.metadata["owner"] == " team-auth " # Metadata preserves whitespace
assert result.metadata["priority"] == " high "
assert result.metadata["status"] == " active "
@pytest.mark.asyncio
async def test_parse_metadata_nested_objects():
"""Test handling of nested metadata objects."""
parser = EntityParser()
metadata = {
"owner": "team-auth",
"config": {
"level": "high",
"tags": ["important", "urgent"],
"settings": {
"notifications": True,
"visibility": "private"
}
}
}
result = await parser.parse_metadata(metadata)
assert result.metadata["owner"] == "team-auth"
assert result.metadata["config"]["level"] == "high"
assert result.metadata["config"]["tags"] == ["important", "urgent"]
assert result.metadata["config"]["settings"]["notifications"] is True
assert result.metadata["config"]["settings"]["visibility"] == "private"
@pytest.mark.asyncio
async def test_parse_metadata_mixed_types():
"""Test handling of different value types in metadata."""
parser = EntityParser()
metadata = {
"owner": "team-auth",
"active": True,
"priority": 1,
"tags": ["tag1", "tag2"],
"scores": {
"a": 10,
"b": 20
}
}
result = await parser.parse_metadata(metadata)
assert result.metadata["owner"] == "team-auth"
assert result.metadata["active"] is True
assert result.metadata["priority"] == 1
assert result.metadata["tags"] == ["tag1", "tag2"]
assert result.metadata["scores"]["a"] == 10
assert result.metadata["scores"]["b"] == 20