68 lines
2.5 KiB
Python
68 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
||
from odoo.tests.common import TransactionCase
|
||
|
||
|
||
class TestHgMixin(TransactionCase):
|
||
"""
|
||
Тестируем mixin через project.task (наследует hg.hg_mixin).
|
||
Требует установленного модуля mklab_project_task_indicators.
|
||
"""
|
||
|
||
@classmethod
|
||
def setUpClass(cls):
|
||
super().setUpClass()
|
||
cls.project = cls.env['project.project'].create({'name': 'Тестовый проект'})
|
||
|
||
def test_node_created_on_task_create(self):
|
||
task = self.env['project.task'].create({
|
||
'name': 'Задача с узлом',
|
||
'project_id': self.project.id,
|
||
})
|
||
self.assertTrue(task.node_id, 'При создании задачи должна создаваться вершина графа')
|
||
self.assertEqual(task.node_id.res_model, 'project.task')
|
||
self.assertEqual(task.node_id.res_id, task.id)
|
||
|
||
def test_node_name_matches_task(self):
|
||
task = self.env['project.task'].create({
|
||
'name': 'Задача для проверки имени',
|
||
'project_id': self.project.id,
|
||
})
|
||
self.assertEqual(task.node_id.name, 'Задача для проверки имени')
|
||
|
||
def test_index_ids_computed(self):
|
||
task = self.env['project.task'].create({
|
||
'name': 'Задача с показателями',
|
||
'project_id': self.project.id,
|
||
})
|
||
index = self.env['hg.index'].create({
|
||
'name': 'Показатель задачи',
|
||
'node_id': task.node_id.id,
|
||
})
|
||
task._compute_indexes()
|
||
self.assertIn(index, task.index_ids)
|
||
|
||
def test_related_ids_computed(self):
|
||
task_a = self.env['project.task'].create({
|
||
'name': 'Задача А',
|
||
'project_id': self.project.id,
|
||
})
|
||
task_b = self.env['project.task'].create({
|
||
'name': 'Задача Б',
|
||
'project_id': self.project.id,
|
||
})
|
||
self.env['hg.link'].create({
|
||
'name': 'Связь А → Б',
|
||
'source_id': task_a.node_id.id,
|
||
'target_ids': [(4, task_b.node_id.id)],
|
||
})
|
||
task_a._compute_related()
|
||
self.assertIn(task_b.node_id, task_a.related_ids)
|
||
|
||
def test_related_ids_empty_without_links(self):
|
||
task = self.env['project.task'].create({
|
||
'name': 'Изолированная задача',
|
||
'project_id': self.project.id,
|
||
})
|
||
task._compute_related()
|
||
self.assertFalse(task.related_ids)
|