60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
from datetime import date
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
from odoo.tests import tagged
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestFusionAsset(TransactionCase):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.asset_vals = {
|
|
'name': 'Test Asset',
|
|
'cost': 10000,
|
|
'salvage_value': 1000,
|
|
'acquisition_date': date(2026, 1, 1),
|
|
'method': 'straight_line',
|
|
'useful_life_years': 5,
|
|
}
|
|
|
|
def test_create_minimal(self):
|
|
a = self.env['fusion.asset'].create(self.asset_vals)
|
|
self.assertEqual(a.state, 'draft')
|
|
self.assertEqual(a.book_value, 10000)
|
|
|
|
def test_state_transitions_draft_to_running(self):
|
|
a = self.env['fusion.asset'].create(self.asset_vals)
|
|
a.action_set_running()
|
|
self.assertEqual(a.state, 'running')
|
|
self.assertTrue(a.in_service_date)
|
|
|
|
def test_pause_resume(self):
|
|
a = self.env['fusion.asset'].create(self.asset_vals)
|
|
a.action_set_running()
|
|
a.action_pause()
|
|
self.assertEqual(a.state, 'paused')
|
|
a.action_resume()
|
|
self.assertEqual(a.state, 'running')
|
|
|
|
def test_cannot_pause_from_draft(self):
|
|
a = self.env['fusion.asset'].create(self.asset_vals)
|
|
with self.assertRaises(ValidationError):
|
|
a.action_pause()
|
|
|
|
def test_negative_cost_rejected(self):
|
|
with self.assertRaises(Exception):
|
|
self.env['fusion.asset'].create({**self.asset_vals, 'cost': -100})
|
|
|
|
def test_salvage_exceeds_cost_rejected(self):
|
|
with self.assertRaises(Exception):
|
|
self.env['fusion.asset'].create(
|
|
{**self.asset_vals, 'cost': 1000, 'salvage_value': 5000},
|
|
)
|
|
|
|
def test_book_value_starts_at_cost(self):
|
|
a = self.env['fusion.asset'].create(self.asset_vals)
|
|
self.assertEqual(a.book_value, a.cost)
|
|
self.assertEqual(a.total_depreciated, 0)
|