calendar/static/tests/calendar_tests.js

130 lines
4.6 KiB
JavaScript
Raw Normal View History

2024-05-03 12:43:00 +03:00
/** @odoo-module **/
import { getFixture } from "@web/../tests/helpers/utils";
import { makeView, setupViewRegistries } from "@web/../tests/views/helpers";
let serverData;
let target;
QUnit.module(
"calendar",
{
beforeEach: function () {
target = getFixture();
serverData = {
models: {
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",
},
],
},
},
};
setupViewRegistries();
},
},
function () {
QUnit.test("Many2ManyAttendee: basic rendering", async function (assert) {
await makeView({
type: "form",
resModel: "event",
serverData,
resId: 14,
arch: `
<form>
<field name="partner_ids" widget="many2manyattendee"/>
</form>`,
mockRPC(route, args) {
if (args.method === "get_attendee_detail") {
assert.step(args.method);
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 },
]);
}
},
});
assert.hasClass(
target.querySelector('.o_field_widget[name="partner_ids"] div'),
"o_field_tags"
);
assert.containsN(
target,
'.o_field_widget[name="partner_ids"] .o_tag',
2,
"there should be 2 tags"
);
const badges = target.querySelectorAll('.o_field_widget[name="partner_ids"] .o_tag');
assert.strictEqual(
badges[0].textContent.trim(),
"Jesus",
"the tag should be correctly named"
);
assert.hasClass(
badges[0].querySelector(".attendee_tag_status"),
"o_attendee_status_accepted",
"Jesus should attend the meeting"
);
assert.strictEqual(
badges[1].textContent.trim(),
"Mahomet",
"the tag should be correctly named"
);
assert.hasClass(
badges[1].querySelector(".attendee_tag_status"),
"o_attendee_status_tentative",
"Mohamet should still confirm his attendance to the meeting"
);
assert.containsOnce(badges[0], "img", "should have img tag");
assert.hasAttrValue(
badges[0].querySelector("img"),
"data-src",
"/web/image/partner/1/avatar_128",
"should have correct avatar image"
);
assert.verifySteps(["get_attendee_detail"]);
});
}
);