summaryrefslogtreecommitdiff
path: root/addons/web/static/test/fields/basic_fields_tests.js
diff options
context:
space:
mode:
authorAaron Bohy <aab@odoo.com>2017-03-30 13:06:38 +0200
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commit2169a585dde01761567ef3baff685b12a09b03e9 (patch)
treef8b697783ff45751796ceb53fcfde1e98a00eb3a /addons/web/static/test/fields/basic_fields_tests.js
parent4a9ca16369933fa92b211932a26892cf766aefae (diff)
[FIX] web: debounce field changes for FieldText
like done previously for input fields.
Diffstat (limited to 'addons/web/static/test/fields/basic_fields_tests.js')
-rw-r--r--addons/web/static/test/fields/basic_fields_tests.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/addons/web/static/test/fields/basic_fields_tests.js b/addons/web/static/test/fields/basic_fields_tests.js
index b1488e72a0b..1596aeb786c 100644
--- a/addons/web/static/test/fields/basic_fields_tests.js
+++ b/addons/web/static/test/fields/basic_fields_tests.js
@@ -689,6 +689,67 @@ QUnit.module('basic_fields', {
list.destroy();
});
+ QUnit.test('field changes are correctly debounced in text fields', function (assert) {
+ var done = assert.async();
+ assert.expect(5);
+
+ this.data.partner.fields.foo.type = 'text';
+
+ var def = $.Deferred();
+ var nbNotifyChanges = 0;
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form string="Partners">' +
+ '<field name="foo"/>' +
+ '</form>',
+ res_id: 2,
+ fieldDebounce: 3,
+ });
+
+ var _onFieldChanged = form._onFieldChanged;
+ form._onFieldChanged = function () {
+ _onFieldChanged.apply(form, arguments);
+ nbNotifyChanges++;
+ def.resolve();
+ };
+
+ form.$buttons.find('.o_form_button_edit').click();
+
+ form.$('textarea').val("1").trigger('input');
+ assert.strictEqual(nbNotifyChanges, 0,
+ "no event should have been triggered");
+ form.$('textarea').val("12").trigger('input');
+ assert.strictEqual(nbNotifyChanges, 0,
+ "no event should have been triggered");
+
+ return waitForChangeTriggered().then(function () {
+ assert.strictEqual(nbNotifyChanges, 1,
+ "one event should have been triggered");
+
+ // add something in the textarea, then focus another input
+ form.$('textarea').first().val("123").trigger('input');
+ form.$('textarea').first().change();
+ assert.strictEqual(nbNotifyChanges, 2,
+ "one event should have been triggered immediately");
+
+ return waitForChangeTriggered();
+ }).then(function () {
+ assert.strictEqual(nbNotifyChanges, 2,
+ "no extra event should have been triggered");
+
+ form.destroy();
+ done();
+ });
+
+ function waitForChangeTriggered() {
+ return def.then(function () {
+ def = $.Deferred();
+ return concurrency.delay(0);
+ });
+ }
+ });
QUnit.module('JournalDashboardGraph');