import sys import unittest from pathlib import Path sys.path.insert(0, str(Path(__file__).parents[1] / "tools")) from variance import compare class VarianceTest(unittest.TestCase): def test_reports_signed_error_and_absolute_percentage_error(self): base = {"period":"2026-09","database_gb":5,"stored_gb":100,"wal_gb":10,"restore_egress_gb":5,"write_requests":100,"read_requests":50,"infrastructure_eur":10,"internal_labor_hours":1,"internal_labor_eur":60,"total_eur":70} actual_row = dict(base, stored_gb=120, infrastructure_eur=12, total_eur=72) result = compare({"created_at":"2026-08-10T00:00:00Z","rows":[base]}, {"provider_id":"test","rows":[actual_row]}) stored = result["rows"][0]["metrics"]["stored_gb"] self.assertEqual(20, stored["error"]) self.assertEqual(20, stored["absolute_percentage_error"]) def test_zero_forecast_has_no_percentage_error(self): base = {"period":"2026-09","database_gb":0,"stored_gb":0,"wal_gb":0,"restore_egress_gb":0,"write_requests":0,"read_requests":0,"infrastructure_eur":0,"internal_labor_hours":0,"internal_labor_eur":0,"total_eur":0} result = compare({"created_at":"x","rows":[base]}, {"provider_id":"test","rows":[dict(base, wal_gb=1)]}) self.assertIsNone(result["rows"][0]["metrics"]["wal_gb"]["absolute_percentage_error"]) if __name__ == "__main__": unittest.main()