diff options
| author | Yannick Tivisse <yti@odoo.com> | 2019-06-27 11:34:29 +0200 |
|---|---|---|
| committer | Yannick Tivisse <yti@odoo.com> | 2019-06-27 11:34:29 +0200 |
| commit | a5b08d5ea52b28d334afb3bd65ccfb17c25dff01 (patch) | |
| tree | 97983316d97bfa05907c37a742ab1115acc87d56 /addons/web/static/src | |
| parent | b2eceae7c927d1b908f8e90e6a911430a7ccfce7 (diff) | |
| parent | d8f95609eb7dd18109856cfa0ae8fdb1080ce959 (diff) | |
[MERGE] web, hr, test_website: Add multi-company tests
test_website: Add multi-company test
=============================
Purpose
------------
This commit tests some behaviors with multi company
mode after changes brought by f847a46.
Specification
-------------------
The website company should be automatically set in the
context as 'allowed_company_ids'.
That way, we can remove the switch company menu on the
website, which doesn't make a lot of sense.
This test enforce this behavior.
web: Add QUnit tests for the SwitchCompanyMenu
=========================================
Purpose
------------
This commit tests some behaviors with multi company
mode after changes brought by f847a46.
Specification
------------------
Ensure the robustness of the switch company menu for
multiple cases like:
- Bar rendering
- Switch to another company in mono/multi environment
- Toggle another company in mono/multi environment
- Remove a company in mono/multi environment
The widget itself has been slighty modified to make
it more testable:
- Reading from session is now in the `willStart` function
instead of `init` to allow mocking the session (in tests,
`init` is executed before the mock is applied).
- In the event handlers, don't use `bbq` to retrieve
current allowed company ids. `bbq` is not easily nor
cleanly patched.
- When reading allowed company ids from session, cast
ids from string to integer. They are everywhere casted
except there.
and some linting
hr: Add multi company tests
======================
Purpose
-------------
This commit tests some behaviors with multi company
mode after changes brought by f847a46.
Specification
------------------
Check that a report printing for several records on
different companies:
- Works if the context is correctly set, i.e. both
companies are in the allowed_company_ids
- Doesn't work if the context is not correctly set
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/widgets/switch_company_menu.js | 33 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 8 |
2 files changed, 21 insertions, 20 deletions
diff --git a/addons/web/static/src/js/widgets/switch_company_menu.js b/addons/web/static/src/js/widgets/switch_company_menu.js index 62e2a27f3d0..75bc918768b 100644 --- a/addons/web/static/src/js/widgets/switch_company_menu.js +++ b/addons/web/static/src/js/widgets/switch_company_menu.js @@ -25,21 +25,25 @@ var SwitchCompanyMenu = Widget.extend({ * @override */ init: function () { - var self = this; this._super.apply(this, arguments); this.isMobile = config.device.isMobile; this._onSwitchCompanyClick = _.debounce(this._onSwitchCompanyClick, 1500, true); - this.allowed_company_ids = String(session.user_context.allowed_company_ids).split(','); - this.user_companies = session.user_companies.allowed_companies; + }, - var hash = $.bbq.getState() - if (!hash.cids || hash.cids === undefined) { - hash.cids = String(session.user_companies.current_company[0]); - } - this.current_company = parseInt(hash.cids.split(',')[0]); + /** + * @override + */ + willStart: function () { + var self = this; + this.allowed_company_ids = String(session.user_context.allowed_company_ids) + .split(',') + .map(function (id) {return parseInt(id);}); + this.user_companies = session.user_companies.allowed_companies; + this.current_company = this.allowed_company_ids[0]; this.current_company_name = _.find(session.user_companies.allowed_companies, function (company) { return company[0] === self.current_company; })[1]; + return this._super.apply(this, arguments); }, //-------------------------------------------------------------------------- @@ -52,11 +56,10 @@ var SwitchCompanyMenu = Widget.extend({ */ _onSwitchCompanyClick: function (ev) { ev.stopPropagation(); - var dropdownItem = $(ev.currentTarget).parent() - var dropdownMenu = dropdownItem.parent() + var dropdownItem = $(ev.currentTarget).parent(); + var dropdownMenu = dropdownItem.parent(); var companyID = dropdownItem.data('company-id'); - var hash = $.bbq.getState() - var allowed_company_ids = _.map(hash.cids.split(','), function(company_id) {return parseInt(company_id);}); + var allowed_company_ids = this.allowed_company_ids; if (dropdownItem.find('.fa-square-o').length) { // 1 enabled company: Stay in single company mode if (this.allowed_company_ids.length === 1) { @@ -81,11 +84,9 @@ var SwitchCompanyMenu = Widget.extend({ */ _onToggleCompanyClick: function (ev) { ev.stopPropagation(); - var dropdownItem = $(ev.currentTarget).parent() - var dropdownMenu = dropdownItem.parent() + var dropdownItem = $(ev.currentTarget).parent(); var companyID = dropdownItem.data('company-id'); - var hash = $.bbq.getState() - var allowed_company_ids = _.map(hash.cids.split(','), function(company_id) {return parseInt(company_id);}); + var allowed_company_ids = this.allowed_company_ids; var current_company_id = allowed_company_ids[0]; if (dropdownItem.find('.fa-square-o').length) { allowed_company_ids.push(companyID); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index e34d017b1a4..878a9cfaef5 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1469,21 +1469,21 @@ <div role="menuitem" href="#" class="dropdown-item d-flex py-0 px-0" data-menu="company" t-att-data-company-id="company[0]"> <div class="ml-auto pl-3 pr-3 border border-top-0 border-left-0 border-bottom-0 toggle_company o_py"> <span style="height: 2rem;"> - <t t-if="widget.allowed_company_ids.includes(company[0].toString())"> + <t t-if="widget.allowed_company_ids.includes(company[0])"> <i class="fa fa-fw fa-check-square pt-2"></i> </t> - <t t-if="!widget.allowed_company_ids.includes(company[0].toString())"> + <t t-if="!widget.allowed_company_ids.includes(company[0])"> <i class="fa fa-fw fa-square-o pt-2"></i> </t> </span> </div> <div class="d-flex flex-grow-1 align-items-center py-0 log_into pl-3 o_py" t-att-style="company[0] === widget.current_company ? 'background-color: lightgrey;' : ''"> - <t t-if="widget.allowed_company_ids.includes(company[0].toString())"> + <t t-if="widget.allowed_company_ids.includes(company[0])"> <span class='mr-3 company_label'> <t t-esc="company[1]"/> </span> </t> - <t t-if="!widget.allowed_company_ids.includes(company[0].toString())"> + <t t-if="!widget.allowed_company_ids.includes(company[0])"> <span class='mr-3 company_label text-muted'> <t t-esc="company[1]"/> </span> |
