neuralcad / tests /test_serializers.py
CallMeDaniel's picture
refactor: eliminate all Serializer classes, use Pydantic model_dump() directly
2330e12
"""Tests for Pydantic model_dump() serialization on result models."""
from core.executor import ExecutionResult
from core.validator import CNCValidationResult, CNCIssue
from core.cam import CAMResult
class TestExecutionResultDump:
def test_success(self):
r = ExecutionResult(
success=True, volume=6000.0, bounding_box=(10.0, 20.0, 30.0),
face_count=6, edge_count=12,
)
d = r.model_dump(by_alias=True)
assert d["success"] is True
assert d["volume_mm3"] == 6000.0
assert d["face_count"] == 6
assert d["error"] is None
# Excluded fields should not appear
assert "result" not in d
assert "code" not in d
assert "stdout" not in d
def test_failure(self):
r = ExecutionResult(success=False, error="syntax error")
d = r.model_dump(by_alias=True)
assert d["success"] is False
assert d["error"] == "syntax error"
def test_bounding_box_alias(self):
r = ExecutionResult(success=True, bounding_box=(10.0, 20.0, 30.0))
d = r.model_dump(by_alias=True)
assert "bounding_box_mm" in d
assert "bounding_box" not in d
class TestValidationResultDump:
def test_basic(self):
r = CNCValidationResult(
part_name="test",
machinable=True,
issues=[CNCIssue("warning", "Size", "Part is large")],
)
d = r.model_dump()
assert d["machinable"] is True
assert d["axis_recommendation"] == "3-axis"
assert len(d["issues"]) == 1
assert d["issues"][0]["severity"] == "warning"
# Computed fields included
assert d["error_count"] == 0
assert d["warning_count"] == 1
# Excluded fields
assert "part_name" not in d
def test_empty_issues(self):
r = CNCValidationResult(part_name="test")
d = r.model_dump()
assert d["issues"] == []
assert d["error_count"] == 0
class TestCAMResultDump:
def test_success(self):
r = CAMResult(success=True, gcode="G21", operations=["pocket"], tool_config={"diameter": 6})
d = r.model_dump()
assert d["success"] is True
assert d["gcode"] == "G21"
assert d["operations"] == ["pocket"]
def test_failure(self):
r = CAMResult(success=False, error="not installed")
d = r.model_dump()
assert d["success"] is False
assert d["error"] == "not installed"