Compare commits

...

2 Commits

Author SHA1 Message Date
Trenton H
fecaf174b1 Try removing DirectoriesMixin from tests which probably don't actually need dirs, just DB 2026-04-01 07:35:23 -07:00
Trenton H
8d19e88b3d Test out setupTestData instead of setUp 2026-03-31 15:06:55 -07:00
9 changed files with 99 additions and 86 deletions

View File

@@ -15,48 +15,49 @@ from documents.models import Document
from documents.models import DocumentType from documents.models import DocumentType
from documents.models import StoragePath from documents.models import StoragePath
from documents.models import Tag from documents.models import Tag
from documents.tests.utils import DirectoriesMixin
class TestBulkEditAPI(DirectoriesMixin, APITestCase): class TestBulkEditAPI(APITestCase):
@classmethod
def setUpTestData(cls) -> None:
super().setUpTestData()
cls.user = User.objects.create_superuser(username="temp_admin")
cls.c1 = Correspondent.objects.create(name="c1")
cls.c2 = Correspondent.objects.create(name="c2")
cls.dt1 = DocumentType.objects.create(name="dt1")
cls.dt2 = DocumentType.objects.create(name="dt2")
cls.t1 = Tag.objects.create(name="t1")
cls.t2 = Tag.objects.create(name="t2")
cls.doc1 = Document.objects.create(checksum="A", title="A")
cls.doc2 = Document.objects.create(
checksum="B",
title="B",
correspondent=cls.c1,
document_type=cls.dt1,
page_count=5,
)
cls.doc3 = Document.objects.create(
checksum="C",
title="C",
correspondent=cls.c2,
document_type=cls.dt2,
)
cls.doc4 = Document.objects.create(checksum="D", title="D")
cls.doc5 = Document.objects.create(checksum="E", title="E")
cls.doc2.tags.add(cls.t1)
cls.doc3.tags.add(cls.t2)
cls.doc4.tags.add(cls.t1, cls.t2)
cls.sp1 = StoragePath.objects.create(name="sp1", path="Something/{checksum}")
cls.cf1 = CustomField.objects.create(name="cf1", data_type="string")
cls.cf2 = CustomField.objects.create(name="cf2", data_type="string")
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
self.client.force_authenticate(user=self.user)
user = User.objects.create_superuser(username="temp_admin")
self.user = user
self.client.force_authenticate(user=user)
patcher = mock.patch("documents.bulk_edit.bulk_update_documents.delay") patcher = mock.patch("documents.bulk_edit.bulk_update_documents.delay")
self.async_task = patcher.start() self.async_task = patcher.start()
self.addCleanup(patcher.stop) self.addCleanup(patcher.stop)
self.c1 = Correspondent.objects.create(name="c1")
self.c2 = Correspondent.objects.create(name="c2")
self.dt1 = DocumentType.objects.create(name="dt1")
self.dt2 = DocumentType.objects.create(name="dt2")
self.t1 = Tag.objects.create(name="t1")
self.t2 = Tag.objects.create(name="t2")
self.doc1 = Document.objects.create(checksum="A", title="A")
self.doc2 = Document.objects.create(
checksum="B",
title="B",
correspondent=self.c1,
document_type=self.dt1,
page_count=5,
)
self.doc3 = Document.objects.create(
checksum="C",
title="C",
correspondent=self.c2,
document_type=self.dt2,
)
self.doc4 = Document.objects.create(checksum="D", title="D")
self.doc5 = Document.objects.create(checksum="E", title="E")
self.doc2.tags.add(self.t1)
self.doc3.tags.add(self.t2)
self.doc4.tags.add(self.t1, self.t2)
self.sp1 = StoragePath.objects.create(name="sp1", path="Something/{checksum}")
self.cf1 = CustomField.objects.create(name="cf1", data_type="string")
self.cf2 = CustomField.objects.create(name="cf2", data_type="string")
def setup_mock(self, m, method_name, return_value="OK") -> None: def setup_mock(self, m, method_name, return_value="OK") -> None:
m.return_value = return_value m.return_value = return_value

View File

@@ -13,10 +13,9 @@ from rest_framework.test import APITestCase
from documents.models import CustomField from documents.models import CustomField
from documents.models import CustomFieldInstance from documents.models import CustomFieldInstance
from documents.models import Document from documents.models import Document
from documents.tests.utils import DirectoriesMixin
class TestCustomFieldsAPI(DirectoriesMixin, APITestCase): class TestCustomFieldsAPI(APITestCase):
ENDPOINT = "/api/custom_fields/" ENDPOINT = "/api/custom_fields/"
def setUp(self) -> None: def setUp(self) -> None:

View File

@@ -51,10 +51,13 @@ from documents.tests.utils import DocumentConsumeDelayMixin
class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase): class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
@classmethod
def setUpTestData(cls) -> None:
super().setUpTestData()
cls.user = User.objects.create_superuser(username="temp_admin")
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
self.user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=self.user) self.client.force_authenticate(user=self.user)
cache.clear() cache.clear()

