summaryrefslogtreecommitdiff
path: root/odoo/addons/test_testing_utilities
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-03-08 17:56:14 +0100
committerChristophe Simonis <chs@odoo.com>2019-03-08 17:56:14 +0100
commit2c5c9b8342df2748ad1044fa94c7c3ad821245ba (patch)
treeaa6228b4ee7c0038d8759f6d202c2e16e9ac0012 /odoo/addons/test_testing_utilities
parent7d4ca676809564d592257450f6a7628d0722ba0a (diff)
parentc023d0784f27622f185a1075cba8e408067b5352 (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.csv2
-rw-r--r--odoo/addons/test_testing_utilities/menu.xml17
-rw-r--r--odoo/addons/test_testing_utilities/models.py22
-rw-r--r--odoo/addons/test_testing_utilities/tests/test_form_impl.py34
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