62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
from odoo.tests.common import TransactionCase
|
|
from odoo.tests import tagged
|
|
from odoo.addons.fusion_accounting_assets.services.useful_life_predictor import (
|
|
predict_useful_life,
|
|
)
|
|
from odoo.addons.fusion_accounting_assets.services.useful_life_prompt import (
|
|
SYSTEM_PROMPT, build_prompt,
|
|
)
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestUsefulLifePredictor(TransactionCase):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
# Ensure no provider configured for these fallback tests.
|
|
self.env['ir.config_parameter'].sudo().search([
|
|
('key', 'in', [
|
|
'fusion_accounting.provider.asset_useful_life',
|
|
'fusion_accounting.provider.default',
|
|
])
|
|
]).unlink()
|
|
|
|
def test_fallback_computer(self):
|
|
result = predict_useful_life(self.env, description="Dell laptop")
|
|
self.assertEqual(result['useful_life_years'], 4)
|
|
self.assertEqual(result['depreciation_method'], 'straight_line')
|
|
|
|
def test_fallback_furniture(self):
|
|
result = predict_useful_life(self.env, description="office desk")
|
|
self.assertEqual(result['useful_life_years'], 7)
|
|
|
|
def test_fallback_vehicle_uses_declining(self):
|
|
result = predict_useful_life(self.env, description="Ford F-150 truck")
|
|
self.assertEqual(result['useful_life_years'], 5)
|
|
self.assertEqual(result['depreciation_method'], 'declining_balance')
|
|
|
|
def test_fallback_default_for_unknown(self):
|
|
result = predict_useful_life(self.env, description="mystery widget")
|
|
self.assertEqual(result['useful_life_years'], 5)
|
|
self.assertEqual(result['confidence'], 0.3)
|
|
|
|
def test_returns_dict_with_required_keys(self):
|
|
result = predict_useful_life(self.env, description="server")
|
|
for key in ('useful_life_years', 'depreciation_method', 'rationale', 'confidence'):
|
|
self.assertIn(key, result)
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestUsefulLifePrompt(TransactionCase):
|
|
|
|
def test_system_prompt_requires_json(self):
|
|
self.assertIn('JSON', SYSTEM_PROMPT)
|
|
|
|
def test_build_prompt_returns_tuple(self):
|
|
result = build_prompt(description='test')
|
|
self.assertEqual(len(result), 2)
|
|
|
|
def test_user_prompt_includes_amount(self):
|
|
_, user = build_prompt(description='laptop', amount=2000)
|
|
self.assertIn('2,000', user)
|