summaryrefslogtreecommitdiff
path: root/addons/project/tests/test_project_base.py
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/project/tests/test_project_base.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/project/tests/test_project_base.py')
-rw-r--r--addons/project/tests/test_project_base.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/addons/project/tests/test_project_base.py b/addons/project/tests/test_project_base.py
new file mode 100644
index 00000000..72350b1a
--- /dev/null
+++ b/addons/project/tests/test_project_base.py
@@ -0,0 +1,106 @@
+# -*- coding: utf-8 -*-
+
+from odoo.tests.common import SavepointCase
+from odoo.exceptions import UserError
+
+class TestProjectCommon(SavepointCase):
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestProjectCommon, cls).setUpClass()
+
+ user_group_employee = cls.env.ref('base.group_user')
+ user_group_project_user = cls.env.ref('project.group_project_user')
+ user_group_project_manager = cls.env.ref('project.group_project_manager')
+
+ cls.partner_1 = cls.env['res.partner'].create({
+ 'name': 'Valid Lelitre',
+ 'email': 'valid.lelitre@agrolait.com'})
+ cls.partner_2 = cls.env['res.partner'].create({
+ 'name': 'Valid Poilvache',
+ 'email': 'valid.other@gmail.com'})
+ cls.partner_3 = cls.env['res.partner'].create({
+ 'name': 'Valid Poilboeuf',
+ 'email': 'valid.poilboeuf@gmail.com'})
+
+ # Test users to use through the various tests
+ Users = cls.env['res.users'].with_context({'no_reset_password': True})
+ cls.user_public = Users.create({
+ 'name': 'Bert Tartignole',
+ 'login': 'bert',
+ 'email': 'b.t@example.com',
+ 'signature': 'SignBert',
+ 'notification_type': 'email',
+ 'groups_id': [(6, 0, [cls.env.ref('base.group_public').id])]})
+ cls.user_portal = Users.create({
+ 'name': 'Chell Gladys',
+ 'login': 'chell',
+ 'email': 'chell@gladys.portal',
+ 'signature': 'SignChell',
+ 'notification_type': 'email',
+ 'groups_id': [(6, 0, [cls.env.ref('base.group_portal').id])]})
+ cls.user_projectuser = Users.create({
+ 'name': 'Armande ProjectUser',
+ 'login': 'Armande',
+ 'email': 'armande.projectuser@example.com',
+ 'groups_id': [(6, 0, [user_group_employee.id, user_group_project_user.id])]
+ })
+ cls.user_projectmanager = Users.create({
+ 'name': 'Bastien ProjectManager',
+ 'login': 'bastien',
+ 'email': 'bastien.projectmanager@example.com',
+ 'groups_id': [(6, 0, [user_group_employee.id, user_group_project_manager.id])]})
+
+ # Test 'Pigs' project
+ cls.project_pigs = cls.env['project.project'].with_context({'mail_create_nolog': True}).create({
+ 'name': 'Pigs',
+ 'privacy_visibility': 'employees',
+ 'alias_name': 'project+pigs',
+ 'partner_id': cls.partner_1.id})
+ # Already-existing tasks in Pigs
+ cls.task_1 = cls.env['project.task'].with_context({'mail_create_nolog': True}).create({
+ 'name': 'Pigs UserTask',
+ 'user_id': cls.user_projectuser.id,
+ 'project_id': cls.project_pigs.id})
+ cls.task_2 = cls.env['project.task'].with_context({'mail_create_nolog': True}).create({
+ 'name': 'Pigs ManagerTask',
+ 'user_id': cls.user_projectmanager.id,
+ 'project_id': cls.project_pigs.id})
+
+ # Test 'Goats' project, same as 'Pigs', but with 2 stages
+ cls.project_goats = cls.env['project.project'].with_context({'mail_create_nolog': True}).create({
+ 'name': 'Goats',
+ 'privacy_visibility': 'followers',
+ 'alias_name': 'project+goats',
+ 'partner_id': cls.partner_1.id,
+ 'type_ids': [
+ (0, 0, {
+ 'name': 'New',
+ 'sequence': 1,
+ }),
+ (0, 0, {
+ 'name': 'Won',
+ 'sequence': 10,
+ })]
+ })
+
+ def format_and_process(self, template, to='groups@example.com, other@gmail.com', subject='Frogs',
+ extra='', email_from='Sylvie Lelitre <test.sylvie.lelitre@agrolait.com>',
+ cc='', msg_id='<1198923581.41972151344608186760.JavaMail@agrolait.com>',
+ model=None, target_model='project.task', target_field='name'):
+ self.assertFalse(self.env[target_model].search([(target_field, '=', subject)]))
+ mail = template.format(to=to, subject=subject, cc=cc, extra=extra, email_from=email_from, msg_id=msg_id)
+ self.env['mail.thread'].with_context(mail_channel_noautofollow=True).message_process(model, mail)
+ return self.env[target_model].search([(target_field, '=', subject)])
+
+ def test_delete_project_with_tasks(self):
+ """User should never be able to delete a project with tasks"""
+
+ with self.assertRaises(UserError):
+ self.project_pigs.unlink()
+
+ # click on the archive button
+ self.project_pigs.write({'active': False})
+
+ with self.assertRaises(UserError):
+ self.project_pigs.unlink()