View File

@@ -16,10 +16,9 @@ from documents.models import Document
from documents.models import DocumentType from documents.models import DocumentType
from documents.models import StoragePath from documents.models import StoragePath
from documents.models import Tag from documents.models import Tag
from documents.tests.utils import DirectoriesMixin
class TestApiObjects(DirectoriesMixin, APITestCase): class TestApiObjects(APITestCase):
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
@@ -162,7 +161,7 @@ class TestApiObjects(DirectoriesMixin, APITestCase):
) )
class TestApiStoragePaths(DirectoriesMixin, APITestCase): class TestApiStoragePaths(APITestCase):
ENDPOINT = "/api/storage_paths/" ENDPOINT = "/api/storage_paths/"
def setUp(self) -> None: def setUp(self) -> None:

View File

@@ -19,10 +19,9 @@ from documents.models import DocumentType
from documents.models import MatchingModel from documents.models import MatchingModel
from documents.models import StoragePath from documents.models import StoragePath
from documents.models import Tag from documents.models import Tag
from documents.tests.utils import DirectoriesMixin
class TestApiAuth(DirectoriesMixin, APITestCase): class TestApiAuth(APITestCase):
def test_auth_required(self) -> None: def test_auth_required(self) -> None:
d = Document.objects.create(title="Test") d = Document.objects.create(title="Test")
@@ -654,13 +653,16 @@ class TestApiAuth(DirectoriesMixin, APITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
class TestApiUser(DirectoriesMixin, APITestCase): class TestApiUser(APITestCase):
ENDPOINT = "/api/users/" ENDPOINT = "/api/users/"
@classmethod
def setUpTestData(cls) -> None:
super().setUpTestData()
cls.user = User.objects.create_superuser(username="temp_admin")
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
self.user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=self.user) self.client.force_authenticate(user=self.user)
def test_get_users(self) -> None: def test_get_users(self) -> None:
@@ -993,13 +995,16 @@ class TestApiUser(DirectoriesMixin, APITestCase):
self.assertEqual(returned_user1.is_staff, True) self.assertEqual(returned_user1.is_staff, True)
class TestApiGroup(DirectoriesMixin, APITestCase): class TestApiGroup(APITestCase):
ENDPOINT = "/api/groups/" ENDPOINT = "/api/groups/"
@classmethod
def setUpTestData(cls) -> None:
super().setUpTestData()
cls.user = User.objects.create_superuser(username="temp_admin")
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
self.user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=self.user) self.client.force_authenticate(user=self.user)
def test_get_groups(self) -> None: def test_get_groups(self) -> None:
@@ -1097,21 +1102,24 @@ class TestApiGroup(DirectoriesMixin, APITestCase):
class TestBulkEditObjectPermissions(APITestCase): class TestBulkEditObjectPermissions(APITestCase):
@classmethod
def setUpTestData(cls) -> None:
super().setUpTestData()
cls.temp_admin = User.objects.create_superuser(username="temp_admin")
cls.t1 = Tag.objects.create(name="t1")
cls.t2 = Tag.objects.create(name="t2")
cls.c1 = Correspondent.objects.create(name="c1")
cls.dt1 = DocumentType.objects.create(name="dt1")
cls.sp1 = StoragePath.objects.create(name="sp1")
cls.user1 = User.objects.create(username="user1")
cls.user2 = User.objects.create(username="user2")
cls.user3 = User.objects.create(username="user3")
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
self.temp_admin = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=self.temp_admin) self.client.force_authenticate(user=self.temp_admin)
self.t1 = Tag.objects.create(name="t1")
self.t2 = Tag.objects.create(name="t2")
self.c1 = Correspondent.objects.create(name="c1")
self.dt1 = DocumentType.objects.create(name="dt1")
self.sp1 = StoragePath.objects.create(name="sp1")
self.user1 = User.objects.create(username="user1")
self.user2 = User.objects.create(username="user2")
self.user3 = User.objects.create(username="user3")
def test_bulk_object_set_permissions(self) -> None: def test_bulk_object_set_permissions(self) -> None:
""" """
GIVEN: GIVEN:
@@ -1406,11 +1414,14 @@ class TestBulkEditObjectPermissions(APITestCase):
class TestFullPermissionsFlag(APITestCase): class TestFullPermissionsFlag(APITestCase):
@classmethod
def setUpTestData(cls) -> None:
super().setUpTestData()
cls.admin = User.objects.create_superuser(username="admin")
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
self.admin = User.objects.create_superuser(username="admin")
def test_full_perms_flag(self) -> None: def test_full_perms_flag(self) -> None:
""" """
GIVEN: GIVEN:

View File

