Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
119
upgrade_analysis/tests/test_module.py
Executable file
119
upgrade_analysis/tests/test_module.py
Executable file
@@ -0,0 +1,119 @@
|
||||
from copy import deepcopy
|
||||
|
||||
from odoo.tests import common, tagged
|
||||
|
||||
from .. import compare, upgrade_log
|
||||
from ..odoo_patch.odoo_patch import OdooPatch
|
||||
|
||||
|
||||
@tagged("post_install", "-at_install")
|
||||
class TestUpgradeAnalysis(common.TransactionCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.IrModuleModule = self.env["ir.module.module"]
|
||||
self.website_module = self.IrModuleModule.search([("name", "=", "website")])
|
||||
self.sale_module = self.IrModuleModule.search([("name", "=", "sale")])
|
||||
self.upgrade_analysis = self.IrModuleModule.search(
|
||||
[("name", "=", "upgrade_analysis")]
|
||||
)
|
||||
|
||||
def test_upgrade_install_wizard(self):
|
||||
InstallWizard = self.env["upgrade.install.wizard"]
|
||||
wizard = InstallWizard.create({})
|
||||
|
||||
wizard.select_odoo_modules()
|
||||
self.assertTrue(
|
||||
self.website_module.id in wizard.module_ids.ids,
|
||||
"Select Odoo module should select 'product' module",
|
||||
)
|
||||
# New patch avoids to reinstall already installed modules, so this will fail
|
||||
# wizard.select_oca_modules()
|
||||
# self.assertTrue(
|
||||
# self.upgrade_analysis.id in wizard.module_ids.ids,
|
||||
# "Select OCA module should select 'upgrade_analysis' module",
|
||||
# )
|
||||
|
||||
wizard.select_other_modules()
|
||||
self.assertFalse(
|
||||
self.website_module.id in wizard.module_ids.ids,
|
||||
"Select Other module should not select 'product' module",
|
||||
)
|
||||
|
||||
wizard.unselect_modules()
|
||||
self.assertEqual(
|
||||
wizard.module_ids.ids, [], "Unselect module should clear the selection"
|
||||
)
|
||||
# For the time being, tests doens't call install_modules() function
|
||||
# because installing module in a test context will execute the test
|
||||
# of the installed modules, raising finally an error:
|
||||
|
||||
# TypeError: Many2many fields ir.actions.server.partner_ids and
|
||||
# ir.actions.server.partner_ids use the same table and columns
|
||||
|
||||
def test_odoo_patch(self):
|
||||
"""
|
||||
Test the patched versions of Odoo's base functions
|
||||
"""
|
||||
self.assertFalse(
|
||||
self.env["upgrade.record"].search(
|
||||
[
|
||||
("name", "=", "base.constraint_ir_module_module_name_uniq"),
|
||||
("type", "=", "xmlid"),
|
||||
]
|
||||
)
|
||||
)
|
||||
with OdooPatch():
|
||||
self.env["ir.model.constraint"]._reflect_model(self.IrModuleModule)
|
||||
self.assertTrue(
|
||||
self.env["upgrade.record"].search(
|
||||
[
|
||||
("name", "=", "base.constraint_ir_module_module_name_uniq"),
|
||||
("type", "=", "xmlid"),
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
def test_field_comparison(self):
|
||||
"""
|
||||
Test we compare fields correctly
|
||||
"""
|
||||
registry = {}
|
||||
upgrade_log.log_model(self.env["upgrade.analysis"], registry)
|
||||
upgrade_log.compare_registries(self.env.cr, "upgrade_analysis", {}, registry)
|
||||
old_fields = self.env["upgrade.record"].field_dump()
|
||||
new_fields = deepcopy(old_fields)
|
||||
|
||||
def assertInFieldComparison(comparison, field, needle):
|
||||
self.assertIn(
|
||||
needle,
|
||||
"".join(
|
||||
line
|
||||
for line in comparison["upgrade_analysis"]
|
||||
if f"/ {field} (" in line
|
||||
),
|
||||
)
|
||||
|
||||
state_field = [
|
||||
field
|
||||
for field in new_fields
|
||||
if field["field"] == "state" and field["model"] == "upgrade.analysis"
|
||||
][0]
|
||||
|
||||
state_field["selection_keys"] = "['done', 'new']"
|
||||
comparison = compare.compare_sets(old_fields, new_fields)
|
||||
assertInFieldComparison(comparison, "state", "added: [new]")
|
||||
assertInFieldComparison(comparison, "state", "removed: [draft]")
|
||||
|
||||
state_field["selection_keys"] = "['done', 'draft', 'new']"
|
||||
comparison = compare.compare_sets(old_fields, new_fields)
|
||||
assertInFieldComparison(comparison, "state", "added: [new]")
|
||||
assertInFieldComparison(comparison, "state", "most likely nothing to do")
|
||||
with self.assertRaises(AssertionError):
|
||||
assertInFieldComparison(comparison, "state", "removed")
|
||||
|
||||
state_field["selection_keys"] = "function"
|
||||
comparison = compare.compare_sets(old_fields, new_fields)
|
||||
with self.assertRaises(AssertionError):
|
||||
assertInFieldComparison(comparison, "state", "added: [new]")
|
||||
with self.assertRaises(AssertionError):
|
||||
assertInFieldComparison(comparison, "state", "removed")
|
||||
Reference in New Issue
Block a user