Files
dss/tests/test_merge.py
Digital Production Factory 276ed71f31 Initial commit: Clean DSS implementation
Migrated from design-system-swarm with fresh git history.
Old project history preserved in /home/overbits/apps/design-system-swarm

Core components:
- MCP Server (Python FastAPI with mcp 1.23.1)
- Claude Plugin (agents, commands, skills, strategies, hooks, core)
- DSS Backend (dss-mvp1 - token translation, Figma sync)
- Admin UI (Node.js/React)
- Server (Node.js/Express)
- Storybook integration (dss-mvp1/.storybook)

Self-contained configuration:
- All paths relative or use DSS_BASE_PATH=/home/overbits/dss
- PYTHONPATH configured for dss-mvp1 and dss-claude-plugin
- .env file with all configuration
- Claude plugin uses ${CLAUDE_PLUGIN_ROOT} for portability

Migration completed: $(date)
🤖 Clean migration with full functionality preserved
2025-12-09 18:45:48 -03:00

110 lines
3.3 KiB
Python

"""
Tests for token merging and conflict resolution.
"""
import pytest
from tools.ingest.merge import TokenMerger, MergeStrategy
from tools.ingest.base import TokenCollection, DesignToken, TokenType
def test_merge_no_conflicts():
"""Test merging collections with no conflicts."""
col1 = TokenCollection([
DesignToken(name="color.red", value="#FF0000", type=TokenType.COLOR)
])
col2 = TokenCollection([
DesignToken(name="color.blue", value="#0000FF", type=TokenType.COLOR)
])
merger = TokenMerger(strategy=MergeStrategy.LAST)
result = merger.merge([col1, col2])
assert len(result.collection.tokens) == 2
assert len(result.conflicts) == 0
def test_merge_strategy_first():
"""Test FIRST merge strategy."""
col1 = TokenCollection([
DesignToken(name="color.primary", value="#FF0000", type=TokenType.COLOR, source="css")
])
col2 = TokenCollection([
DesignToken(name="color.primary", value="#0000FF", type=TokenType.COLOR, source="figma")
])
merger = TokenMerger(strategy=MergeStrategy.FIRST)
result = merger.merge([col1, col2])
assert len(result.collection.tokens) == 1
assert len(result.conflicts) == 1
# Should keep first value
token = result.collection.tokens[0]
assert token.value == "#FF0000"
assert token.source == "css"
def test_merge_strategy_last():
"""Test LAST merge strategy."""
col1 = TokenCollection([
DesignToken(name="color.primary", value="#FF0000", type=TokenType.COLOR, source="css")
])
col2 = TokenCollection([
DesignToken(name="color.primary", value="#0000FF", type=TokenType.COLOR, source="figma")
])
merger = TokenMerger(strategy=MergeStrategy.LAST)
result = merger.merge([col1, col2])
assert len(result.collection.tokens) == 1
assert len(result.conflicts) == 1
# Should keep last value
token = result.collection.tokens[0]
assert token.value == "#0000FF"
assert token.source == "figma"
def test_merge_strategy_prefer_figma():
"""Test PREFER_FIGMA merge strategy."""
col1 = TokenCollection([
DesignToken(name="color.primary", value="#FF0000", type=TokenType.COLOR, source="css")
])
col2 = TokenCollection([
DesignToken(name="color.primary", value="#3B82F6", type=TokenType.COLOR, source="figma")
])
col3 = TokenCollection([
DesignToken(name="color.primary", value="#0000FF", type=TokenType.COLOR, source="scss")
])
merger = TokenMerger(strategy=MergeStrategy.PREFER_FIGMA)
result = merger.merge([col1, col2, col3])
# Should prefer Figma value
token = result.collection.tokens[0]
assert token.value == "#3B82F6"
assert token.source == "figma"
def test_merge_multiple_collections():
"""Test merging many collections."""
collections = [
TokenCollection([
DesignToken(name=f"color.{i}", value=f"#{i:06X}", type=TokenType.COLOR)
])
for i in range(10)
]
merger = TokenMerger(strategy=MergeStrategy.LAST)
result = merger.merge(collections)
assert len(result.collection.tokens) == 10
assert len(result.conflicts) == 0
def test_merge_empty_collections():
"""Test merging empty collections."""
merger = TokenMerger(strategy=MergeStrategy.LAST)
result = merger.merge([])
assert len(result.collection.tokens) == 0
assert len(result.conflicts) == 0