56 lines
2.3 KiB
Python
56 lines
2.3 KiB
Python
# -*- 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)
|