mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
103 lines
2.9 KiB
Python
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 |