Files
odoo_source/addons/mail/static/tests/helpers/model_definitions_setup.js
T
Jorge Pinna Puissant 886f3de768 [IMP] web,*: force props validation for components
*: base_automation, lunch, mail, mrp, project, web_editor, website

This commit adds a warning if the props validation is not set for a
component.

The props validation is important to tell how a component should be
used, by looking at its code, it's a good documentation of the component.
It's also critical, to test if the component is correctly used, if all
the obligatory props are passed and that there are of the correct type.

For more information, see: https://github.com/odoo/owl/blob/master/doc/reference/props.md#props-validation

closes odoo/odoo#103723

Related: odoo/enterprise#33044
Signed-off-by: Géry Debongnie <ged@odoo.com>
2022-10-26 16:07:18 +02:00

105 lines
4.0 KiB
JavaScript

/** @odoo-module **/
import { TEST_GROUP_IDS, TEST_USER_IDS } from '@bus/../tests/helpers/test_constants';
import {
addFakeModel,
addModelNamesToFetch,
insertModelFields,
insertRecords
} from '@bus/../tests/helpers/model_definitions_helpers';
//--------------------------------------------------------------------------
// Models
//--------------------------------------------------------------------------
addModelNamesToFetch([
'mail.activity', 'mail.activity.type', 'mail.channel', 'mail.channel.member',
'mail.channel.rtc.session', 'mail.followers', 'mail.guest', 'mail.link.preview', 'mail.message',
'mail.message.subtype', 'mail.notification', 'mail.shortcode', 'mail.template',
'mail.tracking.value', 'res.users.settings', 'res.users.settings.volumes'
]);
addFakeModel('res.fake', {
message_ids: { string: 'Messages', type: 'one2many', relation: 'mail.message' },
activity_ids: { string: "Activities", type: 'one2many', relation: 'mail.activity' },
email_cc: { type: 'char' },
partner_ids: { relation: 'res.partner', string: "Related partners", type: 'one2many' },
});
addFakeModel('m2x.avatar.user', {
user_id: { type: 'many2one', relation: 'res.users' },
user_ids: { type: 'many2many', relation: 'res.users', string: 'Users'},
});
//--------------------------------------------------------------------------
// Insertion of fields
//--------------------------------------------------------------------------
insertModelFields('mail.activity', {
chaining_type: { default: 'suggest' },
});
insertModelFields('mail.channel', {
author_id: {
default() {
return this.currentPartnerId;
},
},
avatarCacheKey: { string: "Avatar Cache Key", type: "datetime" },
channel_member_ids: {
default() {
return [[0, 0, { partner_id: this.currentPartnerId }]];
},
},
channel_type: { default: 'channel' },
group_based_subscription: { string: "Group based subscription", type: "boolean" },
group_public_id: {
default() {
return TEST_GROUP_IDS.groupUserId;
},
},
uuid: { default: () => _.uniqueId('mail.channel_uuid-') },
});
insertModelFields('mail.channel.member', {
fold_state: { default: 'open' },
is_pinned: { default: true },
message_unread_counter: { default: 0 },
});
insertModelFields('mail.message', {
author_id: { default: TEST_USER_IDS.currentPartnerId },
history_partner_ids: { relation: 'res.partner', string: "Partners with History", type: 'many2many' },
is_discussion: { string: 'Discussion', type: 'boolean' },
is_note: { string: "Discussion", type: 'boolean' },
is_notification: { string: "Note", type: 'boolean' },
needaction_partner_ids: { relation: 'res.partner', string: "Partners with Need Action", type: 'many2many' },
res_model_name: { string: "Res Model Name", type: 'char' },
});
insertModelFields('mail.message.subtype', {
subtype_xmlid: { type: 'char' },
});
insertModelFields('mail.tracking.value', {
changed_field: { string: 'Changed field', type: 'char' },
new_value: { string: 'New value', type: 'char' },
old_value: { string: 'Old value', type: 'char' },
});
insertModelFields('res.users.settings', {
is_discuss_sidebar_category_channel_open: { default: true },
is_discuss_sidebar_category_chat_open: { default: true },
});
//--------------------------------------------------------------------------
// Insertion of records
//--------------------------------------------------------------------------
insertRecords('mail.activity.type', [
{ icon: 'fa-envelope', id: 1, name: "Email" },
{ icon: 'fa-upload', id: 28, name: "Upload Document" },
]);
insertRecords('mail.message.subtype', [
{ default: false, internal: true, name: "Activities", sequence: 90, subtype_xmlid: 'mail.mt_activities' },
{
default: false, internal: true, name: "Note", sequence: 100, subtype_xmlid: 'mail.mt_note',
track_recipients: true
},
{ name: "Discussions", sequence: 0, subtype_xmlid: 'mail.mt_comment', track_recipients: true },
]);