66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
from odoo.exceptions import UserError
|
|
|
|
from odoo.addons.esg.tests.esg_common import TestEsgCommon
|
|
from odoo.tests import Form
|
|
|
|
|
|
class TestEsgSource(TestEsgCommon):
|
|
|
|
def test_emission_source_flows(self):
|
|
source_1 = self.env['esg.emission.source'].create({
|
|
'name': 'Source 1',
|
|
'scope': 'direct',
|
|
})
|
|
source_2 = self.env['esg.emission.source'].create({
|
|
'name': 'Source 2',
|
|
'scope': 'direct',
|
|
'parent_id': source_1.id,
|
|
})
|
|
source_3 = self.env['esg.emission.source'].create({
|
|
'name': 'Source 3',
|
|
'scope': 'direct',
|
|
'parent_id': source_2.id,
|
|
})
|
|
source_4 = self.env['esg.emission.source'].create({
|
|
'name': 'Source 4',
|
|
'parent_id': source_3.id,
|
|
})
|
|
|
|
# Test cyclic dependencies
|
|
with self.assertRaises(UserError, msg='You cannot create a cyclic hierarchy of emission sources.'):
|
|
source_1.parent_id = source_3
|
|
# Test scope assignation
|
|
self.assertEqual(source_4.scope, source_1.scope, 'Scope should be inherited from parent')
|
|
# Test scope level
|
|
self.assertEqual(source_4.level, 4)
|
|
# Test activity flow
|
|
self.assertEqual(source_4.activity_flow, 'company_reporting')
|
|
# Test complete name
|
|
self.assertEqual(source_4.complete_name, 'Scope 1: Direct > Source 1 > Source 2 > Source 3 > Source 4')
|
|
|
|
def test_remove_parent_emission_source(self):
|
|
EmissionSource = self.env['esg.emission.source']
|
|
|
|
parent_source = EmissionSource.create({
|
|
'name': 'Source 1',
|
|
'scope': 'direct',
|
|
})
|
|
child_source = EmissionSource.create({
|
|
'name': 'Source 2',
|
|
'parent_id': parent_source.id,
|
|
})
|
|
|
|
with Form(child_source) as child_source_form:
|
|
child_source_form.parent_id = EmissionSource
|
|
|
|
self.assertFalse(child_source.parent_id)
|
|
self.assertEqual(child_source.scope, 'direct', "Scope should remain 'direct' even after unsetting the parent.")
|
|
|
|
def test_remove_scope_on_emission_source(self):
|
|
"""Test that removing the scope from the emission source."""
|
|
source = self.emission_source_direct
|
|
source.scope = False
|
|
|
|
self.assertFalse(source.activity_flow_direct_indirect)
|
|
self.assertFalse(source.activity_flow)
|