From c05d7b26d4bdf61535adc7c242ec29e5caf8d940 Mon Sep 17 00:00:00 2001 From: jayp-odoo Date: Tue, 21 May 2024 10:22:37 +0530 Subject: [PATCH] [REF] hr_holidays: convert tests to hoot This commit aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task-3818666 closes odoo/odoo#171035 X-original-commit: 06d2cdcb339eecca7c06993d5e4f11d5a43c0998 Signed-off-by: Didier Debondt (did) --- addons/hr_holidays/__manifest__.py | 10 +++---- .../helpers/mock_server/models/res_partner.js | 27 ------------------- .../tests/helpers/model_definitions_setup.js | 7 ----- .../static/tests/hr_holidays_test_helpers.js | 10 +++++++ ...patch_tests.js => im_status_patch.test.js} | 21 +++++++-------- .../tests/{ => legacy}/leave_stats_tests.js | 0 .../{ => legacy}/radio_image_field_tests.js | 0 .../mock_server/mock_models/hr_employee.js | 5 ++++ .../mock_server/mock_models/res_partner.js | 23 ++++++++++++++++ ...tch_tests.js => thread_icon_patch.test.js} | 21 +++++++-------- ...ad_patch_tests.js => thread_patch.test.js} | 17 +++++------- 11 files changed, 68 insertions(+), 73 deletions(-) delete mode 100644 addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js delete mode 100644 addons/hr_holidays/static/tests/helpers/model_definitions_setup.js create mode 100644 addons/hr_holidays/static/tests/hr_holidays_test_helpers.js rename addons/hr_holidays/static/tests/{im_status_patch_tests.js => im_status_patch.test.js} (76%) rename addons/hr_holidays/static/tests/{ => legacy}/leave_stats_tests.js (100%) rename addons/hr_holidays/static/tests/{ => legacy}/radio_image_field_tests.js (100%) create mode 100644 addons/hr_holidays/static/tests/mock_server/mock_models/hr_employee.js create mode 100644 addons/hr_holidays/static/tests/mock_server/mock_models/res_partner.js rename addons/hr_holidays/static/tests/{thread_icon_patch_tests.js => thread_icon_patch.test.js} (74%) rename addons/hr_holidays/static/tests/{thread_patch_tests.js => thread_patch.test.js} (57%) diff --git a/addons/hr_holidays/__manifest__.py b/addons/hr_holidays/__manifest__.py index 4f7a659560596..8d223da1e6c3d 100644 --- a/addons/hr_holidays/__manifest__.py +++ b/addons/hr_holidays/__manifest__.py @@ -70,13 +70,13 @@ "web.assets_web_dark": [ 'hr_holidays/static/src/**/*.dark.scss', ], - 'web.tests_assets': [ - 'hr_holidays/static/tests/helpers/**/*', + 'web.assets_unit_tests': [ + 'hr_holidays/static/tests/**/*', + ('remove', 'hr_holidays/static/tests/tours/**/*'), + ('remove', 'hr_holidays/static/tests/legacy/**/*'), ], 'web.qunit_suite_tests': [ - 'hr_holidays/static/tests/**/*.js', - ('remove', 'hr_holidays/static/tests/tours/**/*'), - ('remove', 'hr_holidays/static/tests/helpers/**/*'), + 'hr_holidays/static/tests/legacy/**/*', ], 'web.assets_tests': [ '/hr_holidays/static/tests/tours/**/*' diff --git a/addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js b/addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js deleted file mode 100644 index 0e8b6a76d7d4e..0000000000000 --- a/addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import '@mail/../tests/helpers/mock_server/models/res_partner'; // ensure mail overrides are applied first - -import { patch } from "@web/core/utils/patch"; -import { MockServer } from "@web/../tests/helpers/mock_server"; - -patch(MockServer.prototype, { - /** - * Overrides to add out of office to employees. - * - * @override - */ - _mockResPartnerMailPartnerFormat(ids) { - const partnerFormats = super._mockResPartnerMailPartnerFormat(...arguments); - const partners = this.getRecords( - 'res.partner', - [['id', 'in', ids]], - { active_test: false }, - ); - for (const partner of partners) { - // Not a real field but ease the testing - partnerFormats.get(partner.id).out_of_office_date_end = partner.out_of_office_date_end; - } - return partnerFormats; - }, -}); diff --git a/addons/hr_holidays/static/tests/helpers/model_definitions_setup.js b/addons/hr_holidays/static/tests/helpers/model_definitions_setup.js deleted file mode 100644 index 61ba2954ce127..0000000000000 --- a/addons/hr_holidays/static/tests/helpers/model_definitions_setup.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @odoo-module **/ - -import { insertModelFields } from '@bus/../tests/helpers/model_definitions_helpers'; - -insertModelFields('res.partner', { - out_of_office_date_end: { type: 'date' }, -}); diff --git a/addons/hr_holidays/static/tests/hr_holidays_test_helpers.js b/addons/hr_holidays/static/tests/hr_holidays_test_helpers.js new file mode 100644 index 0000000000000..55b15354c30d7 --- /dev/null +++ b/addons/hr_holidays/static/tests/hr_holidays_test_helpers.js @@ -0,0 +1,10 @@ +import { mailModels } from "@mail/../tests/mail_test_helpers"; +import { defineModels } from "@web/../tests/web_test_helpers"; +import { ResPartner } from "./mock_server/mock_models/res_partner"; +import { HrEmployee } from "./mock_server/mock_models/hr_employee"; + +export function defineHrHolidaysModels() { + return defineModels(hrHolidaysModels); +} + +export const hrHolidaysModels = { ...mailModels, ResPartner, HrEmployee }; diff --git a/addons/hr_holidays/static/tests/im_status_patch_tests.js b/addons/hr_holidays/static/tests/im_status_patch.test.js similarity index 76% rename from addons/hr_holidays/static/tests/im_status_patch_tests.js rename to addons/hr_holidays/static/tests/im_status_patch.test.js index cffbbde9c382a..3f71a6af11ae6 100644 --- a/addons/hr_holidays/static/tests/im_status_patch_tests.js +++ b/addons/hr_holidays/static/tests/im_status_patch.test.js @@ -1,15 +1,12 @@ -/* @odoo-module */ +import { describe, test } from "@odoo/hoot"; +import { Command, serverState } from "@web/../tests/web_test_helpers"; +import { startServer, start, openDiscuss, contains } from "@mail/../tests/mail_test_helpers"; +import { defineHrHolidaysModels } from "@hr_holidays/../tests/hr_holidays_test_helpers"; -import { serverState, startServer } from "@bus/../tests/helpers/mock_python_environment"; +describe.current.tags("desktop"); +defineHrHolidaysModels(); -import { Command } from "@mail/../tests/helpers/command"; -import { openDiscuss, start } from "@mail/../tests/helpers/test_utils"; - -import { contains } from "@web/../tests/utils"; - -QUnit.module("im_status"); - -QUnit.test("on leave & online", async () => { +test("on leave & online", async () => { const pyEnv = await startServer(); const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "leave_online" }); const channelId = pyEnv["discuss.channel"].create({ @@ -24,7 +21,7 @@ QUnit.test("on leave & online", async () => { await contains(".o-mail-ImStatus i.fa-plane[title='Online']"); }); -QUnit.test("on leave & away", async () => { +test("on leave & away", async () => { const pyEnv = await startServer(); const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "leave_away" }); const channelId = pyEnv["discuss.channel"].create({ @@ -39,7 +36,7 @@ QUnit.test("on leave & away", async () => { await contains(".o-mail-ImStatus i.fa-plane[title='Idle']"); }); -QUnit.test("on leave & offline", async () => { +test("on leave & offline", async () => { const pyEnv = await startServer(); const partnerId = pyEnv["res.partner"].create({ name: "Demo", im_status: "leave_offline" }); const channelId = pyEnv["discuss.channel"].create({ diff --git a/addons/hr_holidays/static/tests/leave_stats_tests.js b/addons/hr_holidays/static/tests/legacy/leave_stats_tests.js similarity index 100% rename from addons/hr_holidays/static/tests/leave_stats_tests.js rename to addons/hr_holidays/static/tests/legacy/leave_stats_tests.js diff --git a/addons/hr_holidays/static/tests/radio_image_field_tests.js b/addons/hr_holidays/static/tests/legacy/radio_image_field_tests.js similarity index 100% rename from addons/hr_holidays/static/tests/radio_image_field_tests.js rename to addons/hr_holidays/static/tests/legacy/radio_image_field_tests.js diff --git a/addons/hr_holidays/static/tests/mock_server/mock_models/hr_employee.js b/addons/hr_holidays/static/tests/mock_server/mock_models/hr_employee.js new file mode 100644 index 0000000000000..13dac0fba3abd --- /dev/null +++ b/addons/hr_holidays/static/tests/mock_server/mock_models/hr_employee.js @@ -0,0 +1,5 @@ +import { models } from "@web/../tests/web_test_helpers"; + +export class HrEmployee extends models.ServerModel { + _name = "hr.employee"; +} diff --git a/addons/hr_holidays/static/tests/mock_server/mock_models/res_partner.js b/addons/hr_holidays/static/tests/mock_server/mock_models/res_partner.js new file mode 100644 index 0000000000000..ffd23a429634e --- /dev/null +++ b/addons/hr_holidays/static/tests/mock_server/mock_models/res_partner.js @@ -0,0 +1,23 @@ +import { mailModels } from "@mail/../tests/mail_test_helpers"; +import { fields } from "@web/../tests/web_test_helpers"; + +export class ResPartner extends mailModels.ResPartner { + out_of_office_date_end = fields.Date(); + + /** + * Overrides to add out of office to employees. + * @override + * @type {typeof mailModels.ResPartner["prototype"]["mail_partner_format"]} + */ + mail_partner_format(ids) { + const partnerFormats = super.mail_partner_format(...arguments); + const partners = this._filter([["id", "in", ids]], { + active_test: false, + }); + for (const partner of partners) { + // Not a real field but ease the testing + partnerFormats[partner.id].out_of_office_date_end = partner.out_of_office_date_end; + } + return partnerFormats; + } +} diff --git a/addons/hr_holidays/static/tests/thread_icon_patch_tests.js b/addons/hr_holidays/static/tests/thread_icon_patch.test.js similarity index 74% rename from addons/hr_holidays/static/tests/thread_icon_patch_tests.js rename to addons/hr_holidays/static/tests/thread_icon_patch.test.js index caa0d4f097a7a..ed577bf91826c 100644 --- a/addons/hr_holidays/static/tests/thread_icon_patch_tests.js +++ b/addons/hr_holidays/static/tests/thread_icon_patch.test.js @@ -1,15 +1,12 @@ -/* @odoo-module */ +import { describe, test } from "@odoo/hoot"; +import { Command, serverState } from "@web/../tests/web_test_helpers"; +import { startServer, start, openDiscuss, contains } from "@mail/../tests/mail_test_helpers"; +import { defineHrHolidaysModels } from "@hr_holidays/../tests/hr_holidays_test_helpers"; -import { serverState, startServer } from "@bus/../tests/helpers/mock_python_environment"; +describe.current.tags("desktop"); +defineHrHolidaysModels(); -import { Command } from "@mail/../tests/helpers/command"; -import { openDiscuss, start } from "@mail/../tests/helpers/test_utils"; - -import { contains } from "@web/../tests/utils"; - -QUnit.module("thread_icon"); - -QUnit.test("thread icon of a chat when correspondent is on leave & online", async () => { +test("thread icon of a chat when correspondent is on leave & online", async () => { const pyEnv = await startServer(); const partnerId = pyEnv["res.partner"].create({ im_status: "leave_online", @@ -30,7 +27,7 @@ QUnit.test("thread icon of a chat when correspondent is on leave & online", asyn }); }); -QUnit.test("thread icon of a chat when correspondent is on leave & away", async () => { +test("thread icon of a chat when correspondent is on leave & away", async () => { const pyEnv = await startServer(); const partnerId = pyEnv["res.partner"].create({ im_status: "leave_away", @@ -51,7 +48,7 @@ QUnit.test("thread icon of a chat when correspondent is on leave & away", async }); }); -QUnit.test("thread icon of a chat when correspondent is on leave & offline", async () => { +test("thread icon of a chat when correspondent is on leave & offline", async () => { const pyEnv = await startServer(); const partnerId = pyEnv["res.partner"].create({ im_status: "leave_offline", diff --git a/addons/hr_holidays/static/tests/thread_patch_tests.js b/addons/hr_holidays/static/tests/thread_patch.test.js similarity index 57% rename from addons/hr_holidays/static/tests/thread_patch_tests.js rename to addons/hr_holidays/static/tests/thread_patch.test.js index b137327f022d8..1ad2308409fe6 100644 --- a/addons/hr_holidays/static/tests/thread_patch_tests.js +++ b/addons/hr_holidays/static/tests/thread_patch.test.js @@ -1,15 +1,12 @@ -/* @odoo-module */ +import { describe, test } from "@odoo/hoot"; +import { Command, serverState } from "@web/../tests/web_test_helpers"; +import { startServer, start, openDiscuss, contains } from "@mail/../tests/mail_test_helpers"; +import { defineHrHolidaysModels } from "@hr_holidays/../tests/hr_holidays_test_helpers"; -import { serverState, startServer } from "@bus/../tests/helpers/mock_python_environment"; +describe.current.tags("desktop"); +defineHrHolidaysModels(); -import { Command } from "@mail/../tests/helpers/command"; -import { openDiscuss, start } from "@mail/../tests/helpers/test_utils"; - -import { contains } from "@web/../tests/utils"; - -QUnit.module("thread"); - -QUnit.test("out of office message on direct chat with out of office partner", async () => { +test("out of office message on direct chat with out of office partner", async () => { const pyEnv = await startServer(); const partnerId = pyEnv["res.partner"].create({ name: "Demo",