summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api
diff options
context:
space:
mode:
authorNicolas Lempereur <nle@odoo.com>2017-03-15 15:22:59 +0100
committerNicolas Lempereur <nle@odoo.com>2017-03-20 13:25:40 +0100
commita2479396204d900b267d2446001769bdcbd1f9fa (patch)
tree68f63823fca1b615d58ef5da279b41cf904a291a /odoo/addons/test_new_api
parentf65475d68cef09f5818841cf12fc5b22d295fe28 (diff)
[FIX] test_new_api: new steps for onchange and o2m
In f65475d6 one2many fields of default view in a form view were propagated to the ORM so the value received from an onchange was not empty. These new steps test this on a tree view embedded in a form view, or a tree view originating from a default view by testing onchange adding row or updating values of a one2many.
Diffstat (limited to 'odoo/addons/test_new_api')
-rw-r--r--odoo/addons/test_new_api/models.py18
-rw-r--r--odoo/addons/test_new_api/static/test/x2many.js66
-rw-r--r--odoo/addons/test_new_api/views.xml40
3 files changed, 121 insertions, 3 deletions
diff --git a/odoo/addons/test_new_api/models.py b/odoo/addons/test_new_api/models.py
index 81e24fb5b5b..2c174db6c85 100644
--- a/odoo/addons/test_new_api/models.py
+++ b/odoo/addons/test_new_api/models.py
@@ -4,7 +4,7 @@
import datetime
from odoo import models, fields, api, _
-from odoo.exceptions import AccessError
+from odoo.exceptions import AccessError, ValidationError
class Category(models.Model):
@@ -82,6 +82,20 @@ class Discussion(models.Model):
"""Ensure computed O2M domains work as expected."""
return [("important", "=", True)]
+ @api.onchange('name')
+ def _onchange_name(self):
+ # test onchange modifying one2many field values
+ if self.env.context.get('generate_dummy_message') and self.name == '{generate_dummy_message}':
+ # update body of existings messages and emails
+ for message in self.messages:
+ message.body = 'not last dummy message'
+ for message in self.important_messages:
+ message.body = 'not last dummy message'
+ # add new dummy message
+ message_vals = self.messages._add_missing_default_values({'body': 'dummy message', 'important': True})
+ self.messages |= self.messages.new(message_vals)
+ self.important_messages |= self.messages.new(message_vals)
+
@api.onchange('moderator')
def _onchange_moderator(self):
self.participants |= self.moderator
@@ -154,7 +168,7 @@ class Message(models.Model):
@api.one
@api.depends('author', 'author.partner_id')
def _compute_author_partner(self):
- self.author_partner = author.partner_id
+ self.author_partner = self.author.partner_id
@api.model
def _search_author_partner(self, operator, value):
diff --git a/odoo/addons/test_new_api/static/test/x2many.js b/odoo/addons/test_new_api/static/test/x2many.js
index d26eedcd0f6..4d63b226c36 100644
--- a/odoo/addons/test_new_api/static/test/x2many.js
+++ b/odoo/addons/test_new_api/static/test/x2many.js
@@ -454,5 +454,71 @@ odoo.define('web.test.x2many', function (require) {
trigger: '.tab-pane:eq(0) .o_form_field.o_view_manager_content tbody tr[data-id]:eq(2)',
extra_trigger: 'body:not(:has(.tab-pane:eq(0) .o_form_field.o_view_manager_content tbody tr[data-id]:eq(3)))',
run: function () {}, // it's a check
+ },
+
+ /////////////////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////////////////////
+
+ {
+ content: "switch to the third form view to test onchange changing one2many (toggle menu dropdown)",
+ trigger: '.o_sub_menu .oe_secondary_submenu .oe_menu_leaf .oe_menu_text:containsExact(Discussions)',
+ extra_trigger: '.tab-pane:eq(0) .o_form_field.o_view_manager_content tbody tr[data-id]:eq(2)',
+ edition: 'community'
+ }, {
+ content: "switch to the third form view to test onchange changing one2many (toggle menu dropdown)",
+ trigger: 'nav .o_menu_sections li a:containsExact(Discussions)',
+ extra_trigger: '.tab-pane:eq(0) .o_form_field.o_view_manager_content tbody tr[data-id]:eq(2)',
+ edition: 'enterprise'
+ }, {
+ content: "switch to the thied form view to test onchange changing one2many (open submenu)",
+ trigger: '.o_sub_menu .oe_secondary_submenu .oe_menu_leaf .oe_menu_text:contains(Discussions 3)',
+ edition: 'community'
+ }, {
+ content: "switch to the thied form view to test onchange changing one2many (open submenu)",
+ trigger: 'nav .o_menu_sections ul li a:contains(Discussions 3)',
+ edition: 'enterprise'
+ }, {
+ content: "wait web client",
+ trigger: '.breadcrumb:contains(Discussions 3)',
+ }, {
+ content: "create new discussion",
+ trigger: 'button.o_list_button_add',
+ }, {
+ content: "set discussion title to generate dummy message",
+ trigger: 'input.o_form_required',
+ run: 'text {generate_dummy_message}',
+ }, {
+ content: "check new dummy message happened",
+ trigger: '.o_group tr:first-child td[data-field="size"]:containsExact(13)',
+ extra_trigger: '.o_group tr:last-child td[data-field="size"]:containsExact(13)',
+ run: function () {}, // it's a check
+ }, {
+ content: "check field not in embedded view received correctly",
+ trigger: 'td[data-field="important"] input[type="checkbox"]:propChecked',
+ run: function () {}, // it's a check
+ }, {
+ content: "empty discussion title",
+ trigger: 'input.o_form_required',
+ run: 'text removed_title',
+ }, {
+ content: "onchange happened",
+ trigger: 'td[data-field="name"]:contains([removed_title])',
+ run: function () {}, // it's a check
+ }, {
+ content: "set discussion title to generate dummy message",
+ trigger: 'input.o_form_required',
+ run: 'text {generate_dummy_message}',
+ }, {
+ content: "chuck update and new dummy message happened",
+ trigger: '.o_group tr:first-child td[data-field="size"]:containsExact(22)',
+ extra_trigger: '.o_group tr:last-child td[data-field="size"]:containsExact(22)',
+ run: function () {}, // it's a check
+ }, { // cancel
+ content: "cancel change",
+ trigger: '.o_cp_buttons .o_form_button_cancel',
+ run: 'click',
+ }, {
+ content: "confirm cancel change",
+ trigger: '.modal-footer button:contains(Ok)',
}]);
});
diff --git a/odoo/addons/test_new_api/views.xml b/odoo/addons/test_new_api/views.xml
index 0b053635319..0916144467a 100644
--- a/odoo/addons/test_new_api/views.xml
+++ b/odoo/addons/test_new_api/views.xml
@@ -152,6 +152,41 @@
</record>
<menuitem id="menu_discussions_2" action="action_discussions_2" parent="menu_sub" sequence="10"/>
+ <!-- Discussion form view with embedded list -->
+ <record id="discussion_form_3" model="ir.ui.view">
+ <field name="name">discussion form view</field>
+ <field name="model">test_new_api.discussion</field>
+ <field name="priority" eval="11"/>
+ <field name="arch" type="xml">
+ <form string="Discussion" version="7.0">
+ <sheet>
+ <group>
+ <field name="name" context="{'generate_dummy_message': True}"/>
+ </group>
+ <group>
+ <field name="messages" />
+ <field name="important_messages">
+ <tree string="Important messages">
+ <field name="name"/>
+ <field name="author"/>
+ <field name="size"/>
+ </tree>
+ </field>
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_discussions_3" model="ir.actions.act_window">
+ <field name="name">Discussions 3</field>
+ <field name="res_model">test_new_api.discussion</field>
+ <field name="view_ids" eval="[(5,0,0),
+ (0,0,{'view_mode':'tree'}),
+ (0,0,{'view_mode':'form', 'view_id': ref('discussion_form_3')})]"/>
+ </record>
+ <menuitem id="menu_discussions_3" action="action_discussions_3" parent="menu_sub" sequence="11"/>
+
<!-- Message tree view -->
<record id="message_tree" model="ir.ui.view">
@@ -159,7 +194,10 @@
<field name="model">test_new_api.message</field>
<field name="arch" type="xml">
<tree string="Messages">
- <field name="display_name"/>
+ <field name="name"/>
+ <field name="author"/>
+ <field name="size"/>
+ <field name="important"/>
</tree>
</field>
</record>