Odoo18-Base/enterprise-17.0/documents/static/tests/documents_test_utils.js
2025-01-06 10:57:38 +07:00

80 lines
3.0 KiB
JavaScript

/** @odoo-module **/
import { registry } from "@web/core/registry";
import { makeView } from "@web/../tests/views/helpers";
import { start } from "@mail/../tests/helpers/test_utils";
// Services
import { busParametersService } from "@bus/bus_parameters_service";
import { multiTabService } from "@bus/multi_tab_service";
import { busService } from "@bus/services/bus_service";
import { documentService } from "@documents/core/document_service";
import { attachmentService } from "@mail/core/common/attachment_service";
import { storeService } from "@mail/core/common/store_service";
import { voiceMessageService } from "@mail/discuss/voice_message/common/voice_message_service";
import { fileUploadService } from "@web/core/file_upload/file_upload_service";
export function getEnrichedSearchArch(searchArch='<search></search>') {
var searchPanelArch = `
<searchpanel class="o_documents_search_panel">
<field name="folder_id" string="Workspace" enable_counters="1"/>
<field name="tag_ids" select="multi" groupby="facet_id" enable_counters="1"/>
<field name="res_model" select="multi" string="Attached To" enable_counters="1"/>
</searchpanel>
`;
return searchArch.split('</search>')[0] + searchPanelArch + '</search>';
}
export async function createDocumentsView(params) {
params.searchViewArch = getEnrichedSearchArch(params.searchViewArch);
return makeView(params);
}
export async function createFolderView(params) {
params.searchViewArch = '<search></search>';
return makeView(params);
}
export async function createDocumentsViewWithMessaging(params) {
const serverData = params.serverData || {};
serverData.views = serverData.views || {};
const searchArchs = {};
for (const viewKey in serverData.views) {
const [modelName] = viewKey.split(',');
searchArchs[`${modelName},false,search`] = getEnrichedSearchArch(serverData.views[`${modelName},false,search`]);
};
Object.assign(serverData.views, searchArchs);
return start(params);
}
/**
* Load the services needed to test the documents views.
*/
export function loadServices(extraServices = {}) {
const REQUIRED_SERVICES = {
documents_pdf_thumbnail: {
start() {
return {
enqueueRecords: () => {},
};
},
},
"bus.parameters": busParametersService,
"document.document": documentService,
"discuss.voice_message": voiceMessageService,
"mail.attachment": attachmentService,
"mail.store": storeService,
bus_service: busService,
file_upload: fileUploadService,
multi_tab: multiTabService,
...extraServices,
};
const serviceRegistry = registry.category("services");
for (const [serviceName, service] of Object.entries(REQUIRED_SERVICES)) {
if (!serviceRegistry.contains(serviceName)) {
serviceRegistry.add(serviceName, service);
}
}
}