# -*- coding: utf-8 -*- from odoo.tests.common import TransactionCase, tagged @tagged('post_install', '-at_install') class TestServiceRate(TransactionCase): @classmethod def setUpClass(cls): super().setUpClass() cls.Rate = cls.env['fusion.service.rate'] cls.product = cls.env['product.product'].create({ 'name': 'Test Service Product', 'type': 'service', }) def _make(self, **kw): vals = dict(name='Rate', code='c1', rate_kind='callout', category='standard', timing='normal', product_id=self.product.id, price=95.0, unit='fixed') vals.update(kw) return self.Rate.create(vals) def test_get_callout_matches_category_and_timing(self): r = self._make(code='callout_standard_normal', category='standard', timing='normal', price=95.0) self._make(code='callout_lift_normal', category='lift', timing='normal', price=160.0) self.assertEqual(self.Rate.get_callout('standard', 'normal'), r) def test_get_callout_in_shop_returns_empty(self): self._make(code='callout_standard_normal_b') self.assertFalse(self.Rate.get_callout('standard', 'normal', in_shop=True)) def test_get_rate_by_code(self): r = self._make(code='per_km', rate_kind='travel', category='na', timing='na', unit='per_km', price=0.70) self.assertEqual(self.Rate.get_rate('per_km'), r) def test_code_must_be_unique(self): self._make(code='dup') with self.assertRaises(Exception): self._make(code='dup') self.env.flush_all() def test_seeded_callouts_exist(self): # standard normal $95, lift after-hours $205 are the canonical seeds std = self.env.ref('fusion_claims.rate_callout_standard_normal') self.assertEqual(std.price, 95.0) self.assertEqual(std.rate_kind, 'callout') self.assertTrue(std.product_id) lift_ah = self.env.ref('fusion_claims.rate_callout_lift_afterhours') self.assertEqual(lift_ah.price, 205.0) self.assertTrue(lift_ah.adds_per_km) def test_seeded_per_km(self): km = self.env['fusion.service.rate'].get_rate('per_km') self.assertTrue(km) self.assertEqual(km.unit, 'per_km') self.assertEqual(km.price, 0.70)