1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
# -*- coding: utf-8 -*-
from odoo import Command
from odoo.tests import HttpCase, tagged
@tagged('post_install', '-at_install')
class TestProjectSharingUi(HttpCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
user = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nolog': True}).create({
'name': 'Georges',
'login': 'georges1',
'password': 'georges1',
'email': 'georges@project.portal',
'signature': 'SignGeorges',
'notification_type': 'email',
'groups_id': [Command.set([cls.env.ref('base.group_portal').id])],
})
cls.partner_portal = cls.env['res.partner'].with_context({'mail_create_nolog': True}).create({
'name': 'Georges',
'email': 'georges@project.portal',
'company_id': False,
'user_ids': [user.id],
})
cls.project_portal = cls.env['project.project'].with_context({'mail_create_nolog': True}).create({
'name': 'Project Sharing',
'privacy_visibility': 'portal',
'alias_name': 'project+sharing',
'partner_id': cls.partner_portal.id,
'type_ids': [
Command.create({'name': 'To Do', 'sequence': 1}),
Command.create({'name': 'Done', 'sequence': 10})
],
})
cls.env['res.config.settings'].create({'group_project_milestone': True}).execute()
def test_blocked_task_with_project_sharing_string_portal(self):
"""
Ensure the portal user shows the message 'This task is currently blocked...'.
Flow:
- Activated Task Dependencies in a portal project
- Create a 'New' task stage
- Create a project(Test Project)
- Ensure the portal user receives the message 'This task is currently blocked..'.
- Create task(Test Task)
- Create a task with a Blocked task (Test Task)
"""
self.project_portal.write({
'allow_task_dependencies': True,
'collaborator_ids': [
Command.create({'partner_id': self.partner_portal.id}),
],
})
project = self.env['project.project'].with_context({'mail_create_nolog': True}).create({
'name': 'Test Project',
})
self.env['project.share.wizard'].create({
'res_model': 'project.project',
'res_id': self.project_portal.id,
'collaborator_ids': [
Command.create({'partner_id': self.partner_portal.id, 'access_mode': 'edit'}),
],
})
task = self.env['project.task'].with_context({'mail_create_nolog': True}).create({
'name': 'Test Task',
'project_id': project.id,
})
self.env['project.task'].with_context({'mail_create_nolog': True}).create({
'name': 'Portal Task',
'project_id': self.project_portal.id,
'depend_on_ids': task.ids,
'stage_id': self.project_portal.type_ids[0].id,
})
self.start_tour("/odoo", 'project_sharing_with_blocked_task_tour', login="georges1")
def test_01_project_sharing(self):
""" Test Project Sharing UI with an internal user """
self.start_tour("/odoo", 'project_sharing_tour', login="admin")
def test_02_project_sharing(self):
""" Test project sharing ui with a portal user.
The additional data created here are the data created in the first test with the tour js.
Since a problem to logout Mitchell Admin to log in as Georges user, this test is created
to launch a tour with portal user.
"""
self.env['project.share.wizard'].create({
'res_model': 'project.project',
'res_id': self.project_portal.id,
'collaborator_ids': [
Command.create({'partner_id': self.partner_portal.id, 'access_mode': 'edit'}),
],
})
self.project_portal.write({
'task_ids': [Command.create({
'name': "Test Project Sharing",
'stage_id': self.project_portal.type_ids.filtered(lambda stage: stage.sequence == 10)[:1].id,
})],
})
self.start_tour("/my/projects", 'portal_project_sharing_tour', login='georges1')
def test_03_project_sharing(self):
self.env['project.share.wizard'].create({
'res_model': 'project.project',
'res_id': self.project_portal.id,
'collaborator_ids': [
Command.create({'partner_id': self.partner_portal.id, 'access_mode': 'edit'}),
],
})
self.project_portal.write({
'task_ids': [Command.create({
'name': "Test Project Sharing",
'stage_id': self.project_portal.type_ids.filtered(lambda stage: stage.sequence == 10)[:1].id,
})],
'allow_milestones': False,
})
self.start_tour("/my/projects", 'portal_project_sharing_tour_with_disallowed_milestones', login='georges1')
|