vanilla 17.0

This commit is contained in:
Ernad Husremovic 2025-10-08 10:47:08 +02:00
parent d72e748793
commit a9bcec8e91
1986 changed files with 1613876 additions and 568976 deletions

View file

@ -19,6 +19,10 @@ import { session } from "@web/session";
const serviceRegistry = registry.category("services");
let target;
function toCIDS(...ids) {
return `cids=${ids.join("-")}&_company_switching=1`;
}
const ORIGINAL_TOGGLE_DELAY = MobileSwitchCompanyMenu.toggleDelay;
async function createSwitchCompanyMenu(routerParams = {}, toggleDelay = 0) {
patchWithCleanup(MobileSwitchCompanyMenu, { toggleDelay });
@ -45,11 +49,12 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
target = getFixture();
patchWithCleanup(session.user_companies, {
allowed_companies: {
1: { id: 1, name: "Hermit" },
2: { id: 2, name: "Herman's" },
3: { id: 3, name: "Heroes TM" },
1: { id: 1, name: "Hermit", parent_id: false, child_ids: [] },
2: { id: 2, name: "Herman's", parent_id: false, child_ids: [] },
3: { id: 3, name: "Heroes TM", parent_id: false, child_ids: [] },
},
current_company: 1,
disallowed_ancestor_companies: {},
});
serviceRegistry.add("ui", uiService);
serviceRegistry.add("company", companyService);
@ -105,7 +110,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 2
* [ ] Company 3
*/
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
assert.containsN(scMenuEl, "[data-company-id]", 3);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 1);
@ -120,7 +125,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 2);
assert.containsN(scMenuEl, "[data-company-id] .fa-square-o", 1);
await prom;
assert.verifySteps(["cids=1%2C2"]);
assert.verifySteps(["cids=1-2&_company_switching=1"]);
});
QUnit.test("can toggle multiple companies at once", async (assert) => {
@ -139,7 +144,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 2
* [ ] Company 3
*/
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
assert.containsN(scMenuEl, "[data-company-id]", 3);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 1);
@ -158,7 +163,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
assert.verifySteps([]);
await prom; // await toggle promise
assert.verifySteps(["cids=2%2C3"]);
assert.verifySteps(["cids=2-3&_company_switching=1"]);
});
QUnit.test("single company selected: toggling it off will keep it", async (assert) => {
@ -178,7 +183,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 3
*/
assert.deepEqual(scMenu.env.services.router.current.hash, { cids: 1 });
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
assert.containsN(scMenuEl, "[data-company-id]", 3);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 1);
@ -190,8 +195,11 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 3
*/
await click(scMenuEl.querySelectorAll(".toggle_company")[0]);
assert.deepEqual(scMenu.env.services.router.current.hash, { cids: 1 });
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
assert.deepEqual(scMenu.env.services.router.current.hash, {
cids: 1,
_company_switching: 1,
});
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-squarqe", 0);
assert.containsN(scMenuEl, "[data-company-id] .fa-square-o", 3);
@ -211,7 +219,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 2
* [ ] Company 3
*/
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
assert.containsN(scMenuEl, "[data-company-id]", 3);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 1);
@ -223,7 +231,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 3
*/
await click(scMenuEl.querySelectorAll(".log_into")[1]);
assert.verifySteps(["cids=2"]);
assert.verifySteps(["cids=2&_company_switching=1"]);
});
QUnit.test("multi company mode: log into a non selected company", async (assert) => {
@ -232,7 +240,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
function onPushState(url) {
assert.step(url.split("#")[1]);
}
Object.assign(browser.location, { hash: "cids=3%2C1" });
Object.assign(browser.location, { hash: "cids=3-1" });
const scMenu = await createSwitchCompanyMenu({ onPushState });
const scMenuEl = target.querySelector(".o_burger_menu_companies");
@ -241,7 +249,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 2
* [x] **Company 3**
*/
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [3, 1]);
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [3, 1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 3);
assert.containsN(scMenuEl, "[data-company-id]", 3);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 2);
@ -249,11 +257,11 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
/**
* [x] Company 1
* [ ] Company 2 -> log into
* [x] **Company 3**
* [x] **Company 2** -> log into
* [x] Company 3
*/
await click(scMenuEl.querySelectorAll(".log_into")[1]);
assert.verifySteps(["cids=2%2C3%2C1"]);
assert.verifySteps([toCIDS(2, 3, 1)]);
});
QUnit.test("multi company mode: log into an already selected company", async (assert) => {
@ -262,7 +270,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
function onPushState(url) {
assert.step(url.split("#")[1]);
}
Object.assign(browser.location, { hash: "cids=2%2C3" });
Object.assign(browser.location, { hash: "cids=2-3" });
const scMenu = await createSwitchCompanyMenu({ onPushState });
const scMenuEl = target.querySelector(".o_burger_menu_companies");
@ -271,7 +279,7 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [x] **Company 2**
* [x] Company 3
*/
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [2, 3]);
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [2, 3]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 2);
assert.containsN(scMenuEl, "[data-company-id]", 3);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 2);
@ -279,11 +287,11 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
/**
* [ ] Company 1
* [x] **Company 2**
* [x] Company 3 -> log into
* [x] Company 2
* [x] **Company 3** -> log into
*/
await click(scMenuEl.querySelectorAll(".log_into")[2]);
assert.verifySteps(["cids=3%2C2"]);
assert.verifySteps([toCIDS(3, 2)]);
});
QUnit.test("companies can be logged in even if some toggled within delay", async (assert) => {
@ -300,20 +308,23 @@ QUnit.module("MobileSwitchCompanyMenu", (hooks) => {
* [ ] Company 2
* [ ] Company 3
*/
assert.deepEqual(scMenu.env.services.company.allowedCompanyIds, [1]);
assert.deepEqual(scMenu.env.services.company.activeCompanyIds, [1]);
assert.strictEqual(scMenu.env.services.company.currentCompany.id, 1);
assert.containsN(scMenuEl, "[data-company-id]", 3);
assert.containsN(scMenuEl, "[data-company-id] .fa-check-square", 1);
assert.containsN(scMenuEl, "[data-company-id] .fa-square-o", 2);
/**
* [ ] **Company 1** -> toggled
* [ ] Company 2 -> logged in
* [ ] Company 3 -> toggled
* [ ] **Company 1** -> 2) toggled
* [x] Company 2 -> 3) logged in
* [ ] Company 3 -> 1) toggled
*/
await click(scMenuEl.querySelectorAll(".toggle_company")[2]);
await click(scMenuEl.querySelectorAll(".toggle_company")[0]);
await click(scMenuEl.querySelectorAll(".log_into")[1]);
assert.verifySteps(["cids=2"]);
// When "Company 2" is logged into, only one company is currently selected
// so we treat it as single company mode
assert.verifySteps([toCIDS(2)]);
});
});