summaryrefslogtreecommitdiff
path: root/addons/web/static/tests
diff options
context:
space:
mode:
authorYannick Tivisse <yti@odoo.com>2019-07-02 10:41:19 +0200
committerYannick Tivisse <yti@odoo.com>2019-07-12 13:01:36 +0200
commitf896afcc8a54eae3efcdf034e3fd256942f7fa78 (patch)
treef971a366144eacbdcdb77e74650ddaea75dce4d7 /addons/web/static/tests
parentba0308923030c2dcafa1a1577742fa5233d71a04 (diff)
[FIX] web: Call 'toggle_active' instead of 'write'
Purpose ======= Currently when clicking on 'Archive' or 'Unarchive' on the list view, we write directly on the record {'active': False}, instead of calling toggle_active. Missing that way implementation of numerous business cases. Example - Archive a record --> archive its next activities - (Un)Archive a user --> (Un)Archive its partner - (Un)Archive a product variant --> (Un)Archive its template if there is only one variant - Archive an employee --> Open a wizard to choose an exit plan + describe the departure reason - Archive a route --> Archive its procurement rules - ... Specification ============= - Call toggle_active instead of write when calling toggleActive in the web client. - On the other hand, use actionArchive and actionUnarchive to apply the toggle action on the related records only.
Diffstat (limited to 'addons/web/static/tests')
-rw-r--r--addons/web/static/tests/views/kanban_model_tests.js9
-rw-r--r--addons/web/static/tests/views/kanban_tests.js56
-rw-r--r--addons/web/static/tests/views/list_tests.js6
3 files changed, 69 insertions, 2 deletions
diff --git a/addons/web/static/tests/views/kanban_model_tests.js b/addons/web/static/tests/views/kanban_model_tests.js
index 39b601d9a51..81deca04968 100644
--- a/addons/web/static/tests/views/kanban_model_tests.js
+++ b/addons/web/static/tests/views/kanban_model_tests.js
@@ -135,6 +135,13 @@ QUnit.module('Views', {
var model = createModel({
Model: KanbanModel,
data: this.data,
+ mockRPC: function (route, args) {
+ if (route === '/web/dataset/call_kw/partner/action_archive') {
+ this.data.partner.records[0].active = false;
+ return Promise.resolve();
+ }
+ return this._super.apply(this, arguments);
+ },
});
var params = _.extend(this.params, {
@@ -151,7 +158,7 @@ QUnit.module('Views', {
// archive the column 'xphone'
var recordIDs = _.pluck(xphoneGroup.data, 'id');
- await model.toggleActive(recordIDs, false, xphoneGroup.id);
+ await model.actionArchive(recordIDs, xphoneGroup.id);
state = model.get(resultID);
xphoneGroup = _.findWhere(state.data, {res_id: 37});
assert.strictEqual(xphoneGroup.count, 0, 'xphone group has no record anymore');
diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js
index 7284caeae21..d3ff979de8b 100644
--- a/addons/web/static/tests/views/kanban_tests.js
+++ b/addons/web/static/tests/views/kanban_tests.js
@@ -176,6 +176,20 @@ QUnit.module('Views', {
'<div><field name="foo"/></div>' +
'</t></templates></kanban>',
groupBy: ['bar'],
+ mockRPC: function (route, args) {
+ if (route === '/web/dataset/call_kw/partner/toggle_active') {
+ var partnerIDS = args.args[0];
+ var records = this.data.partner.records
+ _.each(partnerIDS, function(partnerID) {
+ _.find(records, function (record) {
+ return record.id === partnerID;
+ }).active = false;
+ })
+ this.data.partner.records[0].active;
+ return Promise.resolve();
+ }
+ return this._super.apply(this, arguments);
+ },
});
// check archive/restore all actions in kanban header's config dropdown
@@ -219,6 +233,20 @@ QUnit.module('Views', {
'<div><field name="foo"/></div>' +
'</t></templates></kanban>',
groupBy: ['bar'],
+ mockRPC: function (route, args) {
+ if (route === '/web/dataset/call_kw/partner/toggle_active') {
+ var partnerIDS = args.args[0];
+ var records = this.data.partner.records
+ _.each(partnerIDS, function(partnerID) {
+ _.find(records, function (record) {
+ return record.id === partnerID;
+ }).active = false;
+ })
+ this.data.partner.records[0].active;
+ return Promise.resolve();
+ }
+ return this._super.apply(this, arguments);
+ },
});
// check archive/restore all actions in kanban header's config dropdown
@@ -4747,6 +4775,20 @@ QUnit.module('Views', {
'</t></templates>' +
'</kanban>',
groupBy: ['bar'],
+ mockRPC: function (route, args) {
+ if (route === '/web/dataset/call_kw/partner/toggle_active') {
+ var partnerIDS = args.args[0];
+ var records = this.data.partner.records
+ _.each(partnerIDS, function(partnerID) {
+ _.find(records, function (record) {
+ return record.id === partnerID;
+ }).active = false;
+ })
+ this.data.partner.records[0].active;
+ return Promise.resolve();
+ }
+ return this._super.apply(this, arguments);
+ },
});
assert.strictEqual(kanban.$('.o_kanban_group:eq(1) .o_kanban_counter_side').text(), "36",
@@ -4790,6 +4832,20 @@ QUnit.module('Views', {
'</t></templates>' +
'</kanban>',
groupBy: ['bar'],
+ mockRPC: function (route, args) {
+ if (route === '/web/dataset/call_kw/partner/toggle_active') {
+ var partnerIDS = args.args[0];
+ var records = this.data.partner.records
+ _.each(partnerIDS, function(partnerID) {
+ _.find(records, function (record) {
+ return record.id === partnerID;
+ }).active = false;
+ })
+ this.data.partner.records[0].active;
+ return Promise.resolve();
+ }
+ return this._super.apply(this, arguments);
+ },
});
assert.deepEqual(kanban.exportState().resIds, [1, 2, 3, 4]);
diff --git a/addons/web/static/tests/views/list_tests.js b/addons/web/static/tests/views/list_tests.js
index 797aaea016b..2e6969bab48 100644
--- a/addons/web/static/tests/views/list_tests.js
+++ b/addons/web/static/tests/views/list_tests.js
@@ -1473,6 +1473,10 @@ QUnit.module('Views', {
arch: '<tree><field name="foo"/></tree>',
mockRPC: function (route) {
assert.step(route);
+ if (route === '/web/dataset/call_kw/foo/action_archive') {
+ this.data.foo.records[0].active = false;
+ return Promise.resolve();
+ }
return this._super.apply(this, arguments);
},
});
@@ -1496,7 +1500,7 @@ QUnit.module('Views', {
assert.strictEqual($('.modal').length, 1, 'a confirm modal should be displayed');
await testUtils.dom.click($('.modal-footer .btn-primary'));
assert.containsN(list, 'tbody td.o_list_record_selector', 3, "should have 3 records");
- assert.verifySteps(['/web/dataset/call_kw/foo/write', '/web/dataset/search_read']);
+ assert.verifySteps(['/web/dataset/call_kw/foo/action_archive', '/web/dataset/search_read']);
list.destroy();
});