summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/core/widget_tests.js
AgeCommit message (Collapse)Author
2021-02-10[FIX] web: call do_hide/do_show on a destroyed widgetAaron Bohy
Before this commit, calling do_hide/do_show/do_toggle on a widget that had been destroyed before being rendered crashed (because this.$el was undefined). Obviously, calling those methods in this situation is useless, but with asynchronous code, it might happen that you call them in an handler, and they have been destroyed meanwhile. This commit checks if this.$el is set before accessing it to avoid the crash. closes odoo/odoo#65889 X-original-commit: 320c29f5b37d4f02b4d5f7b1b6ff64462b000c92 Signed-off-by: Géry Debongnie (ged) <ged@openerp.com>
2020-06-12[FIX] *: adapt tests to env reworkAaron Bohy
This commit adapts tests following recent changes on the helpers. The main change is that addMockEnvironment (and all functions using it) are now async, as they need to wait for services to be started.
2019-11-07[FIX] web: prevent destroyed widget from calling start (2)qsm-odoo
This completes a commit that was made for the version saas-11.3 (12.0): https://github.com/odoo/odoo/commit/1440c8be0337c89e3d67d6d93e614c269c8689f1 Indeed, the logic was implemented for the appendTo, prependTo, etc methods but not for the attachTo... This could solve unknown problems in stable versions as well but was judged too risky to merge there. Indeed, if a real problem occurs in a stable version because of this, the condition can be added to the related widget individually. The problem was found in master: during website edition, the public widgets can be restarted if an element is edited... but sometimes the public widgets may be restarted in the same JS stack execution. The willStart method being async, the destroy method was called before the start method. This does not lead not any known problem with our current widgets but will create one for a new snippet being implemented. closes odoo/odoo#39949 Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2019-07-30[FIX] web: restore modal backdrops click behaviorqsm-odoo
Since https://github.com/odoo/odoo/commit/2ad49ec93e39ae5d59ccc17884408870e1c86c5e, all dialogs were able to be closed by clicking on the backdrop which was not a desired behavior. Indeed, the 'backdrop' option of the BS component was misused. closes odoo/odoo#35300 Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2019-05-23[REF] web: don't destroy twice a widget's childrenPierre Paridans
Widget class indirectly inherits from ParentedMixin (through PropertiesMixin). The Widget's children are destroyed in both the ParentedMixin and the Widget's own destroy() method. This commit prevents from trying to destroy already destroyed children and specifically from looping again on those children (resulting into a minor performance improvement). closes odoo/odoo#32174 Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
2019-03-06[REF] web: adapt code after jQuery updateVincent Schippefilt
Part of task 1896658 Co-authored-by: Aaron Bohy <aab@odoo.com> Co-authored-by: Christophe Matthieu <chm@odoo.com> Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com> Co-authored-by: David Monjoie <dmo@odoo.com> Co-authored-by: Martin Geubelle <mge@odoo.com> Co-authored-by: svs-odoo <svs@odoo.com> Co-authored-by: Vincent Schippefilt <vsc@odoo.com>
2019-02-21[MERGE] forward port branch 12.0 up to 84143a34b31Christophe Simonis
2019-02-04[FIX] web: undestroyed widgets in testsXavier Morel
closes odoo/odoo#30794
2018-11-19[REF] *: update js test suite to use helpersGéry Debongnie
This rev. introduces robust helpers to use in the JS tests suite to interact with DOM and components, and starts using them (almost) everywhere. All the helpers are exposed though testUtils.js. There are 2 kinds of helpers: 1. Assertions ------------- * assert.containsNone, containsN, containsOnce check that the DOM (or a specific part of the DOM) contains a `selector`. It generates a correct error message automatically. ex: assert.strictEqual(form.$('.o_form_editable'), 1, "msg"); -> assert.containsOnce(form, '.o_form_editable'); * assert.isVisible, isNotVisible check that the DOM has an element visible or not. They also check that the element is actually in the DOM (before most tests didn't verify this). * assert.hasClass, doesNotHaveClass, hasAttrVAlue, check specific properties of a DOM element, and also validate that it is applied on a single existing DOM element (before most tests didn't verify this). ex: assert.notOk(form.$('button').hasClass('btn-primary')); -> assert.doesNotHaveClass(form.$('button'), 'btn-primary'); 2. Utilities ------------ The goal of the utilities is to centralize the definition of many standard components and interactions, ensuring that when we refactor the JS framework, we do not need to change all the tests. Existing mock utilities (addMockEnvironment, intercept, path, patchDate, unpatch and fieldsViewGet) are moved to 'testUtils.mock.*'. Existing DOM utilities are moved to 'testUtils.dom.*'. New dom utilities are created for opendDatePicker, click, clickFirst and clickLast. Helper `click` verifies that there is exactly 1 element visible in the DOM you click on, `clickFirst` and `clickLast` verify that there are more than one element on the DOM. ex: form.$('button').click(); -> testUtils.dom.click(form.$('button')); New Form utilities: (testUtils.form.*) clickEdit, clickSave, clickCreate, clickDiscard, all clicks on the control panel buttons of the form. `reload` reloads the form data. New modal, graph, kanban and pivot utils (testUtils.pivot.*, testUtils.kanban.*, etc.). New fields utils: (testUtils.fields.*) * editInput, editSelect: allow to change the value of a field, using a selector to identify it. They validate that the input exists and trigger the change event automatically. * editAndTrigger: allow to modify a field and trigger specific events after the value change * many2one (testUtils.fields.many2one.*) clickOpenDropdown, clickHighlightedItem, clickItem, searchAndClickItem: use a field name instead of a selector and do all the complex mechanism to open, filter and highlight many2one fields. Joint work with aab, dam, ged, mge, svs and vsc.
2018-09-14[FIX] web: tests: adapt JS tests from forward-port ↵Alexandre Kühn
9c77066f345360429a0920ca4d17af1f84a7ebea The test was failing because it was using an old approach to mock services in JS tests. Also, it provides ajax service in the list of services, which was not supported in a mocked environment. With this commit, when an ajax service is provided in the test, it will use this service instead of using mocked RPCs from the mocked server.
2018-09-10[FIX] web: ajax must return a promise with abort methodChristophe Matthieu
Remove part in service_mixins who hide this error. Queries must be able to be canceled for better performance. Also in the case of longpolling, if the request is not canceled, wait for a server message or the maximum time (30 sec) to add or delete channels.
2018-04-12[FIX] web: prevent destroyed widget from calling startGéry Debongnie
Whenever a widget is destroyed, it should be as inactive as possible. Before this commit, it could happen that a widget was destroyed after the willstart method, but before the start method. In that case, bad things could happen. For example, the discuss client action tries to look up some information into the session, with the getSession method. This causes a crash whenever the widget is destroyed.
2017-12-04[REF] web: update widget to new guidelinesGéry Debongnie
- make delegate/undelegate events private - remove $el before start - make replaceElement private - remove one _ from __render_and_insert... method - update documentation - remove make and improve make_descriptive (also, it is private) - ...
2017-04-11[REF] account, web, web_diagram: rename static test folderGéry Debongnie
For consistency, every static test folder should be named 'tests', with a s.