summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/widgets/company_switcher_tests.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/tests/widgets/company_switcher_tests.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (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.js169
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"],
+ });
+ });
+ });
+});
+});