diff --git a/addons/web/models/ir_http.py b/addons/web/models/ir_http.py
index 882a055caa7..4e9e0f94c21 100644
--- a/addons/web/models/ir_http.py
+++ b/addons/web/models/ir_http.py
@@ -94,6 +94,7 @@ class Http(models.AbstractModel):
comp.id: {
'id': comp.id,
'name': comp.name,
+ 'sequence': comp.sequence,
} for comp in user.company_ids
},
},
diff --git a/addons/web/static/src/webclient/switch_company_menu/switch_company_menu.xml b/addons/web/static/src/webclient/switch_company_menu/switch_company_menu.xml
index 223aae23a61..69f7b167f89 100644
--- a/addons/web/static/src/webclient/switch_company_menu/switch_company_menu.xml
+++ b/addons/web/static/src/webclient/switch_company_menu/switch_company_menu.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/addons/web/static/tests/webclient/switch_company_menu_tests.js b/addons/web/static/tests/webclient/switch_company_menu_tests.js
index 91d5ce90565..7c9d7c1a787 100644
--- a/addons/web/static/tests/webclient/switch_company_menu_tests.js
+++ b/addons/web/static/tests/webclient/switch_company_menu_tests.js
@@ -40,11 +40,11 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
hooks.beforeEach(() => {
patchWithCleanup(session.user_companies, {
allowed_companies: {
- 1: { id: 1, name: "Hermit" },
- 2: { id: 2, name: "Herman's" },
- 3: { id: 3, name: "Heroes TM" },
+ 3: { id: 3, name: "Hermit", sequence: 1 },
+ 2: { id: 2, name: "Herman's", sequence: 2 },
+ 1: { id: 1, name: "Heroes TM", sequence: 3 },
},
- current_company: 1,
+ current_company: 3,
});
serviceRegistry.add("ui", uiService);
serviceRegistry.add("company", companyService);
@@ -90,28 +90,28 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
const scMenu = await createSwitchCompanyMenu({ onPushState });
/**
- * [x] **Company 1**
- * [ ] Company 2
- * [ ] Company 3
+ * [x] **Hermit**
+ * [ ] Herman's
+ * [ ] Heroes TM
*/
- assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
- assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
+ assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3]);
+ assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
await click(scMenu.el.querySelector(".dropdown-toggle"));
assert.containsN(scMenu.el, "[data-company-id]", 3);
assert.containsN(scMenu.el, "[data-company-id] .fa-check-square", 1);
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 2);
/**
- * [x] **Company 1**
- * [x] Company 2 -> toggle
- * [ ] Company 3
+ * [x] **Hermit**
+ * [x] Herman's -> toggle
+ * [ ] Heroes TM
*/
await click(scMenu.el.querySelectorAll(".toggle_company")[1]);
assert.containsOnce(scMenu.el, ".dropdown-menu", "dropdown is still opened");
assert.containsN(scMenu.el, "[data-company-id] .fa-check-square", 2);
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 1);
await prom;
- assert.verifySteps(["cids=1%2C2"]);
+ assert.verifySteps(["cids=3%2C2"]);
});
QUnit.test("can toggle multiple companies at once", async (assert) => {
@@ -125,21 +125,21 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
const scMenu = await createSwitchCompanyMenu({ onPushState }, 50);
/**
- * [x] **Company 1**
- * [ ] Company 2
- * [ ] Company 3
+ * [x] **Hermit**
+ * [ ] Herman's
+ * [ ] Heroes TM
*/
- assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
- assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
+ assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3]);
+ assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
await click(scMenu.el.querySelector(".dropdown-toggle"));
assert.containsN(scMenu.el, "[data-company-id]", 3);
assert.containsN(scMenu.el, "[data-company-id] .fa-check-square", 1);
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 2);
/**
- * [ ] **Company 1** -> toggle all
- * [x] Company 2 -> toggle all
- * [x] Company 3 -> toggle all
+ * [ ] **Hermit** -> toggle all
+ * [x] Herman's -> toggle all
+ * [x] Heroes TM -> toggle all
*/
await click(scMenu.el.querySelectorAll(".toggle_company")[0]);
await click(scMenu.el.querySelectorAll(".toggle_company")[1]);
@@ -150,7 +150,7 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
assert.verifySteps([]);
await prom; // await toggle promise
- assert.verifySteps(["cids=2%2C3"]);
+ assert.verifySteps(["cids=2%2C1"]);
});
QUnit.test("single company selected: toggling it off will keep it", async (assert) => {
@@ -164,27 +164,27 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
const scMenu = await createSwitchCompanyMenu();
/**
- * [x] **Company 1**
- * [ ] Company 2
- * [ ] Company 3
+ * [x] **Hermit**
+ * [ ] Herman's
+ * [ ] Heroes TM
*/
- assert.deepEqual(scMenu.env.services.router.current.hash, { cids: 1 });
- assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
- assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
+ assert.deepEqual(scMenu.env.services.router.current.hash, { cids: 3 });
+ assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3]);
+ assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
await click(scMenu.el.querySelector(".dropdown-toggle"));
assert.containsN(scMenu.el, "[data-company-id]", 3);
assert.containsN(scMenu.el, "[data-company-id] .fa-check-square", 1);
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 2);
/**
- * [ ] **Company 1** -> toggle off
- * [ ] Company 2
- * [ ] Company 3
+ * [ ] **Hermit** -> toggle off
+ * [ ] Herman's
+ * [ ] Heroes TM
*/
await click(scMenu.el.querySelectorAll(".toggle_company")[0]);
- assert.deepEqual(scMenu.env.services.router.current.hash, { cids: 1 });
- assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
- assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
+ assert.deepEqual(scMenu.env.services.router.current.hash, { cids: 3 });
+ assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3]);
+ assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
assert.containsOnce(scMenu.el, ".dropdown-menu", "dropdown is still opened");
assert.containsN(scMenu.el, "[data-company-id] .fa-check-square", 0);
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 3);
@@ -199,21 +199,21 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
const scMenu = await createSwitchCompanyMenu({ onPushState });
/**
- * [x] **Company 1**
- * [ ] Company 2
- * [ ] Company 3
+ * [x] **Hermit**
+ * [ ] Herman's
+ * [ ] Heroes TM
*/
- assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
- assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
+ assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3]);
+ assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
await click(scMenu.el.querySelector(".dropdown-toggle"));
assert.containsN(scMenu.el, "[data-company-id]", 3);
assert.containsN(scMenu.el, "[data-company-id] .fa-check-square", 1);
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 2);
/**
- * [x] **Company 1**
- * [ ] Company 2 -> log into
- * [ ] Company 3
+ * [x] **Hermit**
+ * [ ] Herman's -> log into
+ * [ ] Heroes TM
*/
await click(scMenu.el.querySelectorAll(".log_into")[1]);
assert.containsNone(scMenu.el, ".dropdown-menu", "dropdown is directly closed");
@@ -230,9 +230,9 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
const scMenu = await createSwitchCompanyMenu({ onPushState });
/**
- * [x] Company 1
- * [ ] Company 2
- * [x] **Company 3**
+ * [x] Hermit
+ * [ ] Herman's
+ * [x] **Heroes TM**
*/
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3, 1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
@@ -242,9 +242,9 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 1);
/**
- * [x] Company 1
- * [ ] Company 2 -> log into
- * [x] **Company 3**
+ * [x] Hermit
+ * [ ] Herman's -> log into
+ * [x] **Heroes TM**
*/
await click(scMenu.el.querySelectorAll(".log_into")[1]);
assert.containsNone(scMenu.el, ".dropdown-menu", "dropdown is directly closed");
@@ -257,15 +257,15 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
function onPushState(url) {
assert.step(url.split("#")[1]);
}
- Object.assign(browser.location, { hash: "cids=2%2C3" });
+ Object.assign(browser.location, { hash: "cids=2%2C1" });
const scMenu = await createSwitchCompanyMenu({ onPushState });
/**
- * [ ] Company 1
- * [x] **Company 2**
- * [x] Company 3
+ * [ ] Hermit
+ * [x] **Herman's**
+ * [x] Heroes TM
*/
- assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [2, 3]);
+ assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [2, 1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 2);
await click(scMenu.el.querySelector(".dropdown-toggle"));
assert.containsN(scMenu.el, "[data-company-id]", 3);
@@ -273,13 +273,13 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 1);
/**
- * [ ] Company 1
- * [x] **Company 2**
- * [x] Company 3 -> log into
+ * [ ] Hermit
+ * [x] **Herman's**
+ * [x] Heroes TM -> log into
*/
await click(scMenu.el.querySelectorAll(".log_into")[2]);
assert.containsNone(scMenu.el, ".dropdown-menu", "dropdown is directly closed");
- assert.verifySteps(["cids=3%2C2"]);
+ assert.verifySteps(["cids=1%2C2"]);
});
QUnit.test("companies can be logged in even if some toggled within delay", async (assert) => {
@@ -291,21 +291,21 @@ QUnit.module("SwitchCompanyMenu", (hooks) => {
const scMenu = await createSwitchCompanyMenu({ onPushState }, 50);
/**
- * [x] **Company 1**
- * [ ] Company 2
- * [ ] Company 3
+ * [x] **Hermit**
+ * [ ] Herman's
+ * [ ] Heroes TM
*/
- assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
- assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
+ assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3]);
+ assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
await click(scMenu.el.querySelector(".dropdown-toggle"));
assert.containsN(scMenu.el, "[data-company-id]", 3);
assert.containsN(scMenu.el, "[data-company-id] .fa-check-square", 1);
assert.containsN(scMenu.el, "[data-company-id] .fa-square-o", 2);
/**
- * [ ] **Company 1** -> toggled
- * [ ] Company 2 -> logged in
- * [ ] Company 3 -> toggled
+ * [ ] **Hermit** -> toggled
+ * [ ] Herman's -> logged in
+ * [ ] Heroes TM -> toggled
*/
await click(scMenu.el.querySelectorAll(".toggle_company")[2]);
await click(scMenu.el.querySelectorAll(".toggle_company")[0]);
diff --git a/addons/web/tests/test_session_info.py b/addons/web/tests/test_session_info.py
index 0385d593e18..bef8990ae52 100644
--- a/addons/web/tests/test_session_info.py
+++ b/addons/web/tests/test_session_info.py
@@ -46,6 +46,7 @@ class TestSessionInfo(common.HttpCase):
str(company.id): {
'id': company.id,
'name': company.name,
+ 'sequence': company.sequence,
} for company in self.companies
}
expected_user_companies = {