Files
enterprise-addons/documents_project/tests/test_documents_gc.py
T

61 lines
2.0 KiB
Python

from odoo.tests import tagged
from odoo.addons.documents.tests.test_documents_common import TransactionCaseDocuments
@tagged('post_install', '-at_install')
class TestDocumentsProjectGcClearBin(TransactionCaseDocuments):
"""Folders linked to a project must survive the documents trash
autovacuum. Removing one would null `project.documents_folder_id`.
"""
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env['ir.config_parameter'].sudo().set_param(
'documents.deletion_delay', '0',
)
cls.Document = cls.env['documents.document']
cls.Project = cls.env['project.project']
def _make_project_with_folder(self, project_name):
folder = self.Document.create({
'type': 'folder',
'name': f'folder for {project_name}',
'owner_id': self.doc_user.id,
})
project = self.Project.create({
'name': project_name,
'documents_folder_id': folder.id,
})
return project, folder
def test_gc_keeps_folder_of_active_project_when_folder_archived(self):
project, folder = self._make_project_with_folder('active project')
folder.action_archive()
self.assertFalse(folder.active)
self.assertTrue(project.active)
self.Document._gc_clear_bin()
self.assertTrue(
folder.exists(),
"A folder linked to an active project must survive the GC bin.",
)
self.assertEqual(
project.documents_folder_id, folder,
"The project documents_folder_id link must remain intact.",
)
def test_gc_keeps_folder_when_project_also_archived(self):
project, folder = self._make_project_with_folder('archived project')
project.action_archive()
folder.action_archive()
self.assertFalse(project.active)
self.assertFalse(folder.active)
self.Document._gc_clear_bin()
self.assertTrue(folder.exists())
self.assertEqual(project.documents_folder_id, folder)