summaryrefslogtreecommitdiff
path: root/addons/google_drive/static/tests
diff options
context:
space:
mode:
Diffstat (limited to 'addons/google_drive/static/tests')
-rw-r--r--addons/google_drive/static/tests/gdrive_test.js154
-rw-r--r--addons/google_drive/static/tests/mock_server.js22
2 files changed, 176 insertions, 0 deletions
diff --git a/addons/google_drive/static/tests/gdrive_test.js b/addons/google_drive/static/tests/gdrive_test.js
new file mode 100644
index 00000000..3c684f8d
--- /dev/null
+++ b/addons/google_drive/static/tests/gdrive_test.js
@@ -0,0 +1,154 @@
+odoo.define('google_drive.gdrive_integration', function (require) {
+ "use strict";
+
+ const FormView = require('web.FormView');
+ const testUtils = require('web.test_utils');
+
+ const cpHelpers = testUtils.controlPanel;
+
+ QUnit.module('Google Drive Integration', {
+ beforeEach() {
+ this.data = {
+ partner: {
+ fields: {
+ display_name: { string: "Displayed name", type: "char", searchable: true },
+ },
+ records: [
+ { id: 1, display_name: "Locomotive Breath" },
+ { id: 2, display_name: "Hey Macarena" },
+ ],
+ },
+ };
+ },
+ }, function () {
+
+ QUnit.module('Google Drive ActionMenus');
+
+ QUnit.test('rendering of the google drive attachments in action menus', async function (assert) {
+ assert.expect(3);
+
+ const form = await testUtils.createView({
+ actionMenusRegistry: true,
+ arch:
+ `<form string="Partners">
+ <field name="display_name"/>
+ </form>`,
+ data: this.data,
+ async mockRPC(route, args) {
+ switch (route) {
+ case '/web/dataset/call_kw/google.drive.config/get_google_drive_config':
+ assert.deepEqual(args.args, ['partner', 1],
+ 'The route to get google drive config should have been called');
+ return [{
+ id: 27,
+ name: 'Cyberdyne Systems',
+ }];
+ case '/web/dataset/call_kw/google.drive.config/search_read':
+ return [{
+ google_drive_resource_id: "T1000",
+ google_drive_client_id: "cyberdyne.org",
+ id: 1,
+ }];
+ case '/web/dataset/call_kw/google.drive.config/get_google_drive_url':
+ assert.deepEqual(args.args, [27, 1, 'T1000'],
+ 'The route to get the Google url should have been called');
+ return; // do not return anything or it will open a new tab.
+ }
+ },
+ model: 'partner',
+ res_id: 1,
+ View: FormView,
+ viewOptions: {
+ hasActionMenus: true,
+ },
+ });
+ await cpHelpers.toggleActionMenu(form);
+
+ assert.containsOnce(form, '.oe_share_gdoc_item',
+ "The button to the google action should be present");
+
+ await cpHelpers.toggleMenuItem(form, "Cyberdyne Systems");
+
+ form.destroy();
+ });
+
+ QUnit.test("no google drive data", async function (assert) {
+ assert.expect(1);
+
+ const form = await testUtils.createView({
+ actionMenusRegistry: true,
+ arch:
+ `<form string="Partners">
+ <field name="display_name"/>
+ </form>`,
+ data: this.data,
+ model: 'partner',
+ res_id: 1,
+ View: FormView,
+ viewOptions: {
+ hasActionMenus: true,
+ ids: [1, 2],
+ index: 0,
+ },
+ });
+
+ assert.containsNone(form, ".o_cp_action_menus .o_embed_menu");
+
+ form.destroy();
+ });
+
+ QUnit.test('click on the google drive attachments after switching records', async function (assert) {
+ assert.expect(4);
+
+ let currentRecordId = 1;
+ const form = await testUtils.createView({
+ actionMenusRegistry: true,
+ arch:
+ `<form string="Partners">
+ <field name="display_name"/>
+ </form>`,
+ data: this.data,
+ async mockRPC(route, args) {
+ switch (route) {
+ case '/web/dataset/call_kw/google.drive.config/get_google_drive_config':
+ assert.deepEqual(args.args, ['partner', currentRecordId],
+ 'The route to get google drive config should have been called');
+ return [{
+ id: 27,
+ name: 'Cyberdyne Systems',
+ }];
+ case '/web/dataset/call_kw/google.drive.config/search_read':
+ return [{
+ google_drive_resource_id: "T1000",
+ google_drive_client_id: "cyberdyne.org",
+ id: 1,
+ }];
+ case '/web/dataset/call_kw/google.drive.config/get_google_drive_url':
+ assert.deepEqual(args.args, [27, currentRecordId, 'T1000'],
+ 'The route to get the Google url should have been called');
+ return; // do not return anything or it will open a new tab.
+ }
+ },
+ model: 'partner',
+ res_id: 1,
+ View: FormView,
+ viewOptions: {
+ hasActionMenus: true,
+ ids: [1, 2],
+ index: 0,
+ },
+ });
+
+ await cpHelpers.toggleActionMenu(form);
+ await cpHelpers.toggleMenuItem(form, "Cyberdyne Systems");
+
+ currentRecordId = 2;
+ await cpHelpers.pagerNext(form);
+
+ await cpHelpers.toggleActionMenu(form);
+ await cpHelpers.toggleMenuItem(form, "Cyberdyne Systems");
+
+ form.destroy();
+ });
+ });
+});
diff --git a/addons/google_drive/static/tests/mock_server.js b/addons/google_drive/static/tests/mock_server.js
new file mode 100644
index 00000000..5fb190e3
--- /dev/null
+++ b/addons/google_drive/static/tests/mock_server.js
@@ -0,0 +1,22 @@
+odoo.define('google_drive.MockServer', function (require) {
+ 'use strict';
+
+ var MockServer = require('web.MockServer');
+
+ MockServer.include({
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @override
+ * @private
+ */
+ async _performRpc(route, args) {
+ if (args.method === 'get_google_drive_config') {
+ return [];
+ }
+ return this._super(...arguments);
+ },
+ });
+});