from datetime import date from odoo.tests.common import TransactionCase from odoo.tests import tagged @tagged('post_install', '-at_install') class TestFusionAssetAnomaly(TransactionCase): def setUp(self): super().setUp() self.asset = self.env['fusion.asset'].create({ 'name': 'Watched Asset', 'cost': 5000, 'acquisition_date': date(2026, 1, 1), }) def _make_anomaly(self, **kw): vals = { 'asset_id': self.asset.id, 'anomaly_type': 'behind_schedule', 'severity': 'medium', 'expected': 1000.0, 'actual': 700.0, 'variance_pct': -30.0, } vals.update(kw) return self.env['fusion.asset.anomaly'].create(vals) def test_create_defaults_state_new(self): a = self._make_anomaly() self.assertEqual(a.state, 'new') self.assertTrue(a.detected_at) self.assertEqual(a.company_id, self.asset.company_id) def test_acknowledge_transitions(self): a = self._make_anomaly() a.action_acknowledge() self.assertEqual(a.state, 'acknowledged') def test_dismiss_transitions(self): a = self._make_anomaly() a.action_dismiss() self.assertEqual(a.state, 'dismissed') def test_resolve_transitions(self): a = self._make_anomaly(anomaly_type='low_utilization', severity='high') a.action_resolve() self.assertEqual(a.state, 'resolved')