diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/tests/widgets/company_switcher_tests.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/web/static/tests/widgets/company_switcher_tests.js')
| -rw-r--r-- | addons/web/static/tests/widgets/company_switcher_tests.js | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/addons/web/static/tests/widgets/company_switcher_tests.js b/addons/web/static/tests/widgets/company_switcher_tests.js new file mode 100644 index 00000000..fe0fec5e --- /dev/null +++ b/addons/web/static/tests/widgets/company_switcher_tests.js @@ -0,0 +1,169 @@ +odoo.define('web.SwitchCompanyMenu_tests', function (require) { +"use strict"; + +var SwitchCompanyMenu = require('web.SwitchCompanyMenu'); +var testUtils = require('web.test_utils'); + + +async function createSwitchCompanyMenu(params) { + params = params || {}; + var target = params.debug ? document.body : $('#qunit-fixture'); + var menu = new SwitchCompanyMenu(); + await testUtils.mock.addMockEnvironment(menu, params); + await menu.appendTo(target) + return menu +} + + +async function initMockCompanyMenu(assert, params) { + var menu = await createSwitchCompanyMenu({ + session: { + ...params.session, + setCompanies: function (mainCompanyId, companyIds) { + assert.equal(mainCompanyId, params.assertMainCompany[0], params.assertMainCompany[1]); + assert.equal(_.intersection(companyIds, params.asserCompanies[0]).length, params.asserCompanies[0].length, params.asserCompanies[1]); + }, + } + }) + await testUtils.dom.click(menu.$('.dropdown-toggle')); // open company switcher dropdown + return menu +} + +async function testSwitchCompany(assert, params) { + assert.expect(2); + var menu = await initMockCompanyMenu(assert, params); + await testUtils.dom.click(menu.$(`div[data-company-id=${params.company}] div.log_into`)); + menu.destroy(); +} + +async function testToggleCompany(assert, params) { + assert.expect(2); + var menu = await initMockCompanyMenu(assert, params); + await testUtils.dom.click(menu.$(`div[data-company-id=${params.company}] div.toggle_company`)); + menu.destroy(); +} + +QUnit.module('widgets', { + beforeEach: async function () { + this.session_mock_multi = { + user_companies: { + current_company: [1, "Company 1"], + allowed_companies: [[1, "Company 1"], [2, "Company 2"], [3, "Company 3"]], + }, + user_context: { allowed_company_ids: [1, 3] }, + }, + this.session_mock_single = { + user_companies: { + current_company: [1, "Company 1"], + allowed_companies: [[1, "Company 1"], [2, "Company 2"], [3, "Company 3"]], + }, + user_context: { allowed_company_ids: [1] }, + } + }, + +}, function () { + + QUnit.module('SwitchCompanyMenu', {}, function () { + + QUnit.test("Company switcher basic rendering", async function (assert) { + assert.expect(6); + var menu = await createSwitchCompanyMenu({ session: this.session_mock_multi }); + assert.equal(menu.$('.company_label:contains(Company 1)').length, 1, "it should display Company 1") + assert.equal(menu.$('.company_label:contains(Company 2)').length, 1, "it should display Company 2") + assert.equal(menu.$('.company_label:contains(Company 3)').length, 1, "it should display Company 3") + + assert.equal(menu.$('div[data-company-id=1] .fa-check-square').length, 1, "Company 1 should be checked") + assert.equal(menu.$('div[data-company-id=2] .fa-square-o').length, 1, "Company 2 should not be checked") + assert.equal(menu.$('div[data-company-id=3] .fa-check-square').length, 1, "Company 3 should be checked") + menu.destroy(); + }); + }); + + QUnit.module('SwitchCompanyMenu', {}, function () { + + QUnit.test("Toggle new company in multiple company mode", async function (assert) { + /** + * [x] **Company 1** [x] **Company 1** + * toggle->[ ] Company 2 ====> [x] Company 2 + * [x] Company 3 [x] Company 3 + */ + await testToggleCompany(assert, { + company: 2, + session: this.session_mock_multi, + assertMainCompany: [1, "Main company should not have changed"], + asserCompanies: [[1, 2, 3], "All companies should be activated"], + }); + }); + + QUnit.test("Toggle active company in mutliple company mode", async function (assert) { + /** + * [x] **Company 1** [x] **Company 1** + * [ ] Company 2 ====> [ ] Company 2 + * toggle->[x] Company 3 [ ] Company 3 + */ + await testToggleCompany(assert, { + company: 3, + session: this.session_mock_multi, + assertMainCompany: [1, "Main company should not have changed"], + asserCompanies: [[1], "Companies 3 should be unactivated"], + }); + }); + + QUnit.test("Switch main company in mutliple company mode", async function (assert) { + /** + * [x] **Company 1** [x] Company 1 + * [ ] Company 2 ====> [ ] Company 2 + * switch->[x] Company 3 [x] **Company 3** + */ + await testSwitchCompany(assert, { + company: 3, + session: this.session_mock_multi, + assertMainCompany: [3, "Main company should switch to Company 3"], + asserCompanies: [[1, 3], "Companies 1 and 3 should still be active"], + }); + }); + + QUnit.test("Switch new company in mutliple company mode", async function (assert) { + /** + * [x] **Company 1** [x] Company 1 + * switch->[ ] Company 2 ====> [x] **Company 2** + * [x] Company 3 [x] Company 3 + */ + await testSwitchCompany(assert, { + company: 2, + session: this.session_mock_multi, + assertMainCompany: [2, "Company 2 should become the main company"], + asserCompanies: [[1, 2, 3], "Companies 1 and 3 should still be active"], + }); + }); + + QUnit.test("Switch main company in single company mode", async function (assert) { + /** + * [x] **Company 1** [ ] Company 1 + * [ ] Company 2 ====> [ ] Company 2 + * switch->[ ] Company 3 [x] **Company 3** + */ + await testSwitchCompany(assert, { + company: 3, + session: this.session_mock_single, + assertMainCompany: [3, "Main company should switch to Company 3"], + asserCompanies: [[3], "Companies 1 should no longer be active"], + }); + }); + + QUnit.test("Toggle new company in single company mode", async function (assert) { + /** + * [x] **Company 1** [ ] **Company 1** + * [ ] Company 2 ====> [ ] Company 2 + * toggle->[ ] Company 3 [x] Company 3 + */ + await testToggleCompany(assert, { + company: 3, + session: this.session_mock_single, + assertMainCompany: [1, "Company 1 should still be the main company"], + asserCompanies: [[1, 3], "Company 3 should be activated"], + }); + }); + }); +}); +}); |
