Files
tryton/modules/project/tests/test_module.py
T

205 lines
7.2 KiB
Python
Raw Normal View History

2014-12-02 12:55:41 +01:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
2015-02-09 23:02:30 +01:00
import datetime
2015-01-25 16:08:34 +01:00
2020-12-05 11:53:48 +01:00
from trytond.modules.company.tests import (
2021-12-11 17:58:43 +01:00
CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company, set_company)
from trytond.pool import Pool
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
2021-12-11 17:58:43 +01:00
from trytond.transaction import Transaction
2009-06-28 15:12:56 +02:00
class ProjectTestCase(
PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
2014-01-12 19:59:57 +01:00
'Test Project module'
2015-01-27 18:13:51 +01:00
module = 'project'
2009-06-28 15:12:56 +02:00
2016-02-06 19:12:57 +01:00
@with_transaction()
def test_sum_tree(self):
2014-01-26 22:13:37 +01:00
'Test sum_tree'
2016-02-06 19:12:57 +01:00
pool = Pool()
ProjectWork = pool.get('project.work')
2014-01-26 22:13:37 +01:00
2016-02-06 19:12:57 +01:00
company = create_company()
with set_company(company):
p_work_1, = ProjectWork.create([{
2015-09-07 14:00:31 +02:00
'name': 'Work 1',
'company': company.id,
2015-02-09 23:02:30 +01:00
'effort_duration': datetime.timedelta(hours=1),
2014-01-26 22:13:37 +01:00
}])
2016-02-06 19:12:57 +01:00
p_work_1_1, = ProjectWork.create([{
2015-09-07 14:00:31 +02:00
'name': 'Work 1 1',
'company': company.id,
'parent': p_work_1.id,
2015-02-09 23:02:30 +01:00
'effort_duration': datetime.timedelta(hours=1),
2014-01-26 22:13:37 +01:00
}])
2016-02-06 19:12:57 +01:00
p_work_1_2, = ProjectWork.create([{
2015-09-07 14:00:31 +02:00
'name': 'Work 1 2',
'company': company.id,
'parent': p_work_1.id,
2015-02-09 23:02:30 +01:00
'effort_duration': datetime.timedelta(hours=1),
2014-01-26 22:13:37 +01:00
}])
2016-02-06 19:12:57 +01:00
p_work_1_1_1, = ProjectWork.create([{
2015-09-07 14:00:31 +02:00
'name': 'Work 1 1 1',
'company': company.id,
'parent': p_work_1_1.id,
2015-02-09 23:02:30 +01:00
'effort_duration': datetime.timedelta(hours=1),
2014-01-26 22:13:37 +01:00
}])
2016-02-06 19:12:57 +01:00
p_work_1_1_2, = ProjectWork.create([{
2015-09-07 14:00:31 +02:00
'name': 'Work 1 1 2',
'company': company.id,
'parent': p_work_1_1.id,
2015-02-09 23:02:30 +01:00
'effort_duration': datetime.timedelta(hours=1),
2014-01-26 22:13:37 +01:00
}])
2016-02-06 19:12:57 +01:00
p_work_1_1_3, = ProjectWork.create([{
2015-09-07 14:00:31 +02:00
'name': 'Work 1 1 3',
'company': company.id,
'parent': p_work_1_1.id,
2015-02-09 23:02:30 +01:00
'effort_duration': datetime.timedelta(hours=1),
2014-01-26 22:13:37 +01:00
}])
for work, total_effort in (
(p_work_1, 6),
(p_work_1_1, 4),
(p_work_1_2, 1),
(p_work_1_1_1, 1),
(p_work_1_1_2, 1),
(p_work_1_1_3, 1),
):
2015-02-09 23:02:30 +01:00
self.assertEqual(work.total_effort,
datetime.timedelta(hours=total_effort))
2014-01-26 22:13:37 +01:00
@with_transaction()
def test_timesheet_available(self):
'Test timesheet available'
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = 'Project Work'
p_work.save()
self.assertFalse(p_work.timesheet_works)
p_work.timesheet_available = True
p_work.save()
self.assertEqual(len(p_work.timesheet_works), 1)
p_work.timesheet_available = False
p_work.save()
self.assertFalse(p_work.timesheet_works)
@with_transaction(context={'_check_access': True})
def test_delete_access(self):
'Test delete_access'
pool = Pool()
User = pool.get('res.user')
Group = pool.get('res.group')
ModelData = pool.get('ir.model.data')
ProjectWork = pool.get('project.work')
TimesheetWork = pool.get('timesheet.work')
company = create_company()
with set_company(company):
project_user = User()
project_user.login = 'project'
2021-03-18 23:04:17 +01:00
project_user.companies = [company]
project_user.company = company
project_group = Group(ModelData.get_id(
'project', 'group_project_admin'))
project_user.groups = [project_group]
project_user.save()
with Transaction().set_user(project_user.id):
p_work = ProjectWork()
p_work.name = 'Project Work'
p_work.timesheet_available = True
p_work.save()
self.assertEqual(len(p_work.timesheet_works), 1)
ProjectWork.delete([p_work])
self.assertEqual(TimesheetWork.search([]), [])
@with_transaction()
def test_timesheet_default_work_empty(self):
"Test timesheet default work with no context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = "Work"
p_work.timesheet_available = True
p_work.save()
self.assertFalse(TimesheetLine.default_work())
@with_transaction()
def test_timesheet_default_work_single(self):
"Test timesheet default work with 1 work in context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = "Work"
p_work.timesheet_available = True
p_work.save()
with Transaction().set_context({'project.work': [p_work.id]}):
self.assertEqual(
TimesheetLine.default_work(),
p_work.timesheet_works[0].id)
@with_transaction()
def test_timesheet_default_work_multiple(self):
"Test timesheet default work with multiple work in context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
works = ProjectWork.create([
{'name': "Work 1", 'timesheet_available': True},
{'name': "Work 2", 'timesheet_available': True},
])
with Transaction().set_context(
{'project.work': map(int, works)}):
self.assertFalse(TimesheetLine.default_work())
2022-06-16 14:32:44 +02:00
@with_transaction()
def test_copy_work_with_children(self):
"Test copy work with children"
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
work, = ProjectWork.create([
{'name': "Parent", 'children': [('create', [
{'name': "Work 1", 'timesheet_available': True},
{'name': "Work 2", 'timesheet_available': False},
])]}])
new_work, = ProjectWork.copy([work])
child1, child2 = new_work.children
self.assertTrue(child1.timesheet_available)
self.assertFalse(child2.timesheet_available)
2012-04-03 20:07:27 +02:00
del ModuleTestCase