diff --git a/addons/cetmix_tower_server/tests/test_jet_create_wizard.py b/addons/cetmix_tower_server/tests/test_jet_create_wizard.py new file mode 100644 index 0000000..98646d8 --- /dev/null +++ b/addons/cetmix_tower_server/tests/test_jet_create_wizard.py @@ -0,0 +1,81 @@ +# Copyright (C) 2025 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from .common_jets import TestTowerJetsCommon + + +class TestJetCreateWizard(TestTowerJetsCommon): + """Tests for `cx.tower.jet.create.wizard`""" + + def test_action_confirm_creates_jet(self): + """ + Ensure that the wizard creates a new jet using the selected template. + """ + wizard_model = self.env["cx.tower.jet.create.wizard"] + + wizard = wizard_model.create( + { + "name_type": "m", + "name": "Wizard Jet", + "jet_template_id": self.jet_template_test.id, + "server_id": self.server_test_1.id, + } + ) + + action = wizard.action_confirm() + + jet = self.Jet.browse(action["res_id"]) + self.assertTrue(jet.exists(), "Wizard action should return the created jet") + self.assertEqual(jet.name, "Wizard Jet") + self.assertEqual(jet.server_id, self.server_test_1) + self.assertEqual(jet.jet_template_id, self.jet_template_test) + + def test_action_confirm_sets_custom_variables(self): + """ + Ensure custom variable values from the wizard are stored on the created jet. + """ + wizard_model = self.env["cx.tower.jet.create.wizard"] + custom_variable = self.Variable.create( + { + "name": "Wizard Custom Variable", + } + ) + custom_value = "custom value" + + wizard = wizard_model.create( + { + "name_type": "m", + "name": "Wizard Jet With Variables", + "jet_template_id": self.jet_template_test.id, + "server_id": self.server_test_1.id, + "use_custom_variables": "y", + "line_ids": [ + ( + 0, + 0, + { + "variable_id": custom_variable.id, + "value_char": custom_value, + }, + ) + ], + } + ) + + action = wizard.action_confirm() + jet = self.Jet.browse(action["res_id"]) + custom_lines = jet.variable_value_ids.filtered( + lambda line: line.variable_id == custom_variable + ) + + self.assertEqual(len(custom_lines), 1, "Custom variable should be stored once") + self.assertEqual( + custom_lines.variable_id, + custom_variable, + "Custom variable record should be linked to the expected variable", + ) + self.assertEqual( + custom_lines.value_char, + custom_value, + "Created jet should keep custom variable values from the wizard", + )