mail/static/tests/helpers/mock_server/models/ir_attachment.js

78 lines
2.6 KiB
JavaScript
Raw Normal View History

2024-05-03 12:40:35 +03:00
/* @odoo-module */
import { patch } from "@web/core/utils/patch";
import { MockServer } from "@web/../tests/helpers/mock_server";
patch(MockServer.prototype, {
async _performRPC(route, args) {
if (args.model === "ir.attachment" && args.method === "register_as_main_attachment") {
const ids = args.args[0];
return this._mockIrAttachmentRegisterAsMainAttachment(ids);
}
return super._performRPC(route, args);
},
/**
* Simulates `_attachment_format` on `ir.attachment`.
*
* @private
* @param {integer} ids
* @returns {Object}
*/
_mockIrAttachment_attachmentFormat(ids) {
const attachments = this.mockRead("ir.attachment", [ids]);
return attachments.map((attachment) => {
const res = {
create_date: attachment.create_date,
checksum: attachment.checksum,
filename: attachment.name,
id: attachment.id,
mimetype: attachment.mimetype,
name: attachment.name,
size: attachment.file_size,
};
res["originThread"] = [
[
"ADD",
{
id: attachment.res_id,
model: attachment.res_model,
},
],
];
const voice = this.getRecords("discuss.voice.metadata", [
["attachment_id", "=", attachment.id],
])[0];
if (voice) {
res.voice = true;
}
return res;
});
},
/**
* Simulates `register_as_main_attachment` on `ir.attachment`.
*
* @private
* @param {integer} ids
* @param {boolean} [force=true]
* @returns {boolean} dummy value for mock server
*/
_mockIrAttachmentRegisterAsMainAttachment(ids, force = true) {
const [attachment] = this.getRecords("ir.attachment", [["id", "in", ids]]);
if (!attachment.res_model) {
return true; // dummy value for mock server
}
if (!this.models[attachment.res_model].fields["message_main_attachment_id"]) {
return true; // dummy value for mock server
}
const [record] = this.pyEnv[attachment.res_model].searchRead([
["id", "=", attachment.res_id],
]);
if (force || !record.message_main_attachment_id) {
this.pyEnv[attachment.res_model].write([record.id], {
message_main_attachment_id: attachment.id,
});
}
return true; // dummy value for mock server
},
});