diff options
| author | Nicolas Lempereur <nle@odoo.com> | 2017-03-15 15:22:59 +0100 |
|---|---|---|
| committer | Nicolas Lempereur <nle@odoo.com> | 2017-03-20 13:25:40 +0100 |
| commit | a2479396204d900b267d2446001769bdcbd1f9fa (patch) | |
| tree | 68f63823fca1b615d58ef5da279b41cf904a291a /odoo/addons/test_new_api | |
| parent | f65475d68cef09f5818841cf12fc5b22d295fe28 (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.py | 18 | ||||
| -rw-r--r-- | odoo/addons/test_new_api/static/test/x2many.js | 66 | ||||
| -rw-r--r-- | odoo/addons/test_new_api/views.xml | 40 |
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> |
