Before this commit, when you clicked on the dropdown, the action was executed but the dropdown wasn't closed. This issue was very annoying on mobile because the dropdown is in fullscreen and we couldn't see the result of the action. Now, we removed the "stopPropagation" which stops the bootstrap event to close this dropdown.
124 lines
4.6 KiB
JavaScript
124 lines
4.6 KiB
JavaScript
odoo.define('mail.systray_tests', function (require) {
|
|
"use strict";
|
|
|
|
var systray = require('mail.systray');
|
|
var testUtils = require('web.test_utils');
|
|
|
|
|
|
QUnit.module('mail', {}, function () {
|
|
|
|
QUnit.module('ActivityMenu', {
|
|
beforeEach: function () {
|
|
|
|
this.data = {
|
|
'mail.activity.menu': {
|
|
fields: {
|
|
name: { type: "char" },
|
|
res_model: { type: "char" },
|
|
planned_count: { type: "integer"},
|
|
today_count: { type: "integer"},
|
|
overdue_count: { type: "integer"},
|
|
total_count: { type: "integer"},
|
|
},
|
|
records: [{
|
|
name: "Contact",
|
|
res_model: "res.partner",
|
|
planned_count: 0,
|
|
today_count: 1,
|
|
overdue_count: 0,
|
|
total_count: 1,
|
|
},
|
|
{
|
|
name: "Task",
|
|
res_model: "project.task",
|
|
planned_count: 1,
|
|
today_count: 0,
|
|
overdue_count: 0,
|
|
total_count: 1,
|
|
},
|
|
{
|
|
name: "Issue",
|
|
res_model: "project.issue",
|
|
planned_count: 1,
|
|
today_count: 1,
|
|
overdue_count: 1,
|
|
total_count: 3,
|
|
}],
|
|
},
|
|
};
|
|
}
|
|
});
|
|
|
|
QUnit.test('activity menu widget: menu with no records', function (assert) {
|
|
assert.expect(1);
|
|
|
|
var activityMenu = new systray.ActivityMenu();
|
|
testUtils.addMockEnvironment(activityMenu, {
|
|
mockRPC: function (route, args) {
|
|
if (args.method === 'activity_user_count') {
|
|
return $.when([]);
|
|
}
|
|
return this._super(route, args);
|
|
},
|
|
});
|
|
activityMenu.appendTo($('#qunit-fixture'));
|
|
assert.ok(activityMenu.$('.o_no_activity').hasClass('o_no_activity'), "should not have instance of widget");
|
|
activityMenu.destroy();
|
|
});
|
|
|
|
QUnit.test('activity menu widget: activity menu with 3 records', function (assert) {
|
|
assert.expect(10);
|
|
var self = this;
|
|
var activityMenu = new systray.ActivityMenu();
|
|
testUtils.addMockEnvironment(activityMenu, {
|
|
mockRPC: function (route, args) {
|
|
if (args.method === 'activity_user_count') {
|
|
return $.when(self.data['mail.activity.menu']['records']);
|
|
}
|
|
return this._super(route, args);
|
|
},
|
|
});
|
|
activityMenu.appendTo($('#qunit-fixture'));
|
|
assert.ok(activityMenu.$el.hasClass('o_mail_navbar_item'), 'should be the instance of widget');
|
|
assert.ok(activityMenu.$('.o_mail_channel_preview').hasClass('o_mail_channel_preview'), "should instance of widget");
|
|
assert.ok(activityMenu.$('.o_notification_counter').hasClass('o_notification_counter'), "widget should have notification counter");
|
|
assert.strictEqual(parseInt(activityMenu.el.innerText), 5, "widget should have 5 notification counter");
|
|
|
|
var context = {};
|
|
testUtils.intercept(activityMenu, 'do_action', function(event) {
|
|
assert.deepEqual(event.data.action.context, context, "wrong context value");
|
|
}, true);
|
|
|
|
// case 1: click on "late"
|
|
context = {
|
|
search_default_activities_overdue: 1,
|
|
};
|
|
activityMenu.$('.dropdown-toggle').click();
|
|
assert.strictEqual(activityMenu.$el.hasClass("open"), true, 'ActivityMenu should be open');
|
|
activityMenu.$(".o_activity_filter_button[data-model_name='Issue'][data-filter='overdue']").click();
|
|
assert.strictEqual(activityMenu.$el.hasClass("open"), false, 'ActivityMenu should be closed');
|
|
// case 2: click on "today"
|
|
context = {
|
|
search_default_activities_today: 1,
|
|
};
|
|
activityMenu.$('.dropdown-toggle').click();
|
|
activityMenu.$(".o_activity_filter_button[data-model_name='Issue'][data-filter='today']").click();
|
|
// case 3: click on "future"
|
|
context = {
|
|
search_default_activities_upcoming_all: 1,
|
|
};
|
|
activityMenu.$('.dropdown-toggle').click();
|
|
activityMenu.$(".o_activity_filter_button[data-model_name='Issue'][data-filter='upcoming_all']").click();
|
|
// case 4: click anywere else
|
|
context = {
|
|
search_default_activities_overdue: 1,
|
|
search_default_activities_today: 1,
|
|
};
|
|
activityMenu.$('.dropdown-toggle').click();
|
|
activityMenu.$(".o_mail_navbar_dropdown_channels > div[data-model_name='Issue']").click();
|
|
|
|
activityMenu.destroy();
|
|
});
|
|
});
|
|
});
|