@@ -8,8 +8,6 @@ from rest_framework import status
from rest_framework.authtoken.models import Token from rest_framework.authtoken.models import Token
from rest_framework.test import APITestCase from rest_framework.test import APITestCase
from documents.tests.utils import DirectoriesMixin
# see allauth.socialaccount.providers.openid.provider.OpenIDProvider # see allauth.socialaccount.providers.openid.provider.OpenIDProvider
class MockOpenIDProvider: class MockOpenIDProvider:
@@ -49,7 +47,7 @@ class MockOpenIDConnectProvider:
return f"{self.app.provider_id}/login/?process=connect" return f"{self.app.provider_id}/login/?process=connect"
class TestApiProfile(DirectoriesMixin, APITestCase): class TestApiProfile(APITestCase):
ENDPOINT = "/api/profile/" ENDPOINT = "/api/profile/"
def setUp(self) -> None: def setUp(self) -> None:

View File

@@ -6,11 +6,10 @@ from django.test import override_settings
from rest_framework import status from rest_framework import status
from rest_framework.test import APITestCase from rest_framework.test import APITestCase
from documents.tests.utils import DirectoriesMixin
from paperless.version import __full_version_str__ from paperless.version import __full_version_str__
class TestApiUiSettings(DirectoriesMixin, APITestCase): class TestApiUiSettings(APITestCase):
ENDPOINT = "/api/ui_settings/" ENDPOINT = "/api/ui_settings/"
def setUp(self) -> None: def setUp(self) -> None:

View File

@@ -14,10 +14,9 @@ from documents.models import Tag
from documents.models import Workflow from documents.models import Workflow
from documents.models import WorkflowAction from documents.models import WorkflowAction
from documents.models import WorkflowTrigger from documents.models import WorkflowTrigger
from documents.tests.utils import DirectoriesMixin
class TestApiWorkflows(DirectoriesMixin, APITestCase): class TestApiWorkflows(APITestCase):
ENDPOINT = "/api/workflows/" ENDPOINT = "/api/workflows/"
ENDPOINT_TRIGGERS = "/api/workflow_triggers/" ENDPOINT_TRIGGERS = "/api/workflow_triggers/"
ENDPOINT_ACTIONS = "/api/workflow_actions/" ENDPOINT_ACTIONS = "/api/workflow_actions/"

View File

@@ -76,24 +76,27 @@ class TestWorkflows(
SampleDirMixin, SampleDirMixin,
APITestCase, APITestCase,
): ):
def setUp(self) -> None: @classmethod
self.c = Correspondent.objects.create(name="Correspondent Name") def setUpTestData(cls) -> None:
self.c2 = Correspondent.objects.create(name="Correspondent Name 2") super().setUpTestData()
self.dt = DocumentType.objects.create(name="DocType Name")
self.t1 = Tag.objects.create(name="t1") cls.c = Correspondent.objects.create(name="Correspondent Name")
self.t2 = Tag.objects.create(name="t2") cls.c2 = Correspondent.objects.create(name="Correspondent Name 2")
self.t3 = Tag.objects.create(name="t3") cls.dt = DocumentType.objects.create(name="DocType Name")
self.sp = StoragePath.objects.create(path="/test/") cls.t1 = Tag.objects.create(name="t1")
self.cf1 = CustomField.objects.create(name="Custom Field 1", data_type="string") cls.t2 = Tag.objects.create(name="t2")
self.cf2 = CustomField.objects.create( cls.t3 = Tag.objects.create(name="t3")
cls.sp = StoragePath.objects.create(path="/test/")
cls.cf1 = CustomField.objects.create(name="Custom Field 1", data_type="string")
cls.cf2 = CustomField.objects.create(
name="Custom Field 2", name="Custom Field 2",
data_type="integer", data_type="integer",
) )
self.user2 = User.objects.create(username="user2") cls.user2 = User.objects.create(username="user2")
self.user3 = User.objects.create(username="user3") cls.user3 = User.objects.create(username="user3")
self.group1 = Group.objects.create(name="group1") cls.group1 = Group.objects.create(name="group1")
self.group2 = Group.objects.create(name="group2") cls.group2 = Group.objects.create(name="group2")
account1 = MailAccount.objects.create( account1 = MailAccount.objects.create(
name="Email1", name="Email1",
@@ -104,7 +107,7 @@ class TestWorkflows(
imap_security=MailAccount.ImapSecurity.SSL, imap_security=MailAccount.ImapSecurity.SSL,
character_set="UTF-8", character_set="UTF-8",
) )
self.rule1 = MailRule.objects.create( cls.rule1 = MailRule.objects.create(
name="Rule1", name="Rule1",
account=account1, account=account1,
folder="INBOX", folder="INBOX",
@@ -122,7 +125,8 @@ class TestWorkflows(
assign_owner_from_rule=False, assign_owner_from_rule=False,
) )
return super().setUp() def setUp(self) -> None:
super().setUp()
def test_workflow_match(self) -> None: def test_workflow_match(self) -> None:
""" """