Files
enterprise-addons/spreadsheet_edition/static/tests/helpers/webclient_helpers.js
T

73 lines
2.6 KiB
JavaScript

import { Spreadsheet } from "@odoo/o-spreadsheet";
import { SpreadsheetComponent } from "@spreadsheet/actions/spreadsheet_component";
import { makeFakeSpreadsheetService } from "@spreadsheet_edition/../tests/helpers/collaborative_helpers";
import { InsertListSpreadsheetMenu } from "@spreadsheet_edition/assets/list_view/insert_list_spreadsheet_menu_owl";
import { AbstractSpreadsheetAction } from "@spreadsheet_edition/bundle/actions/abstract_spreadsheet_action";
import { mockService, patchWithCleanup } from "@web/../tests/web_test_helpers";
import { registry } from "@web/core/registry";
export async function prepareWebClientForSpreadsheet() {
mockService("spreadsheet_collaborative", makeFakeSpreadsheetService());
registry.category("favoriteMenu").add(
"insert-in-spreadsheet-menu",
{
Component: InsertListSpreadsheetMenu,
groupNumber: 4,
isDisplayed: ({ config, isSmall }) =>
!isSmall &&
config.actionType === "ir.actions.act_window" &&
["kanban", "list"].includes(config.viewType),
},
{ sequence: 5 }
);
// Transforming the canvas into an image might crash in Hoot since the canvas has a size of 0x0 on some test setup
patchWithCleanup(AbstractSpreadsheetAction.prototype, {
onSpreadsheetLeftUpdateVals() {
return { display_thumbnail: "someBase64Image" };
},
});
}
function getChildFromComponent(component, cls) {
return Object.values(component.__owl__.children).find((child) => child.component instanceof cls)
.component;
}
/**
* Return the odoo spreadsheet component
* @param {*} actionManager
* @returns {SpreadsheetComponent}
*/
export function getSpreadsheetComponent(actionManager) {
return getChildFromComponent(actionManager, SpreadsheetComponent);
}
/**
* Return the o-spreadsheet component
* @param {*} actionManager
* @returns {Component}
*/
export function getOSpreadsheetComponent(actionManager) {
return getChildFromComponent(getSpreadsheetComponent(actionManager), Spreadsheet);
}
/**
* Return the o-spreadsheet Model
* @return {import("@spreadsheet").OdooSpreadsheetModel} model
*/
export function getSpreadsheetActionModel(actionManager) {
return getOSpreadsheetComponent(actionManager).model;
}
export function getSpreadsheetActionTransportService(actionManager) {
return actionManager.transportService;
}
export function getSpreadsheetActionEnv(actionManager) {
const component = getSpreadsheetComponent(actionManager);
const oComponent = getOSpreadsheetComponent(actionManager);
return Object.assign(Object.create(component.env), oComponent.env);
}