diff --git a/support_branding/models/res_config_settings.py b/support_branding/models/res_config_settings.py index a07ecccea..6cbb58341 100644 --- a/support_branding/models/res_config_settings.py +++ b/support_branding/models/res_config_settings.py @@ -34,3 +34,6 @@ class ResConfigSettings(models.TransientModel): support_branding_color = fields.Char(string="Branding color") support_email = fields.Char(string="Support email") support_release = fields.Char(string="Support release") + + def test_support_branding_error(self): + return 9 / 0 diff --git a/support_branding/static/src/tests/support_branding_tests.js b/support_branding/static/src/tests/support_branding_tests.js new file mode 100644 index 000000000..e20fbcd43 --- /dev/null +++ b/support_branding/static/src/tests/support_branding_tests.js @@ -0,0 +1,68 @@ +odoo.define('support_branding.crash_manager_tests', function (require) { + "use strict"; + + const CrashManager = require('web.CrashManager').CrashManager; + const testUtils = require('web.test_utils'); + const createActionManager = testUtils.createActionManager; + + QUnit.module('support_branding', {}, function() { + QUnit.test("Error Dialog is created", async function (assert) { + // No of assertion expected. + assert.expect(5); + + // Create action manager to trigger error dialog + var actionManager = await createActionManager({ + services: { + crash_manager: CrashManager, + } + }); + + // Check if action with crash manager service was created. + assert.notOk(_.isEmpty(actionManager), "Action manager with " + + "crash manager service should be created and not empty"); + + // Test custom error + let error = { + type: 'Support Branding Odoo Client Error', + message: 'Message', + data: { + debug: 'Traceback', + }, + }; + // NB: This will use the saved res.config settings of support + // branding containing the support mail. It is fetched in crash + // manager init function as saved in res.config settings. + // attached is a default data xml with sample data. + actionManager.call('crash_manager', 'show_error', error); + await testUtils.nextTick(); + var $mail_dialog = 'form.support-branding-submit-form'; + + // Confirm if we have a form and its required elements. + assert.containsOnce($, $mail_dialog, "Error dialog should be " + + "opened and showing mail section on footer"); + assert.containsOnce($, '.support-desc', 'We should have a ' + + 'textarea to add our issues'); + assert.containsOnce($, 'button.support-btn', 'We should have a ' + + 'send mail button to send support mail'); + + // Add a test text mail. + $(".support-desc").val("Send this as a test mail to " + + "configured support mail"); + + // Try to send mail, by default a popup will be triggered + // defaulting to form call of 'mailto'. + await testUtils.dom.click($('button.support-btn'), + {allowInvisible: true}); + + // Close error dialog + await testUtils.dom.click($('button.close'), + {allowInvisible: true}); + + // Confirm dialog was closed + assert.containsNone($, $mail_dialog, + "Error Dialog should be closed"); + + actionManager.destroy(); + }); + }); +}); diff --git a/support_branding/views/asset.xml b/support_branding/views/asset.xml index 7e67bc58b..1136da3fd 100644 --- a/support_branding/views/asset.xml +++ b/support_branding/views/asset.xml @@ -25,4 +25,16 @@ /> +