diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-03-08 17:56:14 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-03-08 17:56:14 +0100 |
| commit | 2c5c9b8342df2748ad1044fa94c7c3ad821245ba (patch) | |
| tree | aa6228b4ee7c0038d8759f6d202c2e16e9ac0012 /odoo/addons/test_testing_utilities | |
| parent | 7d4ca676809564d592257450f6a7628d0722ba0a (diff) | |
| parent | c023d0784f27622f185a1075cba8e408067b5352 (diff) | |
[MERGE] forward port branch 12.0 up to c023d0784f2
Diffstat (limited to 'odoo/addons/test_testing_utilities')
| -rw-r--r-- | odoo/addons/test_testing_utilities/ir.model.access.csv | 2 | ||||
| -rw-r--r-- | odoo/addons/test_testing_utilities/menu.xml | 17 | ||||
| -rw-r--r-- | odoo/addons/test_testing_utilities/models.py | 22 | ||||
| -rw-r--r-- | odoo/addons/test_testing_utilities/tests/test_form_impl.py | 34 |
4 files changed, 73 insertions, 2 deletions
diff --git a/odoo/addons/test_testing_utilities/ir.model.access.csv b/odoo/addons/test_testing_utilities/ir.model.access.csv index 697a7334581..c069b568ad4 100644 --- a/odoo/addons/test_testing_utilities/ir.model.access.csv +++ b/odoo/addons/test_testing_utilities/ir.model.access.csv @@ -14,3 +14,5 @@ access_test_testing_utilities_sub2,access_test_testing_utilities_sub2,model_test access_test_testing_utilities_sub3,access_test_testing_utilities_sub3,model_test_testing_utilities_sub3,,1,0,0,0 access_test_testing_utilities_onchange_parent,access_test_testing_utilities_onchange_parent,model_test_testing_utilities_onchange_parent,,1,0,0,0 access_test_testing_utilities_onchange_line,access_test_testing_utilities_onchange_line,model_test_testing_utilities_onchange_line,,1,0,0,0 +access_model_test_testing_utilities_onchange_count,access_model_test_testing_utilities_onchange_count,model_test_testing_utilities_onchange_count,,1,1,1,1 +access_test_testing_utilities_onchange_count_sub,access_test_testing_utilities_onchange_count_sub,model_test_testing_utilities_onchange_count_sub,,1,1,1,1 diff --git a/odoo/addons/test_testing_utilities/menu.xml b/odoo/addons/test_testing_utilities/menu.xml index 3ca18ef2a50..fa5f4f37163 100644 --- a/odoo/addons/test_testing_utilities/menu.xml +++ b/odoo/addons/test_testing_utilities/menu.xml @@ -1,4 +1,6 @@ <odoo> + <menuitem id="menu_ssf" parent="base.menu_tests" name="Server-side form"/> + <record id="action_test_o2m_onchange" model="ir.actions.act_window"> <field name="name">Test o2m onchange thing</field> <field name="type">ir.actions.act_window</field> @@ -6,7 +8,7 @@ <field name="view_mode">tree,form</field> </record> - <menuitem id="menu_o2m" parent="base.menu_tests" + <menuitem id="menu_o2m" parent="menu_ssf" name="O2M onchange test thing" action="action_test_o2m_onchange"/> @@ -17,10 +19,21 @@ <field name="view_mode">tree,form</field> </record> - <menuitem id="menu_m2o" parent="base.menu_tests" + <menuitem id="menu_m2o" parent="menu_ssf" name="test_default_and_onchange" action="action_test_m2o_onchange"/> + <record id="action_test_o2m_count" model="ir.actions.act_window"> + <field name="name">test_change_number_of_lines</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">test_testing_utilities.onchange_count</field> + <field name="view_mode">tree,form</field> + </record> + + <menuitem id="menu_o2m_count" parent="menu_ssf" + name="test_change_number_of_lines" + action="action_test_o2m_count"/> + <record id="o2m_parent" model="ir.ui.view"> <field name="name">Parent External Form</field> <field name="priority">1</field> diff --git a/odoo/addons/test_testing_utilities/models.py b/odoo/addons/test_testing_utilities/models.py index 324b8d62c9f..fbdec47a7cf 100644 --- a/odoo/addons/test_testing_utilities/models.py +++ b/odoo/addons/test_testing_utilities/models.py @@ -211,3 +211,25 @@ class M2OOnchangeLine(models.Model): @api.onchange('dummy') def _onchange_flag(self): self.flag = True + +class O2MChangeCount(models.Model): + _name = 'test_testing_utilities.onchange_count' + _description = _name + + count = fields.Integer() + line_ids = fields.One2many('test_testing_utilities.onchange_count_sub', 'parent') + + @api.onchange('count') + def _onchange_count(self): + Sub = self.env['test_testing_utilities.onchange_count_sub'] + recs = Sub + for i in range(self.count): + recs |= Sub.new({'name': str(i)}) + self.line_ids = recs + +class O2MChangeSub(models.Model): + _name = 'test_testing_utilities.onchange_count_sub' + _description = _name + + parent = fields.Many2one('test_testing_utilities.onchange_count') + name = fields.Char() diff --git a/odoo/addons/test_testing_utilities/tests/test_form_impl.py b/odoo/addons/test_testing_utilities/tests/test_form_impl.py index 344ae62f4d2..c13dbd73a60 100644 --- a/odoo/addons/test_testing_utilities/tests/test_form_impl.py +++ b/odoo/addons/test_testing_utilities/tests/test_form_impl.py @@ -432,6 +432,40 @@ class TestO2M(TransactionCase): with f.line_ids.edit(index=0) as new_line: self.assertTrue(new_line.flag) + def test_o2m_remove(self): + def commands(): + return [c[0] for c in f._values['line_ids']] + f = Form(self.env['test_testing_utilities.onchange_count']) + + self.assertEqual(f.count, 0) + self.assertEqual(len(f.line_ids), 0) + + f.count = 5 + self.assertEqual(f.count, 5) + self.assertEqual(len(f.line_ids), 5) + + f.count = 2 + self.assertEqual(f.count, 2) + self.assertEqual(len(f.line_ids), 2) + + f.count = 4 + + r = f.save() + + previous = r.line_ids + self.assertEqual(len(previous), 4) + + with Form(r) as f: + f.count = 2 + self.assertEqual(commands(), [0, 0, 2, 2, 2, 2], "Should contain 2 creations and 4 deletions") + self.assertEqual(len(r.line_ids), 2) + + with Form(r) as f: + f.line_ids.remove(0) + self.assertEqual(commands(), [2, 1]) + f.count = 1 + self.assertEqual(commands(), [0, 2, 2], "should contain 1 '0' command and 2 deletions") + self.assertEqual(len(r.line_ids), 1) class TestEdition(TransactionCase): """ These use the context manager form as we don't need the record |
