diff --git a/addons/calendar/static/src/components/activity/activity.xml b/addons/calendar/static/src/components/activity/activity.xml index 52377809d24..11e0b9c8c07 100644 --- a/addons/calendar/static/src/components/activity/activity.xml +++ b/addons/calendar/static/src/components/activity/activity.xml @@ -7,7 +7,7 @@ - diff --git a/addons/calendar/static/src/models/activity.js b/addons/calendar/static/src/models/activity.js index b741e311329..80d706ee25d 100644 --- a/addons/calendar/static/src/models/activity.js +++ b/addons/calendar/static/src/models/activity.js @@ -55,9 +55,7 @@ patchRecordMethods('Activity', { method: 'action_create_calendar_event', args: [[this.id]], }); - this.env.bus.trigger('do-action', { - action - }); + this.env.services.action.doAction(action); } }, }); diff --git a/addons/calendar/static/tests/activity_tests.js b/addons/calendar/static/tests/activity_tests.js new file mode 100644 index 00000000000..bd5bd01761f --- /dev/null +++ b/addons/calendar/static/tests/activity_tests.js @@ -0,0 +1,49 @@ +/** @odoo-module **/ + +import { start, startServer } from '@mail/../tests/helpers/test_utils'; + +QUnit.module('calendar', () => { +QUnit.module('components', () => { +QUnit.module('activity_tests.js'); + +QUnit.test('activity click on Reschedule', async function (assert) { + assert.expect(1); + + const pyEnv = await startServer(); + const resPartnerId = pyEnv['res.partner'].create({}); + const meetingActivityTypeId = pyEnv['mail.activity.type'].create({ icon: 'fa-calendar', name: "Meeting" }); + const calendarAttendeeId = pyEnv['calendar.attendee'].create({ partner_id: resPartnerId }); + const calendaMeetingId = pyEnv['calendar.event'].create({ + res_model: "calendar.event", + name: "meeting1", + start: "2022-07-06 06:30:00", + attendee_ids: [calendarAttendeeId], + }); + pyEnv['mail.activity'].create({ + name: "Small Meeting", + activity_type_id: meetingActivityTypeId, + can_write: true, + res_id: resPartnerId, + res_model: 'res.partner', + calendar_event_id: calendaMeetingId, + }); + + const { click, openFormView } = await start(); + + await openFormView( + { + res_model: 'res.partner', + res_id: resPartnerId, + }, + ); + + await click('.o_Activity_editButton'); + assert.containsOnce( + document.body, + '.o_calendar_view', + "should have opened calendar view" + ); +}); + +}); +}); diff --git a/addons/calendar/static/tests/helpers/mock_server.js b/addons/calendar/static/tests/helpers/mock_server.js index 3e6be594327..b2650358fb2 100644 --- a/addons/calendar/static/tests/helpers/mock_server.js +++ b/addons/calendar/static/tests/helpers/mock_server.js @@ -9,6 +9,32 @@ import { MockServer } from '@web/../tests/helpers/mock_server'; import { datetime_to_str } from 'web.time'; patch(MockServer.prototype, 'calendar', { + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @override + */ + async _performRPC(route, args) { + // mail.activity methods + if (args.model === 'mail.activity' && args.method === 'action_create_calendar_event') { + return { + type: 'ir.actions.act_window', + name: "Meetings", + res_model: 'calendar.event', + view_mode: 'calendar', + views: [[false, 'calendar']], + target: 'current', + }; + } + // calendar.event methods + if (args.model === 'calendar.event' && args.method === 'check_access_rights') { + return true; + } + return this._super(...arguments); + }, + //-------------------------------------------------------------------------- // Private Mocked Methods //-------------------------------------------------------------------------- diff --git a/addons/calendar/static/tests/helpers/view_definitions_setup.js b/addons/calendar/static/tests/helpers/view_definitions_setup.js new file mode 100644 index 00000000000..ab6e8237cee --- /dev/null +++ b/addons/calendar/static/tests/helpers/view_definitions_setup.js @@ -0,0 +1,8 @@ +/** @odoo-module **/ + +import { registry } from '@web/core/registry'; + +const viewArchsRegistry = registry.category('mail.view.archs'); +const calendarArchsRegistry = viewArchsRegistry.category('calendar'); + +calendarArchsRegistry.add('default', '');