[FIX] barcodes: use patch to prevent interactions between tests

There is a subtle issue happening in tests when we override a widget
property for the duration of the test and try to restore the initial state at
the end by rewriting on the property.  It actually changes the widget, by
having a function bound to the sub widget prototype instead of its ancestor.
This in turns can cause weird interactions with the class system.

We introduced a proper way to temporarily patch a class/widget by adding
a method in testUtils to do exactly that.  This commit simply uses that
method to prevent unwanted interactions in barcode tests
This commit is contained in:
Géry Debongnie
2017-12-18 17:29:14 +01:00
parent fa9f58d6ce
commit 0c98951f1c
@@ -164,11 +164,12 @@ QUnit.test('do no update form twice after a command barcode scanned', function (
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);
};
testUtils.patch(FormController, {
update: function () {
assert.step('update');
return this._super.apply(this, arguments);
},
});
var form = createView({
View: FormView,
@@ -206,7 +207,7 @@ QUnit.test('do no update form twice after a command barcode scanned', function (
form.destroy();
barcodeEvents.BarcodeEvents.max_time_between_keys_in_ms = delay;
FormController.prototype.update = formUpdate;
testUtils.unpatch(FormController);
});
QUnit.test('widget field_float_scannable', function (assert) {