bus/static/tests/helpers/model_definitions_helpers.js

58 lines
1.9 KiB
JavaScript
Raw Normal View History

2024-05-03 15:03:07 +03:00
/** @odoo-module **/
import { registry } from "@web/core/registry";
const modelDefinitionsRegistry = registry.category("bus.model.definitions");
const customModelFieldsRegistry = modelDefinitionsRegistry.category("fieldsToInsert");
const recordsToInsertRegistry = modelDefinitionsRegistry.category("recordsToInsert");
const fakeModelsRegistry = modelDefinitionsRegistry.category("fakeModels");
/**
* Add models whose definitions need to be fetched on the server.
*
* @param {string[]} modelName
*/
export function addModelNamesToFetch(modelNames) {
if (!modelDefinitionsRegistry.contains("modelNamesToFetch")) {
modelDefinitionsRegistry.add("modelNamesToFetch", []);
}
modelDefinitionsRegistry.get("modelNamesToFetch").push(...modelNames);
}
/**
* Add models that will be added to the model definitions. We should
* avoid to rely on fake models and use real models instead.
*
* @param {string} modelName
* @param {Object} fields
*/
export function addFakeModel(modelName, fields) {
fakeModelsRegistry.add(modelName, fields);
}
/**
* Add model fields that are not present on the server side model's definitions
* but are required to ease testing or add default values for existing fields.
*
* @param {string} modelName
* @param {Object} fieldNamesToFields
*/
export function insertModelFields(modelName, fieldNamesToFields) {
const modelCustomFieldsRegistry = customModelFieldsRegistry.category(modelName);
for (const fname in fieldNamesToFields) {
modelCustomFieldsRegistry.add(fname, fieldNamesToFields[fname]);
}
}
/**
* Add records to the initial server data.
*
* @param {string} modelName
* @param {Object[]} records
*/
export function insertRecords(modelName, records) {
if (!recordsToInsertRegistry.contains(modelName)) {
recordsToInsertRegistry.add(modelName, []);
}
recordsToInsertRegistry.get(modelName).push(...records);
}