62 lines
2.7 KiB
Python
62 lines
2.7 KiB
Python
from odoo.tests.common import TransactionCase, tagged
|
|
from odoo.tools.convert import convert_file
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestConfigSeed(TransactionCase):
|
|
"""Exercise the actual XML loader with settings saved before installation."""
|
|
|
|
SEEDS = {
|
|
'theme_data.xml': {
|
|
'community_theme_base.primary_color': '#05091E',
|
|
'community_theme_base.secondary_color': '#F97316',
|
|
'community_theme_base.accent_color': '#0EA5FF',
|
|
'community_theme_base.heading_font': 'Inter, sans-serif',
|
|
'community_theme_base.body_font': 'Inter, sans-serif',
|
|
},
|
|
'membership_data.xml': {
|
|
'community_membership.org_name': 'Tamil Nadu Cultural Society of Canada',
|
|
'community_membership.member_id_format': 'TNCSC-{year}-{seq}',
|
|
'community_membership.renewal_offsets': '30,14,7',
|
|
},
|
|
}
|
|
|
|
def _load(self, filename, mode='init'):
|
|
convert_file(self.env, 'tncsc_deployment', f'data/{filename}', {}, mode=mode)
|
|
|
|
def test_install_reuses_existing_parameters(self):
|
|
params = self.env['ir.config_parameter'].sudo()
|
|
for filename, expected in self.SEEDS.items():
|
|
original_ids = {}
|
|
for key in expected:
|
|
params.set_param(key, 'existing custom value')
|
|
record = params.search([('key', '=', key)])
|
|
# Reproduce keys created through Settings, without seed XML IDs.
|
|
self.env['ir.model.data'].search([
|
|
('model', '=', 'ir.config_parameter'), ('res_id', '=', record.id),
|
|
('module', '=', 'tncsc_deployment'),
|
|
]).unlink()
|
|
original_ids[key] = record.id
|
|
self._load(filename)
|
|
self._load(filename)
|
|
for key, value in expected.items():
|
|
self.assertEqual(params.get_param(key), value)
|
|
self.assertEqual(params.search([('key', '=', key)]).ids, [original_ids[key]])
|
|
|
|
def test_install_creates_missing_parameters(self):
|
|
params = self.env['ir.config_parameter'].sudo()
|
|
for filename, expected in self.SEEDS.items():
|
|
params.search([('key', 'in', list(expected))]).unlink()
|
|
self._load(filename)
|
|
for key, value in expected.items():
|
|
self.assertEqual(params.get_param(key), value)
|
|
|
|
def test_upgrade_preserves_custom_parameters(self):
|
|
params = self.env['ir.config_parameter'].sudo()
|
|
for filename, expected in self.SEEDS.items():
|
|
for key in expected:
|
|
params.set_param(key, 'administrator value')
|
|
self._load(filename, mode='update')
|
|
for key in expected:
|
|
self.assertEqual(params.get_param(key), 'administrator value')
|