Odoo18-Base/addons/calendar/static/tests/legacy_calendar_tests.js
2025-03-10 11:12:23 +07:00

130 lines
4.6 KiB
JavaScript

/** @odoo-module **/
import FormView from "web.FormView";
import testUtils from "web.test_utils";
var createView = testUtils.createView;
QUnit.module(
"Legacy calendar",
{
beforeEach: function () {
this.data = {
event: {
fields: {
partner_ids: { string: "Partners", type: "many2many", relation: "partner" },
},
records: [
{
id: 14,
partner_ids: [1, 2],
},
],
},
partner: {
fields: {
name: { string: "Name", type: "char" },
},
records: [
{
id: 1,
name: "Jesus",
},
{
id: 2,
name: "Mahomet",
},
],
},
};
},
},
function () {
QUnit.test("many2manyattendee widget: basic rendering", async function (assert) {
assert.expect(12);
var form = await createView({
View: FormView,
model: "event",
data: this.data,
res_id: 14,
debug: 1,
arch:
"<form>" + '<field name="partner_ids" widget="many2manyattendee"/>' + "</form>",
mockRPC: function (route, args) {
if (args.method === "get_attendee_detail") {
assert.strictEqual(
args.model,
"res.partner",
"the method should only be called on res.partner"
);
assert.deepEqual(
args.args[0],
[1, 2],
"the partner ids should be passed as argument"
);
assert.deepEqual(
args.args[1],
[14],
"the event id should be passed as argument"
);
return Promise.resolve([
{ id: 1, name: "Jesus", status: "accepted", color: 0 },
{ id: 2, name: "Mahomet", status: "tentative", color: 0 },
]);
}
return this._super.apply(this, arguments);
},
});
assert.hasClass(form.$('.o_field_widget[name="partner_ids"]'), "o_field_many2manytags");
assert.containsN(
form,
'.o_field_widget[name="partner_ids"] .badge',
2,
"there should be 2 tags"
);
assert.strictEqual(
form.$('.o_field_widget[name="partner_ids"] .badge:first').text().trim(),
"Jesus",
"the tag should be correctly named"
);
assert.hasClass(
form.$('.o_field_widget[name="partner_ids"] .badge:first img'),
"o_attendee_border_accepted",
"Jesus should attend the meeting"
);
assert.strictEqual(
form.$('.o_field_widget[name="partner_ids"] .badge[data-id="2"]').text().trim(),
"Mahomet",
"the tag should be correctly named"
);
assert.hasClass(
form.el.querySelector(
'.o_field_widget[name="partner_ids"] .badge[data-id="2"] img'
),
"o_attendee_border_tentative",
"Mohamet should still confirm his attendance to the meeting"
);
assert.hasClass(
form.el.querySelector(".o_field_many2manytags"),
"avatar",
"should have avatar class"
);
assert.containsOnce(
form,
".o_field_many2manytags.avatar.o_field_widget .badge:first img",
"should have img tag"
);
assert.hasAttrValue(
form.$(".o_field_many2manytags.avatar.o_field_widget .badge:first img"),
"data-src",
"/web/image/partner/1/avatar_128",
"should have correct avatar image"
);
form.destroy();
});
}
);