odoo.define('barcodes.barcode_mobile_tests', function () { "use strict"; QUnit.module('Barcodes', {}, function () { QUnit.module('Barcodes Mobile'); QUnit.test('barcode field automatically focus behavior', function (assert) { assert.expect(10); // Mock Chrome mobile environment var barcodeEvents = odoo.__DEBUG__.services["barcodes.BarcodeEvents"].BarcodeEvents; var __isChromeMobile = barcodeEvents.isChromeMobile; barcodeEvents.isChromeMobile = true; // Rebind keyboard events barcodeEvents.stop(); barcodeEvents.start(); var $form = $( '
'); $('#qunit-fixture').append($form); // Some elements doesn't need to keep the focus $('body').keydown(); assert.strictEqual(document.activeElement.name, 'barcode', "hidden barcode input should have the focus"); var $element = $form.find('select'); $element.focus().keydown(); assert.strictEqual(document.activeElement.name, 'barcode', "hidden barcode input should have the focus"); // Those elements absolutely need to keep the focus: // inputs elements: var keepFocusedElements = ['email', 'number', 'password', 'tel', 'text', 'explicit_text']; for (var i = 0; i < keepFocusedElements.length; ++i) { $element = $form.find('input[name=' + keepFocusedElements[i] + ']'); $element.focus().keydown(); assert.strictEqual(document.activeElement, $element[0], "input " + keepFocusedElements[i] + " should keep focus"); } // textarea element $element = $form.find('textarea'); $element.focus().keydown(); assert.strictEqual(document.activeElement, $element[0], "textarea should keep focus"); // contenteditable elements $element = $form.find('[contenteditable=true]'); $element.focus().keydown(); assert.strictEqual(document.activeElement, $element[0], "contenteditable should keep focus"); $('#qunit-fixture').empty(); barcodeEvents.isChromeMobile = __isChromeMobile; // Rebind keyboard events barcodeEvents.stop(); barcodeEvents.start(); document.querySelector('input[name=barcode]').remove(); }); }); });