summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/tools
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/tests/tools
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web/static/tests/tools')
-rw-r--r--addons/web/static/tests/tools/debug_manager_tests.js175
1 files changed, 175 insertions, 0 deletions
diff --git a/addons/web/static/tests/tools/debug_manager_tests.js b/addons/web/static/tests/tools/debug_manager_tests.js
new file mode 100644
index 00000000..77970a19
--- /dev/null
+++ b/addons/web/static/tests/tools/debug_manager_tests.js
@@ -0,0 +1,175 @@
+odoo.define('web.debugManagerTests', function (require) {
+"use strict";
+
+var testUtils = require('web.test_utils');
+var FormView = require('web.FormView');
+
+var createDebugManager = testUtils.createDebugManager;
+
+QUnit.module('DebugManager', {}, function () {
+
+ QUnit.test("list: edit view menu item", async function (assert) {
+ assert.expect(3);
+
+ var debugManager = await createDebugManager();
+
+ await debugManager.appendTo($('#qunit-fixture'));
+
+ // Simulate update debug manager from web client
+ var action = {
+ views: [{
+ displayName: "List",
+ fieldsView: {
+ view_id: 1,
+ },
+ type: "list",
+ }],
+ };
+ var view = {
+ viewType: "list",
+ };
+ await testUtils.nextTick();
+ await debugManager.update('action', action, view);
+
+ var $editView = debugManager.$('a[data-action=edit][data-model="ir.ui.view"]');
+ assert.strictEqual($editView.length, 1, "should have edit view menu item");
+ assert.strictEqual($editView.text().trim(), "Edit View: List",
+ "should have correct menu item text for editing view");
+ assert.strictEqual($editView.data('id'), 1, "should have correct view_id");
+
+ debugManager.destroy();
+ });
+
+ QUnit.test("form: Manage Attachments option", async function (assert) {
+ assert.expect(3);
+
+ var debugManager = await createDebugManager({
+ intercepts: {
+ do_action: function (event) {
+ assert.deepEqual(event.data.action, {
+ context: {
+ default_res_model: "test.model",
+ default_res_id: 5,
+ },
+ domain: [["res_model", "=", "test.model"],["res_id", "=", 5]],
+ name: "Manage Attachments",
+ res_model: "ir.attachment",
+ type: "ir.actions.act_window",
+ views: [[false, "list"],[false, "form"]],
+ });
+ },
+ },
+ });
+ await debugManager.appendTo($('#qunit-fixture'));
+
+ // Simulate update debug manager from web client
+ var action = {
+ views: [{
+ displayName: "Form",
+ fieldsView: {
+ view_id: 2,
+ },
+ type: "form",
+ }],
+ res_model: "test.model",
+ };
+ var view = {
+ viewType: "form",
+ getSelectedIds: function () {
+ return [5];
+ },
+ };
+ await debugManager.update('action', action, view);
+
+ var $attachmentMenu = debugManager.$('a[data-action=get_attachments]');
+ assert.strictEqual($attachmentMenu.length, 1, "should have Manage Attachments menu item");
+ assert.strictEqual($attachmentMenu.text().trim(), "Manage Attachments",
+ "should have correct menu item text");
+ await testUtils.dom.click(debugManager.$('> a')); // open dropdown
+ await testUtils.dom.click($attachmentMenu);
+
+ debugManager.destroy();
+ });
+
+ QUnit.test("Debug: Set defaults with right model", async function (assert) {
+ assert.expect(2);
+
+ /* Click on debug > set default,
+ * set some defaults, click on save
+ * model and some other data should be sent to server
+ */
+
+ // We'll need a full blown architecture with some data
+ var data = {
+ partner: {
+ fields: {
+ foo: {string: "Foo", type: "char", default: "My little Foo Value"},
+ },
+ records: [{
+ id: 1,
+ foo: "yop",
+ }]
+ },
+ 'ir.default': { // We just need this to be defined
+ fields: {},
+ },
+ };
+
+ var form = await testUtils.createView({
+ View: FormView,
+ model: 'partner',
+ data: data,
+ arch: '<form string="Partners">' +
+ '<field name="foo" />' +
+ '</form>',
+ res_id: 1,
+ });
+
+ // Now the real tested component
+ var debugManager = await createDebugManager({
+ data: data,
+ mockRPC: function (route, args) {
+ if (route == "/web/dataset/call_kw/ir.default/set") {
+ assert.deepEqual(args.args, ["partner", "foo", "yop", true, true, false],
+ 'Model, field, value and booleans for current user/company should have been passed');
+ return Promise.resolve();
+ }
+ return this._super.apply(this, arguments);
+ }
+ });
+
+ await debugManager.appendTo($('#qunit-fixture'));
+
+ // Simulate update debug manager from web client
+ var action = {
+ controlPanelFieldsView: {},
+ views: [{
+ fieldsView: {
+ view_id: 1,
+ model: 'partner',
+ type: 'form',
+ },
+ type: "form",
+ }],
+ res_model: 'partner',
+ };
+
+ // We are all set
+ await debugManager.update('action', action, form);
+
+ // click on set_defaults dropdown
+ await testUtils.dom.click(debugManager.$('> a')); // open dropdown
+ await testUtils.dom.click(debugManager.$('a[data-action="set_defaults"]'));
+ var $modal = $('.modal-content');
+ assert.strictEqual($modal.length, 1, 'One modal present');
+
+ $modal.find('select[id=formview_default_fields] option[value=foo]').prop('selected', true);
+
+ // Save
+ await testUtils.dom.click($modal.find('.modal-footer button').eq(1));
+
+ form.destroy();
+ debugManager.destroy();
+ });
+});
+});