diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/event_sale/static/tests | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/event_sale/static/tests')
| -rw-r--r-- | addons/event_sale/static/tests/event_configurator.test.js | 137 | ||||
| -rw-r--r-- | addons/event_sale/static/tests/tours/event_configurator_ui.js | 85 |
2 files changed, 222 insertions, 0 deletions
diff --git a/addons/event_sale/static/tests/event_configurator.test.js b/addons/event_sale/static/tests/event_configurator.test.js new file mode 100644 index 00000000..9ed0c98c --- /dev/null +++ b/addons/event_sale/static/tests/event_configurator.test.js @@ -0,0 +1,137 @@ +odoo.define('event.configurator.tests', function (require) { + "use strict"; + + var FormView = require('web.FormView'); + var testUtils = require('web.test_utils'); + var createView = testUtils.createView; + + var getArch = function (){ + return '<form>' + + '<sheet>' + + '<field name="sale_order_line" widget="section_and_note_one2many">' + + '<tree editable="top"><control>' + + '<create string="Add a product"/>' + + '<create string="Add a section" context="{\'default_display_type\': \'line_section\'}"/>' + + '<create string="Add a note" context="{\'default_display_type\': \'line_note\'}"/>' + + '</control>' + + '<field name="product_id" widget="product_configurator" />' + + '</tree>' + + '</field>' + + '</sheet>' + + '</form>'; + }; + + QUnit.module('Event Configurator', { + beforeEach: function () { + this.data = { + 'product.product': { + fields: { + id: {type: 'integer'}, + event_ok: {type: 'boolean'}, + rent_ok: {type: 'boolean'}//sale_rental purposes + }, + records: [{ + id: 1, + display_name: "Customizable Event", + event_ok: true, + rent_ok: false//sale_rental purposes + }, { + id: 2, + display_name: "Desk", + event_ok: false, + rent_ok: false//sale_rental purposes + }] + }, + sale_order: { + fields: { + id: {type: 'integer'}, + sale_order_line: { + string: 'lines', + type: 'one2many', + relation: 'sale_order_line' + }, + } + }, + sale_order_line: { + fields: { + product_id: { + string: 'product', + type: 'many2one', + relation: 'product.product' + }, + event_ok: {type: 'boolean'}, + rent_ok: {type: 'boolean'},//sale_rental purposes + event_id: { + string: 'event', + type: 'many2one', + relation: 'event' + }, + event_ticket_id: { + string: 'event_ticket', + type: 'many2one', + relation: 'event_ticket' + } + } + } + }; + } + }, function (){ + QUnit.test('Select a regular product and verify that the event configurator is not opened', async function (assert) { + assert.expect(1); + + var form = await createView({ + View: FormView, + model: 'sale_order', + data: this.data, + arch: getArch(), + mockRPC: function (route, params) { + if (params.method === 'read' && params.args[1][0] === 'event_ok') { + assert.ok(true); + return Promise.resolve([{event_ok: false}]); + } + return this._super.apply(this, arguments); + }, + intercepts: { + do_action: function (ev) { + if (ev.data.action === 'event_sale.event_configurator_action') { + assert.ok(false, "Should not execute the configure action"); + } + }, + } + }); + + await testUtils.dom.click(form.$("a:contains('Add a product')")); + await testUtils.fields.many2one.searchAndClickItem("product_id", {item: 'Desk'}) + form.destroy(); + }); + + QUnit.test('Select a configurable event and verify that the event configurator is opened', async function (assert) { + assert.expect(2); + + var form = await createView({ + View: FormView, + model: 'sale_order', + data: this.data, + arch: getArch(), + mockRPC: function (route, params) { + if (params.method === 'read' && params.args[1][0] === 'event_ok') { + assert.ok(true); + return Promise.resolve([{event_ok: true}]); + } + return this._super.apply(this, arguments); + }, + intercepts: { + do_action: function (ev) { + if (ev.data.action === 'event_sale.event_configurator_action') { + assert.ok(true); + } + }, + } + }); + + await testUtils.dom.click(form.$("a:contains('Add a product')")); + await testUtils.fields.many2one.searchAndClickItem("product_id", {item: 'Customizable Event'}); + form.destroy(); + }); + }); +}); diff --git a/addons/event_sale/static/tests/tours/event_configurator_ui.js b/addons/event_sale/static/tests/tours/event_configurator_ui.js new file mode 100644 index 00000000..a7419871 --- /dev/null +++ b/addons/event_sale/static/tests/tours/event_configurator_ui.js @@ -0,0 +1,85 @@ +odoo.define('event.event_configurator_tour', function (require) { +"use strict"; + +var tour = require('web_tour.tour'); + +tour.register('event_configurator_tour', { + url: "/web", + test: true, +}, [tour.stepUtils.showAppsMenuItem(), { + trigger: '.o_app[data-menu-xmlid="sale.sale_menu_root"]', + edition: 'community' +}, { + trigger: '.o_app[data-menu-xmlid="sale.sale_menu_root"]', + edition: 'enterprise' +}, { + trigger: ".o_list_button_add", + extra_trigger: ".o_sale_order" +}, { + trigger: "a:contains('Add a product')" +}, { + trigger: 'div[name="product_id"] input, div[name="product_template_id"] input', + run: function (actions) { + actions.text('Event'); + } +}, { + trigger: 'ul.ui-autocomplete a:contains("Event")', + run: 'click' +}, { + trigger: 'div[name="event_id"] input', + run: 'click' +}, { + trigger: 'ul.ui-autocomplete a:contains("Design")', + run: 'click', + in_modal: false +}, { + trigger: 'div[name="event_ticket_id"] input', + run: 'click' +}, { + trigger: 'ul.ui-autocomplete a:contains("VIP")', + run: 'click', + in_modal: false +}, { + trigger: '.o_event_sale_js_event_configurator_ok' +}, { + trigger: 'textarea[name="name"]', + run: function () { + var $textarea = $('textarea[name="name"]'); + if ($textarea.val().includes('Design Fair Los Angeles') && $textarea.val().includes('VIP')) { + $textarea.addClass('tour_success'); + } + } +}, { + trigger: 'textarea[name="name"].tour_success', + run: function () {} // check +}, { + trigger: 'ul.nav a:contains("Order Lines")', + run: 'click' +}, { + trigger: 'td:contains("Event")', + run: 'click' +}, { + trigger: '.o_edit_product_configuration' +}, { + trigger: 'div[name="event_ticket_id"] input', + run: 'click' +}, { + trigger: 'ul.ui-autocomplete a:contains("Standard")', + run: 'click', + in_modal: false +}, { + trigger: '.o_event_sale_js_event_configurator_ok' +}, { + trigger: 'textarea[name="name"]', + run: function () { + var $textarea = $('textarea[name="name"]'); + if ($textarea.val().includes('Standard')) { + $textarea.addClass('tour_success_2'); + } + } +}, { + trigger: 'textarea[name="name"].tour_success_2', + run: function () {} // check +}]); + +}); |
