summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/fields
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-09-13 18:07:59 +0200
committerChristophe Simonis <chs@odoo.com>2019-09-13 18:07:59 +0200
commit6c948c36bbf72dd896e0bff03aa7fbddadcbb0cd (patch)
treef8620905c011735d8a3c340c46d1417a54a75972 /addons/web/static/tests/fields
parent48503fcf08eac6fed12e080d4f501f9bbc8d257d (diff)
parent197474e5b9ad43ab2d587a98136a1a809ce9a2e7 (diff)
[MERGE] forward port branch saas-12.5 up to 197474e5b9a
Diffstat (limited to 'addons/web/static/tests/fields')
-rw-r--r--addons/web/static/tests/fields/basic_fields_tests.js134
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_many2many_tests.js3
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_one2many_tests.js24
-rw-r--r--addons/web/static/tests/fields/relational_fields_mobile_tests.js179
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js39
-rw-r--r--addons/web/static/tests/fields/signature.js12
6 files changed, 171 insertions, 220 deletions
diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js
index a67d4e19cbc..eca412c036a 100644
--- a/addons/web/static/tests/fields/basic_fields_tests.js
+++ b/addons/web/static/tests/fields/basic_fields_tests.js
@@ -1,6 +1,7 @@
odoo.define('web.basic_fields_tests', function (require) {
"use strict";
+var ajax = require('web.ajax');
var basicFields = require('web.basic_fields');
var concurrency = require('web.concurrency');
var config = require('web.config');
@@ -13,7 +14,6 @@ var testUtils = require('web.test_utils');
var field_registry = require('web.field_registry');
var createView = testUtils.createView;
-var createView = testUtils.createView;
var DebouncedField = basicFields.DebouncedField;
var JournalDashboardGraph = basicFields.JournalDashboardGraph;
var _t = core._t;
@@ -124,6 +124,19 @@ QUnit.module('basic_fields', {
position: "after",
}]
},
+ "ir.translation": {
+ fields: {
+ lang_code: {type: "char"},
+ value: {type: "char"},
+ res_id: {type: "integer"}
+ },
+ records: [{
+ id: 99,
+ res_id: 37,
+ value: '',
+ lang_code: 'en_US'
+ }]
+ },
};
}
}, function () {
@@ -1059,7 +1072,7 @@ QUnit.module('basic_fields', {
});
QUnit.test('char field translatable', async function (assert) {
- assert.expect(3);
+ assert.expect(4);
this.data.partner.fields.foo.translate = true;
@@ -1081,7 +1094,13 @@ QUnit.module('basic_fields', {
mockRPC: function (route, args) {
if (route === "/web/dataset/call_button" && args.method === 'translate_fields') {
assert.deepEqual(args.args, ["partner",1,"foo"], 'should call "call_button" route');
- return Promise.resolve();
+ return Promise.resolve({
+ domain: [],
+ context: {search_default_name: 'partnes,foo'},
+ });
+ }
+ if (route === "/web/dataset/call_kw/res.lang/get_installed") {
+ return Promise.resolve([["en_US"], ["fr_BE"]]);
}
return this._super.apply(this, arguments);
},
@@ -1089,10 +1108,27 @@ QUnit.module('basic_fields', {
await testUtils.form.clickEdit(form);
var $button = form.$('input[type="text"].o_field_char + .o_field_translate');
assert.strictEqual($button.length, 1, "should have a translate button");
+ assert.strictEqual($button.text(), 'EN', 'the button should have as test the current language');
await testUtils.dom.click($button);
+ await testUtils.nextTick();
+
+ assert.containsOnce($(document), '.modal', 'a translate modal should be visible');
+
form.destroy();
- form = await createView({
+ _t.database.multi_lang = multiLang;
+ });
+
+ QUnit.test('char field translatable in create mode', async function (assert) {
+ assert.expect(1);
+
+ this.data.partner.fields.foo.translate = true;
+
+ var multiLang = _t.database.multi_lang;
+ _t.database.multi_lang = true;
+
+
+ var form = await createView({
View: FormView,
model: 'partner',
data: this.data,
@@ -1104,8 +1140,8 @@ QUnit.module('basic_fields', {
'</sheet>' +
'</form>',
});
- $button = form.$('input[type="text"].o_field_char + .o_field_translate');
- assert.strictEqual($button.length, 0, "should not have a translate button in create mode");
+ var $button = form.$('input[type="text"].o_field_char + .o_field_translate');
+ assert.strictEqual($button.length, 1, "should have a translate button in create mode");
form.destroy();
_t.database.multi_lang = multiLang;
@@ -1716,7 +1752,13 @@ QUnit.module('basic_fields', {
mockRPC: function (route, args) {
if (route === "/web/dataset/call_button" && args.method === 'translate_fields') {
assert.deepEqual(args.args, ["partner",1,"txt"], 'should call "call_button" route');
- return Promise.resolve();
+ return Promise.resolve({
+ domain: [],
+ context: {search_default_name: 'partnes,foo'},
+ });
+ }
+ if (route === "/web/dataset/call_kw/res.lang/get_installed") {
+ return Promise.resolve([["en_US"], ["fr_BE"]]);
}
return this._super.apply(this, arguments);
},
@@ -1725,9 +1767,19 @@ QUnit.module('basic_fields', {
var $button = form.$('textarea + .o_field_translate');
assert.strictEqual($button.length, 1, "should have a translate button");
await testUtils.dom.click($button);
+ assert.containsOnce($(document), '.modal', 'there should be a translation modal');
form.destroy();
+ _t.database.multi_lang = multiLang;
+ });
+
+ QUnit.test('text field translatable in create mode', async function (assert) {
+ assert.expect(1);
+
+ this.data.partner.fields.txt.translate = true;
- form = await createView({
+ var multiLang = _t.database.multi_lang;
+ _t.database.multi_lang = true;
+ var form = await createView({
View: FormView,
model: 'partner',
data: this.data,
@@ -1739,8 +1791,8 @@ QUnit.module('basic_fields', {
'</sheet>' +
'</form>',
});
- $button = form.$('textarea + .o_field_translate');
- assert.strictEqual($button.length, 0, "should not have a translate button in create mode");
+ var $button = form.$('textarea + .o_field_translate');
+ assert.strictEqual($button.length, 1, "should have a translate button in create mode");
form.destroy();
_t.database.multi_lang = multiLang;
@@ -2796,8 +2848,32 @@ QUnit.module('basic_fields', {
form.destroy();
});
- QUnit.test('date field should remove the date if the date is not valid', async function (assert) {
- assert.expect(1);
+ QUnit.test('date field: set an invalid date when the field is already set', async function (assert) {
+ assert.expect(2);
+
+ var form = await createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form string="Partners"><field name="date"/></form>',
+ res_id: 1,
+ viewOptions: {
+ mode: 'edit',
+ },
+ });
+
+ var $input = form.$('.o_field_widget[name=date] input');
+
+ assert.strictEqual($input.val(), "02/03/2017");
+
+ $input.val('mmmh').trigger('change');
+ assert.strictEqual($input.val(), "02/03/2017", "should have reset the original value");
+
+ form.destroy();
+ });
+
+ QUnit.test('date field: set an invalid date when the field is not set yet', async function (assert) {
+ assert.expect(2);
var form = await createView({
View: FormView,
@@ -2805,13 +2881,18 @@ QUnit.module('basic_fields', {
data: this.data,
arch: '<form string="Partners"><field name="date"/></form>',
res_id: 4,
+ viewOptions: {
+ mode: 'edit',
+ },
});
- // switch to edit mode
- await testUtils.form.clickEdit(form);
- // set an invalid date
+
var $input = form.$('.o_field_widget[name=date] input');
+
+ assert.strictEqual($input.text(), "");
+
$input.val('mmmh').trigger('change');
assert.strictEqual($input.text(), "", "The date field should be empty");
+
form.destroy();
});
@@ -2967,17 +3048,17 @@ QUnit.module('basic_fields', {
// switch to edit mode
await testUtils.form.clickEdit(form);
// open datepicker and select another value
- testUtils.dom.openDatepicker(form.$('.o_datepicker'));
- testUtils.dom.click($('.bootstrap-datetimepicker-widget .picker-switch').first());
- testUtils.dom.click($('.bootstrap-datetimepicker-widget .picker-switch:eq(1)'));
- testUtils.dom.click($('.bootstrap-datetimepicker-widget .year').eq(11));
- testUtils.dom.click($('.bootstrap-datetimepicker-widget .month').eq(11));
- testUtils.dom.click($('.day:contains(31)'));
+ await testUtils.dom.openDatepicker(form.$('.o_datepicker'));
+ await testUtils.dom.click($('.bootstrap-datetimepicker-widget .picker-switch').first());
+ await testUtils.dom.click($('.bootstrap-datetimepicker-widget .picker-switch:eq(1)'));
+ await testUtils.dom.click($('.bootstrap-datetimepicker-widget .year').eq(11));
+ await testUtils.dom.click($('.bootstrap-datetimepicker-widget .month').eq(11));
+ await testUtils.dom.click($('.day:contains(31)'));
var $warn = form.$('.o_datepicker_warning:visible');
assert.strictEqual($warn.length, 1, "should have a warning in the form view");
- testUtils.fields.editSelect(form.$('.o_field_widget[name=date] input'), ''); // remove the value
+ await testUtils.fields.editSelect(form.$('.o_field_widget[name=date] input'), ''); // remove the value
$warn = form.$('.o_datepicker_warning:visible');
assert.strictEqual($warn.length, 0, "the warning in the form view should be hidden");
@@ -3100,7 +3181,7 @@ QUnit.module('basic_fields', {
assert.strictEqual(form.$('.o_datepicker_input').val(), '02/03/2017',
'the date should be correct in edit mode');
- testUtils.fields.editAndTrigger(form.$('.o_datepicker_input'), '', ['input', 'change', 'focusout']);
+ await testUtils.fields.editAndTrigger(form.$('.o_datepicker_input'), '', ['input', 'change', 'focusout']);
assert.strictEqual(form.$('.o_datepicker_input').val(), '',
'should have correctly removed the value');
@@ -5817,7 +5898,11 @@ QUnit.module('basic_fields', {
form.destroy();
});
- QUnit.module('FieldColor');
+ QUnit.module('FieldColor', {
+ before: function () {
+ return ajax.loadXML('/web/static/src/xml/colorpicker_dialog.xml', core.qweb);
+ },
+ });
QUnit.test('Field Color: default widget state', async function (assert) {
assert.expect(3);
@@ -5837,7 +5922,6 @@ QUnit.module('basic_fields', {
});
await testUtils.dom.click(form.$('.o_field_color'));
- await testUtils.nextTick();
assert.containsOnce($, '.modal');
assert.containsNone($('.modal'), '.o_opacity_slider',
"Opacity slider should not be present");
diff --git a/addons/web/static/tests/fields/relational_fields/field_many2many_tests.js b/addons/web/static/tests/fields/relational_fields/field_many2many_tests.js
index ab80fd59983..db0fb3632d3 100644
--- a/addons/web/static/tests/fields/relational_fields/field_many2many_tests.js
+++ b/addons/web/static/tests/fields/relational_fields/field_many2many_tests.js
@@ -116,7 +116,7 @@ QUnit.module('fields', {}, function () {
QUnit.module('FieldMany2Many');
QUnit.test('many2many kanban: edition', async function (assert) {
- assert.expect(32);
+ assert.expect(33);
this.data.partner.records[0].timmy = [12, 14];
this.data.partner_type.records.push({ id: 15, display_name: "red", color: 6 });
@@ -250,6 +250,7 @@ QUnit.module('fields', {}, function () {
assert.strictEqual($('.modal .modal-footer .o_btn_remove').length, 1,
'There should be a modal having Remove Button');
await testUtils.dom.click($('.modal .modal-footer .o_btn_remove'));
+ assert.containsNone($('.o_modal'), "modal should have been closed");
assert.strictEqual(form.$('.o_kanban_record:not(.o_kanban_ghost)').length, 5,
'should contain 5 records');
assert.ok(!form.$('.o_kanban_record:contains(silver)').length,
diff --git a/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js b/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
index eb4cd9986cc..35b4be9f25e 100644
--- a/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
+++ b/addons/web/static/tests/fields/relational_fields/field_one2many_tests.js
@@ -2255,7 +2255,7 @@ QUnit.module('fields', {}, function () {
});
QUnit.test('one2many kanban: edition', async function (assert) {
- assert.expect(17);
+ assert.expect(23);
this.data.partner.records[0].p = [2];
var form = await createView({
@@ -2286,6 +2286,22 @@ QUnit.module('fields', {}, function () {
'</field>' +
'</form>',
res_id: 1,
+ mockRPC: function (route, args) {
+ if (route === '/web/dataset/call_kw/partner/write') {
+ var commands = args.args[1].p;
+ assert.strictEqual(commands.length, 2,
+ 'should have generated two commands');
+ assert.strictEqual(commands[0][0], 0,
+ 'generated command should be ADD WITH VALUES');
+ assert.strictEqual(commands[0][2].display_name, "new subrecord 3",
+ 'value of newly created subrecord should be "new subrecord 3"');
+ assert.strictEqual(commands[1][0], 2,
+ 'generated command should be REMOVE AND DELETE');
+ assert.strictEqual(commands[1][1], 2,
+ 'deleted record id should be 2');
+ }
+ return this._super.apply(this, arguments);
+ },
});
assert.ok(!form.$('.o_kanban_view .delete_icon').length,
@@ -2341,6 +2357,7 @@ QUnit.module('fields', {}, function () {
assert.strictEqual($('.modal .modal-footer .o_btn_remove').length, 1,
'There should be a modal having Remove Button');
await testUtils.dom.click($('.modal .modal-footer .o_btn_remove'));
+ assert.containsNone($('.o_modal'), "modal should have been closed");
assert.strictEqual(form.$('.o_kanban_record:not(.o_kanban_ghost)').length, 3,
'should contain 3 records');
await testUtils.dom.click(form.$('.o_kanban_view .delete_icon:first()'));
@@ -2349,6 +2366,9 @@ QUnit.module('fields', {}, function () {
'should contain 1 records');
assert.strictEqual(form.$('.o_kanban_record span:first').text(), 'new subrecord 3',
'the remaining subrecord should be "new subrecord 3"');
+
+ // save and check that the correct command has been generated
+ await testUtils.form.clickSave(form);
form.destroy();
});
@@ -6611,7 +6631,7 @@ QUnit.module('fields', {}, function () {
await testUtils.dom.click(form.$('.o_field_x2many_list_row_add a'));
prom = testUtils.makeTestPromise();
- testUtils.fields.editAndTrigger(form.$('.o_field_widget[name=int_field]'), '44',
+ await testUtils.fields.editAndTrigger(form.$('.o_field_widget[name=int_field]'), '44',
['input', { type: 'keydown', which: $.ui.keyCode.TAB }]);
prom.resolve();
await testUtils.nextTick();
diff --git a/addons/web/static/tests/fields/relational_fields_mobile_tests.js b/addons/web/static/tests/fields/relational_fields_mobile_tests.js
deleted file mode 100644
index 640a9298368..00000000000
--- a/addons/web/static/tests/fields/relational_fields_mobile_tests.js
+++ /dev/null
@@ -1,179 +0,0 @@
-odoo.define('web.relational_fields_tests', function (require) {
-"use strict";
-
-var FormView = require('web.FormView');
-var testUtils = require('web.test_utils');
-
-var createView = testUtils.createView;
-
-QUnit.module('fields', {}, function () {
-
-QUnit.module('relational_fields', {
- beforeEach: function () {
- this.data = {
- partner: {
- fields: {
- display_name: { string: "Displayed name", type: "char" },
- foo: {string: "Foo", type: "char", default: "My little Foo Value"},
- bar: {string: "Bar", type: "boolean", default: true},
- int_field: {string: "int_field", type: "integer", sortable: true},
- qux: {string: "Qux", type: "float", digits: [16,1] },
- p: {string: "one2many field", type: "one2many", relation: 'partner', relation_field: 'trululu'},
- trululu: {string: "Trululu", type: "many2one", relation: 'partner'},
- partner_ids: {string: "many2many field", type: "many2many", relation: 'partner'},
- },
- records: [{
- id: 1,
- display_name: "first record",
- bar: true,
- foo: "yop",
- int_field: 10,
- qux: 0.44,
- p: [],
- trululu: 4,
- }, {
- id: 2,
- display_name: "second record",
- bar: true,
- foo: "blip",
- int_field: 9,
- qux: 13,
- p: [],
- trululu: 1,
- }, {
- id: 4,
- display_name: "aaa",
- bar: false,
- }],
- onchanges: {},
- },
- };
- }
-}, function () {
-
- QUnit.module('FieldOne2Many');
-
- QUnit.test('one2many kanban: deletion in mobile', async function (assert) {
- assert.expect(9);
-
- this.data.partner.records[0].p = [1, 2];
- var form = await createView({
- View: FormView,
- model: 'partner',
- data: this.data,
- arch: '<form string="Partners">' +
- '<field name="p">' +
- '<kanban>' +
- '<templates>' +
- '<t t-name="kanban-box">' +
- '<div class="oe_kanban_global_click">' +
- '<field name="display_name"/>' +
- '</div>' +
- '</t>' +
- '</templates>' +
- '</kanban>' +
- '<form string="Partners">' +
- '<field name="display_name"/>' +
- '</form>' +
- '</field>' +
- '</form>',
- res_id: 1,
- mockRPC: function (route, args) {
- if (route === '/web/dataset/call_kw/partner/write') {
- var commands = args.args[1].p;
- assert.strictEqual(commands.length, 2,
- 'should have generated two commands');
- assert.ok(commands[0][0] === 4 && commands[0][1] === 2,
- 'should have generated the command 2 (DELETE) with id 1');
- assert.ok(commands[1][0] === 2 && commands[1][1] === 1,
- 'should have generated the command 2 (DELETE) with id 2');
- }
- return this._super.apply(this, arguments);
- },
- });
-
- assert.containsNone(form, '.o_field_one2many .o-kanban-button-new',
- '"Create" button should not be visible in readonly');
-
- await testUtils.form.clickEdit(form);
-
- assert.containsOnce(form, '.o_field_one2many .o-kanban-button-new',
- '"Create" button should be visible in edit');
- assert.strictEqual(form.$('.o_kanban_record:not(.o_kanban_ghost)').length, 2,
- "should have 2 records");
-
- // open and delete record
- await testUtils.dom.click(form.$('.oe_kanban_global_click').first());
- assert.strictEqual($('.modal .modal-footer .o_btn_remove').length, 1,
- 'there should be a Remove button in the modal footer');
- await testUtils.dom.click($('.modal .modal-footer .o_btn_remove'));
- assert.strictEqual($('.o_modal').length, 0, "there shoul be no more modal");
- assert.strictEqual(form.$('.o_kanban_record:not(.o_kanban_ghost)').length, 1,
- 'should contain 1 records');
-
- // save and check that the correct command has been generated
- await testUtils.form.clickSave(form);
- form.destroy();
- });
-
- QUnit.module('FieldMany2Many');
-
- QUnit.test('many2many kanban: deletion in mobile', async function (assert) {
- assert.expect(8);
- this.data.partner.records[0].partner_ids = [2, 4];
- var form = await createView({
- View: FormView,
- model: 'partner',
- data: this.data,
- arch: '<form string="Partners">' +
- '<field name="display_name"/>' +
- '<field name="partner_ids">' +
- '<kanban>' +
- '<field name="display_name"/>' +
- '<templates>' +
- '<t t-name="kanban-box">' +
- '<div class="oe_kanban_global_click">' +
- '<span><t t-esc="record.display_name.value"/></span>' +
- '</div>' +
- '</t>' +
- '</templates>' +
- '</kanban>' +
- '<form string="Partners">' +
- '<field name="display_name"/>' +
- '</form>' +
- '</field>' +
- '</form>',
- res_id: 1,
- mockRPC: function (route, args) {
- if (route === '/web/dataset/call_kw/partner/write') {
- var commands = args.args[1].partner_ids;
- assert.strictEqual(commands.length, 1,
- 'should have generated one commands');
- assert.deepEqual(commands[0], [6, false, [4]] ,
- 'should properly write ids');
- }
- return this._super.apply(this, arguments);
- },
- });
- assert.containsNone(form.$('.o_field_many2many .o-kanban-button-new'),
- '"Add" button should not be visible in readonly');
- await testUtils.form.clickEdit(form);
- assert.containsOnce(form, '.o_field_many2many .o-kanban-button-new',
- '"Add" button should be visible in edit');
- assert.containsN(form, '.o_kanban_record:not(.o_kanban_ghost)', 2,
- "should have 2 records");
- // open and delete record
- await testUtils.dom.click(form.$('.oe_kanban_global_click').first());
- assert.strictEqual($('.modal .modal-footer .o_btn_remove').length, 1,
- 'there should be a modal having "Remove" Button');
- await testUtils.dom.click($('.modal .modal-footer .o_btn_remove'));
- assert.containsNone($('.o_modal'), "modal should have been closed");
- assert.containsOnce(form, '.o_kanban_record:not(.o_kanban_ghost)',
- 'should contain 1 records');
- // save and check that the correct command has been generated
- await testUtils.form.clickSave(form);
- form.destroy();
- });
-});
-});
-});
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index 7284b9099d8..7f3f54e3ad7 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -1191,7 +1191,7 @@ QUnit.module('relational_fields', {
});
QUnit.test('required selection widget should not have blank option', async function (assert) {
- assert.expect(3);
+ assert.expect(12);
this.data.partner.fields.feedback_value = {
type: "selection",
@@ -1212,15 +1212,38 @@ QUnit.module('relational_fields', {
});
await testUtils.form.clickEdit(form);
- assert.strictEqual(form.$('.o_field_widget[name=color]')[0].options.length, 3,
- "non required selection field must have 3 options 1 blank option and 2 value options");
- assert.strictEqual(form.$('.o_field_widget[name=feedback_value]')[0].options.length, 2,
- "should have only 2 options without blank option");
+
+ var $colorField = form.$('.o_field_widget[name=color]');
+ assert.containsN($colorField, 'option', 3, "Three options in non required field");
+
+ assert.hasAttrValue($colorField.find('option:first()'), 'style', "",
+ "Should not have display=none");
+ assert.hasAttrValue($colorField.find('option:eq(1)'), 'style', "",
+ "Should not have display=none");
+ assert.hasAttrValue($colorField.find('option:eq(2)'), 'style', "",
+ "Should not have display=none");
+
+ const $requiredSelect = form.$('.o_field_widget[name=feedback_value]');
+
+ assert.containsN($requiredSelect, 'option', 3, "Three options in required field");
+ assert.hasAttrValue($requiredSelect.find('option:first()'), 'style', "display: none",
+ "Should have display=none");
+ assert.hasAttrValue($requiredSelect.find('option:eq(1)'), 'style', "",
+ "Should not have display=none");
+ assert.hasAttrValue($requiredSelect.find('option:eq(2)'), 'style', "",
+ "Should not have display=none");
// change value to update widget modifier values
- await testUtils.fields.editSelect(form.$('.o_field_widget[name=feedback_value]'), '"bad"');
- assert.strictEqual(form.$('.o_field_widget[name=color]')[0].options.length, 2,
- "should have only 2 options");
+ await testUtils.fields.editSelect($requiredSelect, '"bad"');
+ $colorField = form.$('.o_field_widget[name=color]');
+
+ assert.containsN($colorField, 'option', 3, "Three options in required field");
+ assert.hasAttrValue($colorField.find('option:first()'), 'style', "display: none",
+ "Should have display=none");
+ assert.hasAttrValue($colorField.find('option:eq(1)'), 'style', "",
+ "Should not have display=none");
+ assert.hasAttrValue($colorField.find('option:eq(2)'), 'style', "",
+ "Should not have display=none");
form.destroy();
});
diff --git a/addons/web/static/tests/fields/signature.js b/addons/web/static/tests/fields/signature.js
index fc85832da15..fcc3b67074f 100644
--- a/addons/web/static/tests/fields/signature.js
+++ b/addons/web/static/tests/fields/signature.js
@@ -1,6 +1,8 @@
odoo.define('web.signature_field_tests', function (require) {
"use strict";
+var ajax = require('web.ajax');
+var core = require('web.core');
var FormView = require('web.FormView');
var testUtils = require('web.test_utils');
@@ -37,7 +39,11 @@ QUnit.module('signature', {
}
}, function () {
- QUnit.module('Signature Field');
+ QUnit.module('Signature Field', {
+ before: function () {
+ return ajax.loadXML('/web/static/src/xml/name_and_signature.xml', core.qweb);
+ },
+ });
QUnit.test('Set simple field in "full_name" node option', async function (assert) {
assert.expect(3);
@@ -65,8 +71,6 @@ QUnit.module('signature', {
"should have a valid signature widget");
// Click on the widget to open signature modal
await testUtils.dom.click(form.$('div[name=sign] div.o_signature'));
- await testUtils.nextTick(); // dialog xmlDependencies load
-- await testUtils.nextTick(); // name_and_signature xmlDependencies load
assert.strictEqual($('.modal .modal-body a.o_web_sign_auto_button').length, 1,
'should open a modal with "Auto" button');
assert.strictEqual($('.modal .modal-body .o_web_sign_name_input').val(), "Pop's Chock'lit",
@@ -101,8 +105,6 @@ QUnit.module('signature', {
"should have a valid signature widget");
// Click on the widget to open signature modal
await testUtils.dom.click(form.$('div[name=sign] div.o_signature'));
- await testUtils.nextTick(); // dialog xmlDependencies load
-- await testUtils.nextTick(); // name_and_signature xmlDependencies load
assert.strictEqual($('.modal .modal-body a.o_web_sign_auto_button').length, 1,
'should open a modal with "Auto" button');
assert.strictEqual($('.modal .modal-body .o_web_sign_name_input').val(), "Veggie Burger",