diff --git a/addons/mail/static/src/views/web/activity/activity_controller.js b/addons/mail/static/src/views/web/activity/activity_controller.js
index 63ab433f928..829c21540b7 100644
--- a/addons/mail/static/src/views/web/activity/activity_controller.js
+++ b/addons/mail/static/src/views/web/activity/activity_controller.js
@@ -54,6 +54,11 @@ export class ActivityController extends Component {
});
}
+ getSearchProps() {
+ const { comparision, context, domain, groupBy, orderBy } = this.env.searchModel;
+ return { comparision, context, domain, groupBy, orderBy };
+ }
+
scheduleActivity() {
this.dialog.add(SelectCreateDialog, {
resModel: this.props.resModel,
@@ -64,7 +69,7 @@ export class ActivityController extends Component {
context: this.props.context,
onSelected: async (resIds) => {
await this.activity.schedule(this.props.resModel, resIds);
- this.model.load(this.props);
+ this.model.load(this.getSearchProps());
},
});
}
@@ -86,7 +91,7 @@ export class ActivityController extends Component {
},
},
{
- onClose: () => this.model.load(this.props),
+ onClose: () => this.model.load(this.getSearchProps()),
}
);
}
@@ -119,7 +124,7 @@ export class ActivityController extends Component {
archInfo: this.props.archInfo,
groupedActivities: this.model.activityData.grouped_activities,
scheduleActivity: this.scheduleActivity.bind(this),
- onReloadData: () => this.model.load(this.props),
+ onReloadData: () => this.model.load(this.getSearchProps()),
onEmptyCell: this.openActivityFormView.bind(this),
onSendMailTemplate: this.sendMailTemplate.bind(this),
openRecord: this.openRecord.bind(this),
diff --git a/addons/test_mail/static/tests/activity_tests.js b/addons/test_mail/static/tests/activity_tests.js
index 129afc8d7ad..81879c83aac 100644
--- a/addons/test_mail/static/tests/activity_tests.js
+++ b/addons/test_mail/static/tests/activity_tests.js
@@ -2,6 +2,7 @@
import { startServer } from "@bus/../tests/helpers/mock_python_environment";
+import { ActivityController } from "@mail/views/web/activity/activity_controller";
import { ActivityModel } from "@mail/views/web/activity/activity_model";
import { ActivityRenderer } from "@mail/views/web/activity/activity_renderer";
import { start } from "@mail/../tests/helpers/test_utils";
@@ -22,6 +23,22 @@ const { DateTime } = luxon;
let serverData;
let pyEnv;
+async function openViewAndPatchDoAction(assert) {
+ const { env, openView } = await start({
+ serverData,
+ });
+ await openView({
+ res_model: "mail.test.activity",
+ views: [[false, "activity"]],
+ });
+ patchWithCleanup(env.services.action, {
+ doAction(action, options) {
+ assert.step("doAction");
+ options.onClose();
+ },
+ });
+}
+
QUnit.module("test_mail", {}, function () {
QUnit.module("activity view", {
async beforeEach() {
@@ -883,37 +900,99 @@ QUnit.module("test_mail", {}, function () {
);
QUnit.test("activity view: Domain should not reset on load", async function (assert) {
+ Object.assign(serverData.views, {
+ "mail.test.activity,false,list":
+ '',
+ });
+ const { env, openView } = await start({
+ serverData,
+ });
+ await openView({
+ res_model: "mail.test.activity",
+ views: [[false, "activity"]],
+ domain: [['id', '=', 1]],
+ });
+ patchWithCleanup(env.services.action, {
+ doAction(action, options) {
+ assert.step("doAction");
+ options.onClose();
+ },
+ });
+
+ await click(document.querySelector(".o_activity_view .o_record_selector"));
+ // search create dialog
+ await click(document.querySelector(".modal-lg .o_data_row .o_data_cell"));
+ assert.verifySteps(["doAction"]);
+
+ await click(document.querySelector(".o_activity_view .o_record_selector"));
+ // again open search create dialog
+ assert.strictEqual(
+ document.querySelectorAll(".modal-lg .o_data_row").length,
+ 1,
+ "Should contains only one record after calling schedule activity which load view again"
+ );
+ });
+
+ QUnit.test(
+ "activity view: 'scheduleActivity' does not add activity_ids condition as selectCreateDialog domain",
+ async function (assert) {
+ patchWithCleanup(ActivityController.prototype, {
+ scheduleActivity() {
+ super.scheduleActivity();
+ assert.step(JSON.stringify(this.getSearchProps().domain));
+ },
+ });
Object.assign(serverData.views, {
"mail.test.activity,false,list":
'',
});
- const { env, openView } = await start({
- serverData,
- });
- await openView({
- res_model: "mail.test.activity",
- views: [[false, "activity"]],
- domain: [['id', '=', 1]],
- });
- patchWithCleanup(env.services.action, {
- doAction(action, options) {
- assert.step("doAction");
- options.onClose();
+ await openViewAndPatchDoAction(assert);
+
+ // open search create dialog and schedule an activity
+ await click(document.querySelector(".o_activity_view .o_record_selector"));
+ await click(document.querySelectorAll(".modal-lg .o_data_row .o_data_cell")[0]);
+
+ // again open search create dialog
+ await click(document.querySelector(".o_activity_view .o_record_selector"));
+ assert.verifySteps(["[]", "doAction", "[]"]);
+ }
+ );
+
+ QUnit.test(
+ "activity view: 'onClose' of 'openActivityFormView' does not add activity_ids condition as selectCreateDialog domain",
+ async function (assert) {
+ patchWithCleanup(ActivityController.prototype, {
+ openActivityFormView(resId, activityTypeId) {
+ super.openActivityFormView(resId, activityTypeId);
+ assert.step(JSON.stringify(this.getSearchProps().domain));
},
});
+ await openViewAndPatchDoAction(assert);
- await click(document.querySelector(".o_activity_view .o_record_selector"));
- // search create dialog
- await click(document.querySelector(".modal-lg .o_data_row .o_data_cell"));
- assert.verifySteps(["doAction"]);
-
- await click(document.querySelector(".o_activity_view .o_record_selector"));
- // again open search create dialog
- assert.strictEqual(
- document.querySelectorAll(".modal-lg .o_data_row").length,
- 1,
- "Should contains only one record after calling schedule activity which load view again"
+ //schedule an activity on an empty activity cell
+ await click(
+ document.querySelector(".o_activity_view .o_data_row .o_activity_empty_cell")
);
+ assert.verifySteps(["doAction", "[]"]);
+ }
+ );
+
+ QUnit.test(
+ "activity view: 'onReloadData' does not add activity_ids condition as selectCreateDialog domain",
+ async function (assert) {
+ patchWithCleanup(ActivityController.prototype, {
+ get rendererProps() {
+ const rendererProps = { ...super.rendererProps };
+ assert.step(JSON.stringify(this.getSearchProps().domain));
+ return rendererProps;
+ },
+ });
+ await openViewAndPatchDoAction(assert);
+
+ //schedule another activity on an activity cell with a scheduled activity
+ await click(document.querySelector(".today .o-mail-ActivityCell-deadline"));
+ await click($(".o-mail-ActivityListPopover button:contains(Schedule an activity)")[0]);
+ assert.verifySteps(["[]", "doAction", "[]", "[]"]);
}
);