summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-10-19 18:16:14 +0200
committerChristophe Simonis <chs@odoo.com>2016-10-19 18:16:14 +0200
commit938ffb92da1ea898f661aec04745f7630e2f378c (patch)
tree7faeed8433101836cd0239cf6c23629ef1f1289d /odoo/addons/test_new_api
parent1f9e92dfef325b6727e1bee3de55bff095ec6cf2 (diff)
parent6466aa499fc37bba5f4feeeecac99448ef88e62e (diff)
[MERGE] forward port branch 10.0 up to 6466aa4
Diffstat (limited to 'odoo/addons/test_new_api')
-rw-r--r--odoo/addons/test_new_api/tests/__init__.py1
-rw-r--r--odoo/addons/test_new_api/tests/test_onchange.py2
-rw-r--r--odoo/addons/test_new_api/tests/test_one2many.py65
3 files changed, 67 insertions, 1 deletions
diff --git a/odoo/addons/test_new_api/tests/__init__.py b/odoo/addons/test_new_api/tests/__init__.py
index 2bbcfe40990..b90ccc96825 100644
--- a/odoo/addons/test_new_api/tests/__init__.py
+++ b/odoo/addons/test_new_api/tests/__init__.py
@@ -3,5 +3,6 @@
from . import test_new_fields
from . import test_onchange
from . import test_attributes
+from . import test_one2many
from . import test_ui
from . import test_domain
diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py
index 87fc8229b7c..a6e2bff1b35 100644
--- a/odoo/addons/test_new_api/tests/test_onchange.py
+++ b/odoo/addons/test_new_api/tests/test_onchange.py
@@ -176,7 +176,7 @@ class TestOnChange(common.TransactionCase):
self.assertEqual(values, {
'name': partner.name,
'partner': partner.id,
- 'lines': [(5,), (4, line.id)],
+ 'lines': [(6, 0, [line.id])],
})
# modify 'partner'
diff --git a/odoo/addons/test_new_api/tests/test_one2many.py b/odoo/addons/test_new_api/tests/test_one2many.py
new file mode 100644
index 00000000000..38dee13ab54
--- /dev/null
+++ b/odoo/addons/test_new_api/tests/test_one2many.py
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+from openerp.tests.common import TransactionCase
+
+
+class One2manyCase(TransactionCase):
+ def setUp(self):
+ super(One2manyCase, self).setUp()
+ self.Line = self.env["test_new_api.multi.line"]
+ self.multi = self.env["test_new_api.multi"].create({
+ "name": "What is up?"
+ })
+
+ def operations(self):
+ """Run operations on o2m fields to check all works fine."""
+ # Check the lines first
+ self.assertItemsEqual(
+ self.multi.lines.mapped('name'),
+ map(str, range(10)))
+ # Modify the first line and drop the last one
+ self.multi.lines[0].name = "hello"
+ self.multi.lines = self.multi.lines[:-1]
+ self.assertEqual(len(self.multi.lines), 9)
+ self.assertIn("hello", self.multi.lines.mapped('name'))
+ # Invalidate the cache and check again; this crashes if the value
+ # of self.multi.lines in cache contains new records
+ self.multi.invalidate_cache()
+ self.assertEqual(len(self.multi.lines), 9)
+ self.assertIn("hello", self.multi.lines.mapped('name'))
+
+ def test_new_one_by_one(self):
+ """Check lines created with ``new()`` and appended one by one."""
+ for name in range(10):
+ self.multi.lines |= self.Line.new({"name": str(name)})
+ self.operations()
+
+ def test_new_single(self):
+ """Check lines created with ``new()`` and added in one step."""
+ self.multi.lines = self.Line.browse(
+ [self.Line.new({"name": str(name)}).id for name in range(10)]
+ )
+ self.operations()
+
+ def test_create_one_by_one(self):
+ """Check lines created with ``create()`` and appended one by one."""
+ for name in range(10):
+ self.multi.lines |= self.Line.create({"name": str(name)})
+ self.operations()
+
+ def test_create_single(self):
+ """Check lines created with ``create()`` and added in one step."""
+ self.multi.lines = self.Line.browse(
+ [self.Line.create({"name": str(name)}).id for name in range(10)]
+ )
+ self.operations()
+
+ def test_rpcstyle_one_by_one(self):
+ """Check lines created with RPC style and appended one by one."""
+ for name in range(10):
+ self.multi.lines = [(0, 0, {"name": str(name)})]
+ self.operations()
+
+ def test_rpcstyle_single(self):
+ """Check lines created with RPC style and added in one step"""
+ self.multi.lines = [(0, 0, {'name': str(name)}) for name in range(10)]
+ self.operations()