summaryrefslogtreecommitdiff
path: root/addons/event_sale/static/tests/event_configurator.test.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/event_sale/static/tests/event_configurator.test.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/event_sale/static/tests/event_configurator.test.js')
-rw-r--r--addons/event_sale/static/tests/event_configurator.test.js137
1 files changed, 137 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();
+ });
+ });
+});