diff options
Diffstat (limited to 'addons/barcodes/static/tests/barcode_tests.js')
| -rw-r--r-- | addons/barcodes/static/tests/barcode_tests.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/addons/barcodes/static/tests/barcode_tests.js b/addons/barcodes/static/tests/barcode_tests.js index 5489d0d7fb6..ac9ff367d45 100644 --- a/addons/barcodes/static/tests/barcode_tests.js +++ b/addons/barcodes/static/tests/barcode_tests.js @@ -4,6 +4,7 @@ odoo.define('barcodes.tests', function (require) { var barcodeEvents = require('barcodes.BarcodeEvents'); var testUtils = require('web.test_utils'); +var FormController = require('web.FormController'); var FormView = require('web.FormView'); var createView = testUtils.createView; @@ -121,6 +122,56 @@ QUnit.test('pager buttons', function (assert) { form.destroy(); }); +QUnit.test('do no update form twice after a command barcode scanned', function (assert) { + assert.expect(7); + + var delay = barcodeEvents.BarcodeEvents.max_time_between_keys_in_ms; + barcodeEvents.BarcodeEvents.max_time_between_keys_in_ms = 0; + var formUpdate = FormController.prototype.update; + FormController.prototype.update = function () { + assert.step('update'); + return formUpdate.apply(this, arguments); + }; + + var form = createView({ + View: FormView, + model: 'product', + data: this.data, + arch: '<form>' + + '<field name="display_name"/>' + + '<field name="int_field" widget="field_float_scannable"/>' + + '</form>', + mockRPC: function (route, args) { + if (args.method === 'read') { + assert.step('read'); + } + return this._super.apply(this, arguments); + }, + res_id: 1, + viewOptions: { + ids: [1, 2], + index: 0, + }, + }); + + assert.verifySteps(['read'], "update should not have been called yet"); + + // switch to next record + _.each(["O","-","C","M","D",".","P","A","G","E","R","-","N","E","X","T","Enter"], triggerKeypressEvent); + // a first update is done to reload the data (thus followed by a read), but + // update shouldn't be called afterwards + assert.verifySteps(['read', 'update', 'read']); + + _.each(['5','4','3','9','8','2','6','7','1','2','5','2','Enter'], triggerKeypressEvent); + // a real barcode has been scanned -> an update should be requested (with + // option reload='false', so it isn't followed by a read) + assert.verifySteps(['read', 'update', 'read', 'update']); + + form.destroy(); + barcodeEvents.BarcodeEvents.max_time_between_keys_in_ms = delay; + FormController.prototype.update = formUpdate; +}); + QUnit.test('widget field_float_scannable', function (assert) { var done = assert.async(); assert.expect(11); |
