summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/fields
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/tests/fields')
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_many2many_tests.js9
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_many2one_tests.js91
-rw-r--r--addons/web/static/tests/fields/relational_fields/field_one2many_tests.js8
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js9
4 files changed, 92 insertions, 25 deletions
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 47fe687d773..d7d18dfb86b 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
@@ -1314,8 +1314,7 @@ QUnit.module('fields', {}, function () {
});
await testUtils.form.clickEdit(form);
- await testUtils.fields.many2one.clickOpenDropdown('timmy');
- await testUtils.fields.many2one.clickItem('timmy','Create and Edit');
+ await testUtils.fields.many2one.createAndEdit('timmy',"Ralts");
assert.containsOnce($(document), '.modal .o_form_view', "should have opened the modal");
// Create multiple records with save & new
@@ -1454,8 +1453,8 @@ QUnit.module('fields', {}, function () {
await testUtils.fields.many2one.clickOpenDropdown('partner_ids');
const $dropdown1 = form.$('.o_field_many2one input').autocomplete('widget');
- assert.containsOnce($dropdown1, 'li.o_m2o_dropdown_option:contains(Create and Edit...)',
- 'autocomplete should contain Create and Edit...');
+ assert.containsOnce($dropdown1, 'li.o_m2o_start_typing:contains(Start typing...)',
+ 'autocomplete should contain Start typing...');
await testUtils.fields.many2one.clickItem('partner_ids', 'Search More');
@@ -1468,7 +1467,7 @@ QUnit.module('fields', {}, function () {
await testUtils.fields.editAndTrigger(form.$('.o_field_many2one input'),
'Something that does not exist', 'keydown');
// await testUtils.nextTick();
- assert.containsN($dropdown1, 'li.o_m2o_dropdown_option', 2,
+ assert.containsN(form.$('.o_field_many2one input').autocomplete('widget'), 'li.o_m2o_dropdown_option', 2,
'autocomplete should contain Create and Create and Edit... options');
// set turtle_bar false -> create and delete actions are no longer available
diff --git a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js
index b43e2e102a1..856019092fe 100644
--- a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js
+++ b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js
@@ -625,8 +625,7 @@ QUnit.module('fields', {}, function () {
assert.strictEqual(document.activeElement, input, "Input should be focused when activated");
- await testUtils.fields.many2one.clickOpenDropdown('trululu');
- await testUtils.fields.many2one.clickItem('trululu', 'Create');
+ await testUtils.fields.many2one.createAndEdit('trululu', "ABC");
// At this point, if the focus is correctly registered by the m2o, there
// should be only one modal (the "Create" one) and none for saving changes.
@@ -667,8 +666,78 @@ QUnit.module('fields', {}, function () {
form.destroy();
});
+ QUnit.test('empty many2one field', async function (assert) {
+ assert.expect(4);
+
+ const form = await createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: `<form string="Partners">
+ <sheet>
+ <group>
+ <field name="trululu"/>
+ </group>
+ </sheet>
+ </form>`,
+ viewOptions: {
+ mode: 'edit',
+ },
+ });
+
+ const $dropdown = form.$('.o_field_many2one input').autocomplete('widget');
+ await testUtils.fields.many2one.clickOpenDropdown('trululu');
+ assert.containsNone($dropdown, 'li.o_m2o_dropdown_option',
+ 'autocomplete should not contains dropdown options');
+ assert.containsOnce($dropdown, 'li.o_m2o_start_typing',
+ 'autocomplete should contains start typing option');
+
+ await testUtils.fields.editAndTrigger(form.$('.o_field_many2one[name="trululu"] input'),
+ 'abc', 'keydown');
+ await testUtils.nextTick();
+ assert.containsN($dropdown, 'li.o_m2o_dropdown_option', 2,
+ 'autocomplete should contains 2 dropdown options');
+ assert.containsNone($dropdown, 'li.o_m2o_start_typing',
+ 'autocomplete should not contains start typing option');
+
+ form.destroy();
+ });
+
+ QUnit.test('empty many2one field with node options', async function (assert) {
+ assert.expect(2);
+
+ const form = await createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: `<form string="Partners">
+ <sheet>
+ <group>
+ <field name="trululu" options="{'no_create_edit': 1}"/>
+ <field name="product_id" options="{'no_create_edit': 1, 'no_quick_create': 1}"/>
+ </group>
+ </sheet>
+ </form>`,
+ viewOptions: {
+ mode: 'edit',
+ },
+ });
+
+ const $dropdownTrululu = form.$('.o_field_many2one[name="trululu"] input').autocomplete('widget');
+ const $dropdownProduct = form.$('.o_field_many2one[name="product_id"] input').autocomplete('widget');
+ await testUtils.fields.many2one.clickOpenDropdown('trululu');
+ assert.containsOnce($dropdownTrululu, 'li.o_m2o_start_typing',
+ 'autocomplete should contains start typing option');
+
+ await testUtils.fields.many2one.clickOpenDropdown('product_id');
+ assert.containsNone($dropdownProduct, 'li.o_m2o_start_typing',
+ 'autocomplete should contains start typing option');
+
+ form.destroy();
+ });
+
QUnit.test('many2one in edit mode', async function (assert) {
- assert.expect(16);
+ assert.expect(17);
// create 10 partners to have the 'Search More' option in the autocomplete dropdown
for (var i = 0; i < 10; i++) {
@@ -716,9 +785,11 @@ QUnit.module('fields', {}, function () {
assert.ok($dropdown.is(':visible'),
'clicking on the m2o input should open the dropdown if it is not open yet');
assert.strictEqual($dropdown.find('li:not(.o_m2o_dropdown_option)').length, 7,
- 'autocomplete should contains 7 suggestions');
- assert.strictEqual($dropdown.find('li.o_m2o_dropdown_option').length, 2,
- 'autocomplete should contain "Search More" and Create and Edit..."');
+ 'autocomplete should contains 8 suggestions');
+ assert.strictEqual($dropdown.find('li.o_m2o_dropdown_option').length, 1,
+ 'autocomplete should contain "Search More"');
+ assert.containsNone($dropdown, 'li.o_m2o_start_typing',
+ 'autocomplete should not contains start typing option if value is available');
await testUtils.fields.many2one.clickOpenDropdown('trululu');
assert.ok(!$dropdown.is(':visible'),
@@ -808,9 +879,7 @@ QUnit.module('fields', {}, function () {
},
});
- // click on 'Create and Edit' in m2o dropdown
- await testUtils.fields.many2one.clickOpenDropdown('product_id');
- await testUtils.fields.many2one.clickItem('product_id', 'Create and Edit');
+ await testUtils.fields.many2one.createAndEdit('product_id', "ABC");
assert.containsOnce(document.body, '.modal .o_form_view');
// quick create 'new value'
@@ -891,8 +960,8 @@ QUnit.module('fields', {}, function () {
await testUtils.fields.many2one.clickOpenDropdown('trululu');
assert.isVisible($dropdown);
- assert.containsN($dropdown, 'li:not(.o_m2o_dropdown_option)', 3,
- 'autocomplete should contains 3 suggestions');
+ assert.containsN($dropdown, 'li:not(.o_m2o_dropdown_option)', 4,
+ 'autocomplete should contains 4 suggestions');
// search with leading spaces
form.$('.o_field_many2one input').val(' first').trigger('keydown').trigger('keyup');
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 c2801eb9ac1..f3e5b036fb5 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
@@ -264,7 +264,7 @@ QUnit.module('fields', {}, function () {
});
QUnit.test('O2M with parented m2o and domain on parent.m2o', async function (assert) {
- assert.expect(3);
+ assert.expect(4);
/* records in an o2m can have a m2o pointing to themselves
* in that case, a domain evaluation on that field followed by name_search
@@ -299,8 +299,7 @@ QUnit.module('fields', {}, function () {
await testUtils.dom.click(form.$('.o_field_x2many_list[name=turtles] .o_field_x2many_list_row_add a'));
- await testUtils.fields.many2one.clickOpenDropdown('parent_id');
- await testUtils.fields.many2one.clickHighlightedItem('parent_id');
+ await testUtils.fields.many2one.createAndEdit('parent_id');
var $modal = $('.modal-content');
@@ -8131,8 +8130,7 @@ QUnit.module('fields', {}, function () {
assert.containsOnce(form, '.o_selected_row',
"should have create a new row in edition");
- await testUtils.fields.many2one.clickOpenDropdown('turtle_trululu');
- await testUtils.fields.many2one.clickItem('turtle_trululu','Create and Edit...');
+ await testUtils.fields.many2one.createAndEdit('turtle_trululu', "ABC");
assert.strictEqual($('.modal .o_form_view').length, 1,
"should have opened a form view in a dialog");
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index c5a1e5765e4..bbbf74f5b7b 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -1370,8 +1370,8 @@ QUnit.module('relational_fields', {
// add an other existing tag
var $input = form.$('.o_field_many2manytags input');
await testUtils.fields.many2one.clickOpenDropdown('timmy');
- assert.strictEqual($input.autocomplete('widget').find('li').length, 1,
- "autocomplete dropdown should have 1 entry");
+ assert.strictEqual($input.autocomplete('widget').find('li').length, 2,
+ "autocomplete dropdown should have 2 entry");
assert.strictEqual($input.autocomplete('widget').find('li a:contains("red")').length, 1,
"autocomplete dropdown should contain 'red'");
await testUtils.fields.many2one.clickHighlightedItem('timmy');
@@ -1479,8 +1479,8 @@ QUnit.module('relational_fields', {
// add an other existing tag
var $input = form.$('.o_field_many2manytags input');
await testUtils.fields.many2one.clickOpenDropdown('timmy');
- assert.strictEqual($input.autocomplete('widget').find('li').length, 1,
- "autocomplete dropdown should have 1 entry");
+ assert.strictEqual($input.autocomplete('widget').find('li').length, 2,
+ "autocomplete dropdown should have 2 entry");
assert.strictEqual($input.autocomplete('widget').find('li a:contains("silver")').length, 1,
"autocomplete dropdown should contain 'silver'");
await testUtils.fields.many2one.clickHighlightedItem('timmy');
@@ -3452,6 +3452,7 @@ QUnit.module('relational_fields', {
relationalFields.FieldMany2One.prototype.AUTOCOMPLETE_DELAY = 0;
await testUtils.dom.click(form.$el.find('.o_input_dropdown>input'));
+ await testUtils.fields.editInput(form.$('.o_field_many2one input'), 'ABC');
// click create and edit
await testUtils.dom.click($('.ui-autocomplete .ui-menu-item a:contains(Create and)').trigger('mouseenter'));