Files
enterprise-addons/appointment/static/tests/appointment_tests_common.js
T

230 lines
6.4 KiB
JavaScript

import { mailModels } from "@mail/../tests/mail_test_helpers";
import { defineModels, fields, models } from "@web/../tests/web_test_helpers";
export class CalendarEvent extends models.Model {
_name = "calendar.event";
id = fields.Integer({ string: "ID" });
active = fields.Boolean({ string: "Active" });
name = fields.Char({ string: "Name" });
user_id = fields.Many2one({ string: "User", relation: "res.users" });
partner_id = fields.Many2one({
string: "Partner",
relation: "res.partner",
related: "user_id.partner_id.id",
});
start_date = fields.Date({ string: "Start date" });
stop_date = fields.Date({ string: "Stop date" });
start = fields.Datetime({ string: "Start datetime" });
stop = fields.Datetime({ string: "Stop datetime" });
allday = fields.Boolean({ string: "Allday" });
partner_ids = fields.Many2many({ string: "Attendees", relation: "res.partner" });
resource_ids = fields.Many2many({ string: "Resources", relation: "appointment.resource" });
appointment_status = fields.Selection({
selection: [
['cancelled', 'Cancelled'],
['request', 'Request'],
['booked', 'Booked'],
['attended', 'Checked-In'],
['no_show', 'No Show'],
],
string: "Appointment Status",
});
appointment_type_id = fields.Many2one({
string: "Appointment Type",
relation: "appointment.type",
});
_records = [
{
id: 1,
active: true,
user_id: 100,
partner_id: 100,
name: "Event 1",
start: "2022-01-12 10:00:00",
stop: "2022-01-12 11:00:00",
allday: false,
appointment_status: 'booked',
partner_ids: [100, 214],
},
{
id: 2,
active: true,
user_id: 214,
partner_id: 214,
name: "Event 2",
start: "2022-01-05 10:00:00",
stop: "2022-01-05 11:00:00",
allday: false,
appointment_status: 'booked',
partner_ids: [214, 216],
},
{
id: 3,
active: true,
user_id: 216,
partner_id: 216,
name: "Event 3",
start: "2022-01-05 10:00:00",
stop: "2022-01-05 11:00:00",
allday: false,
appointment_status: 'booked',
partner_ids: [216, 100, 214, 217],
},
];
has_access = function () {
return Promise.resolve(true);
};
}
export class AppointmentType extends models.Model {
_name = "appointment.type";
name = fields.Char();
website_url = fields.Char();
staff_user_ids = fields.Many2many({ relation: "res.users" });
website_published = fields.Boolean();
slot_ids = fields.One2many({ relation: "appointment.slot" });
schedule_based_on = fields.Selection({
selection: [
["users", "Users"],
["resources", "Resources"],
],
});
category = fields.Selection({
selection: [
["website", "Website"],
["custom", "Specific Slots"],
],
});
_records = [
{
id: 1,
name: "Very Interesting Meeting",
website_url: "/appointment/1",
website_published: true,
schedule_based_on: "users",
staff_user_ids: [214, 216],
category: "website",
},
{
id: 2,
name: "Test Appointment",
website_url: "/appointment/2",
website_published: true,
schedule_based_on: "users",
staff_user_ids: [100],
category: "website",
},
];
}
class AppointmentResource extends models.Model {
_name = "appointment.resource";
}
export class AppointmentSlot extends models.Model {
_name = "appointment.slot";
appointment_type_id = fields.Many2one({ relation: "appointment.type" });
start_datetime = fields.Datetime({ string: "Start" });
end_datetime = fields.Datetime({ string: "End" });
duration = fields.Float({ string: "Duration" });
slot_type = fields.Selection({
string: "Slot Type",
selection: [
["recurring", "Regular"],
["unique", "One Shot"],
],
});
}
export class FilterPartner extends models.Model {
_name = "filter.partner";
id = fields.Integer({ string: "ID", type: "integer" });
user_id = fields.Many2one({ string: "user", relation: "res.users" });
partner_id = fields.Many2one({
string: "partner",
relation: "res.partner",
});
partner_checked = fields.Boolean({ string: "checked", type: "boolean" });
_records = [
{
id: 4,
user_id: 100,
partner_id: 100,
partner_checked: true,
},
{
id: 5,
user_id: 214,
partner_id: 214,
partner_checked: true,
},
];
}
export class ResPartner extends mailModels.ResPartner {
_records = [
...mailModels.ResPartner._records,
{
id: 100,
display_name: "Partner 1",
name: "Partner 1",
email: "partner1@test.lan",
phone: "0467121212",
user_ids: [100],
},
{
id: 214,
display_name: "Partner 214",
name: "Partner 214",
email: "",
phone: "012123123",
user_ids: [214],
},
{
id: 216,
display_name: "Partner 216",
name: "Partner 216",
email: "partner216@test.lan",
phone: "",
user_ids: [216],
},
{
id: 217,
display_name: "Contact Partner",
name: "Contact Partner",
email: "partner@contact.lan",
phone: "",
user_ids: [],
},
];
}
export class ResUsers extends mailModels.ResUsers {
_records = [
...mailModels.ResUsers._records,
{ id: 100, name: "User 1", partner_id: 100 },
{ id: 214, name: "User 214", partner_id: 214 },
{ id: 216, name: "User 216", partner_id: 216 },
];
}
export function defineAppointmentModels() {
return defineModels({
...mailModels,
AppointmentResource,
AppointmentSlot,
AppointmentType,
CalendarEvent,
FilterPartner,
ResPartner,
ResUsers,
});
}