Initial commit: OCA Workflow Process packages (456 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:00 +02:00
commit d366e42934
18799 changed files with 1284507 additions and 0 deletions

View file

@ -0,0 +1,5 @@
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
from . import test_project
from . import test_task
from . import test_controller

View file

@ -0,0 +1,55 @@
# Copyright 2017 - 2018 Modoolar <info@modoolar.com>
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
from odoo.tests.common import HttpCase, TransactionCase
class TestMixin(object):
@staticmethod
def _setup_records(class_or_instance):
self = class_or_instance
self.Project = self.env["project.project"].with_context(test_project_key=True)
self.Task = self.env["project.task"].with_context(test_project_key=True)
self.project_action = self.env.ref("project.open_view_project_all_config")
self.task_action = self.env.ref("project.action_view_task")
self.project_1 = self.Project.create({"name": "OCA"})
self.project_2 = self.Project.create({"name": "Odoo", "key": "ODOO"})
self.project_3 = self.Project.create({"name": "Python"})
self.task11 = self.Task.create({"name": "1", "project_id": self.project_1.id})
self.task12 = self.Task.create(
{"name": "2", "parent_id": self.task11.id, "project_id": self.project_1.id}
)
self.task21 = self.Task.create({"name": "3", "project_id": self.project_2.id})
self.task30 = self.Task.create({"name": "3"})
def get_record_url(self, record, model, action):
return "/web#id={}&view_type=form&model={}&action={}".format(
record.id, model, action
)
def get_task_url(self, task):
return self.get_record_url(task, task._name, self.task_action.id)
def get_project_url(self, project):
return self.get_record_url(project, project._name, self.project_action.id)
class TestCommon(TransactionCase, TestMixin):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
cls._setup_records(cls)
class HttpTestCommon(HttpCase, TestMixin):
def setUp(self):
super().setUp()
self.env = self.env(context=dict(self.env.context, tracking_disable=True))
self._setup_records(self)

View file

@ -0,0 +1,22 @@
# Copyright 2017 - 2018 Modoolar <info@modoolar.com>
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
from .test_common import HttpTestCommon
class TestController(HttpTestCommon):
def test_01_project_browse(self):
self.authenticate("admin", "admin")
response = self.url_open("/projects/" + self.project_1.key)
self.assertEqual(response.status_code, 200)
self.assertTrue(
response.url.endswith(self.get_project_url(self.project_1)), response.url
)
def test_02_task_browse(self):
self.authenticate("admin", "admin")
response = self.url_open("/tasks/" + self.task11.key)
self.assertEqual(response.status_code, 200)
self.assertTrue(
response.url.endswith(self.get_task_url(self.task11)), response.url
)

View file

@ -0,0 +1,76 @@
# Copyright 2017 - 2018 Modoolar <info@modoolar.com>
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
from odoo.tools import mute_logger
from .test_common import TestCommon
class TestProject(TestCommon):
def test_01_key(self):
self.assertEqual(self.project_1.key, "OCA")
self.assertEqual(self.project_2.key, "ODOO")
self.assertEqual(self.project_3.key, "PYT")
def test_02_change_key(self):
self.project_1.key = "XXX"
self.assertEqual(self.task11.key, "XXX-1")
self.assertEqual(self.task12.key, "XXX-2")
def test_03_name_search(self):
projects = self.Project.name_search("ODO")
self.assertEqual(len(projects), 1)
non_odoo_projects = [
x[0] for x in self.Project.name_search("ODO", operator="not ilike")
]
odoo_projects = self.Project.browse(non_odoo_projects).filtered(
lambda x: x.id == self.project_2.id
)
self.assertEqual(len(odoo_projects), 0)
def test_04_name_search_empty(self):
projects = self.Project.name_search("")
self.assertGreater(len(projects), 0)
def test_05_name_onchange(self):
project = self.Project.new({"name": "Software Development"})
project._onchange_project_name()
self.assertEqual(project.key, "SD")
def test_06_name_onchange(self):
project = self.Project.new({})
project._onchange_project_name()
self.assertEqual(project.key, "")
@mute_logger("odoo.models.unlink")
def test_07_delete(self):
self.project_1.task_ids.unlink()
self.project_1.unlink()
self.project_2.task_ids.unlink()
self.project_2.unlink()
self.project_3.unlink()
def test_08_generate_empty_project_key(self):
empty_key = self.Project.generate_project_key(False)
self.assertEqual(empty_key, "")
def test_09_name_onchange_with_key(self):
project = self.Project.new({"name": "Software Development", "key": "TEST"})
project._onchange_project_name()
self.assertEqual(project.key, "TEST")
def test_10_generate_unique_key_with_counter(self):
project = self.Project.create({"name": "OCA"})
self.assertEqual(project.key, "OCA1")
def test_11_generate_unique_key_with_counter_inactive(self):
self.project_1.active = False
project = self.Project.create({"name": "OCA"})
self.assertEqual(project.key, "OCA1")

View file

@ -0,0 +1,54 @@
# Copyright 2017 - 2018 Modoolar <info@modoolar.com>
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
from .test_common import TestCommon
class TestTask(TestCommon):
def test_01_key(self):
self.assertEqual(self.task11.key, "OCA-1")
self.assertEqual(self.task12.key, "OCA-2")
self.assertEqual(self.task21.key, "ODOO-1")
self.assertEqual(self.task30.key, False)
def test_02_compute_task_url(self):
task_url = self.get_task_url(self.task11)
self.task11._compute_task_url()
self.assertEqual(self.task11.url, task_url)
def test_03_create_task_project_in_context(self):
self.Task.with_context(
active_model="project.project", active_id=self.project_1.id
).create({"name": "4"})
def test_04_no_switch_project(self):
self.task11.write({"project_id": self.project_1.id})
self.assertEqual(self.task11.key, "OCA-1")
self.assertEqual(self.task12.key, "OCA-2")
def test_05_switch_project(self):
self.task11.write({"project_id": self.project_2.id})
self.assertEqual(self.task11.key, "ODOO-2")
self.assertEqual(self.task12.key, "ODOO-3")
def test_06_name_search(self):
oca_tasks = self.Task.name_search("OCA")
self.assertEqual(len(oca_tasks), 2)
non_oca_task_ids = [
x[0] for x in self.Task.name_search("OCA", operator="not ilike")
]
oca_tasks = self.Task.browse(non_oca_task_ids).filtered(
lambda x: x.project_id.id == self.project_1.id
)
self.assertEqual(len(oca_tasks), 0)
def test_07_name_search_empty(self):
tasks = self.Task.name_search("")
self.assertGreater(len(tasks), 0)
def test_08_create_new_company(self):
self.env["res.company"].create({"name": "New company"})