diff --git a/addons/hr/__manifest__.py b/addons/hr/__manifest__.py index 6180b6ddb88..599c49b168a 100644 --- a/addons/hr/__manifest__.py +++ b/addons/hr/__manifest__.py @@ -70,6 +70,7 @@ ], 'web.assets_tests': [ 'hr/static/tests/tours/hr_employee_flow.js', + 'hr/static/tests/tours/user_modify_own_profile_tour.js', ], }, 'license': 'LGPL-3', diff --git a/addons/hr/static/tests/tours/user_modify_own_profile_tour.js b/addons/hr/static/tests/tours/user_modify_own_profile_tour.js new file mode 100644 index 00000000000..e88659b0a7b --- /dev/null +++ b/addons/hr/static/tests/tours/user_modify_own_profile_tour.js @@ -0,0 +1,19 @@ +/** @odoo-module **/ + +import tour from 'web_tour.tour'; + +/** + * As 'hr' changes the flow a bit and displays the user preferences form in a full view instead of + * a modal, we adapt the steps of the original tour accordingly. + */ +tour.tours['mail/static/tests/tours/user_modify_own_profile_tour.js'].steps = [{ + content: 'Open user account menu', + trigger: '.o_user_menu button', +}, { + content: "Open preferences / profile screen", + trigger: '[data-menu=settings]', +}, { + content: "Update the email address", + trigger: 'div[name="email"] input', + run: 'text updatedemail@example.com', +}, ...tour.stepUtils.saveForm()]; diff --git a/addons/mail/static/tests/tours/user_modify_own_profile_tour.js b/addons/mail/static/tests/tours/user_modify_own_profile_tour.js new file mode 100644 index 00000000000..3b85bbd04cd --- /dev/null +++ b/addons/mail/static/tests/tours/user_modify_own_profile_tour.js @@ -0,0 +1,26 @@ +/** @odoo-module **/ + +import tour from 'web_tour.tour'; + +/** + * Verify that a user can modify their own profile information. + */ +tour.register('mail/static/tests/tours/user_modify_own_profile_tour.js', { + test: true, +}, [{ + content: 'Open user account menu', + trigger: '.o_user_menu button', +}, { + content: "Open preferences / profile screen", + trigger: '[data-menu=settings]', +}, { + content: "Update the email address", + trigger: 'div[name="email"] input', + run: 'text updatedemail@example.com', +}, { + content: "Save the form", + trigger: 'button[name="preference_save"]', +}, { + content: "Wait until the modal is closed", + trigger: 'body:not(.modal-open)', +}]); diff --git a/addons/mail/tests/__init__.py b/addons/mail/tests/__init__.py index 4f050f4c3cd..c492546effb 100644 --- a/addons/mail/tests/__init__.py +++ b/addons/mail/tests/__init__.py @@ -16,3 +16,4 @@ from . import test_res_users_settings from . import test_rtc from . import test_uninstall from . import test_update_notification +from . import test_user_modify_own_profile diff --git a/addons/mail/tests/test_user_modify_own_profile.py b/addons/mail/tests/test_user_modify_own_profile.py new file mode 100644 index 00000000000..3477cd9bfa5 --- /dev/null +++ b/addons/mail/tests/test_user_modify_own_profile.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.tests import HttpCase, tagged + + +@tagged('-at_install', 'post_install') +class TestUserModifyOwnProfile(HttpCase): + + def test_user_modify_own_profile(self): + """" A user should be able to modify their own profile. + Even if that user does not have access rights to write on the res.users model. """ + + self.start_tour("/web", "mail/static/tests/tours/user_modify_own_profile_tour.js", login="demo") + self.assertEqual(self.env.ref('base.user_demo').email, "updatedemail@example.com") diff --git a/odoo/addons/base/views/res_users_views.xml b/odoo/addons/base/views/res_users_views.xml index 6e13d34ad6c..31f3feb34ac 100644 --- a/odoo/addons/base/views/res_users_views.xml +++ b/odoo/addons/base/views/res_users_views.xml @@ -449,7 +449,7 @@ res.users -
+