From c3dd7615e0df2262d7066291092a86f89ef67693 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Mon, 2 Mar 2026 11:36:39 -0800 Subject: [PATCH] Accounts for the fake names need to be unique and Faker might not always be --- pyproject.toml | 1 + src/documents/models.py | 2 +- src/documents/tests/conftest.py | 11 +++++++++++ src/documents/tests/factories.py | 10 ++++++---- uv.lock | 10 +++++++--- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ddda5c930..3d00f4e67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -111,6 +111,7 @@ docs = [ testing = [ "daphne", "factory-boy~=3.3.1", + "faker~=40.5.1", "imagehash", "pytest~=9.0.0", "pytest-cov~=7.0.0", diff --git a/src/documents/models.py b/src/documents/models.py index d8209a55e..31c92e396 100644 --- a/src/documents/models.py +++ b/src/documents/models.py @@ -75,7 +75,7 @@ class MatchingModel(ModelWithOwner): is_insensitive = models.BooleanField(_("is insensitive"), default=True) - class Meta: + class Meta(ModelWithOwner.Meta): abstract = True ordering = ("name",) constraints = [ diff --git a/src/documents/tests/conftest.py b/src/documents/tests/conftest.py index 8c88cee9f..d26bf37f0 100644 --- a/src/documents/tests/conftest.py +++ b/src/documents/tests/conftest.py @@ -28,3 +28,14 @@ def authenticated_rest_api_client(rest_api_client: APIClient): user = UserModel.objects.create_user(username="testuser", password="password") rest_api_client.force_authenticate(user=user) yield rest_api_client + + +@pytest.fixture(scope="session", autouse=True) +def faker_session_locale(): + """Set Faker locale for reproducibility.""" + return "en_US" + + +@pytest.fixture(scope="session", autouse=True) +def faker_seed(): + return 12345 diff --git a/src/documents/tests/factories.py b/src/documents/tests/factories.py index 982634db5..d1d88587c 100644 --- a/src/documents/tests/factories.py +++ b/src/documents/tests/factories.py @@ -19,7 +19,7 @@ class CorrespondentFactory(DjangoModelFactory): class Meta: model = Correspondent - name = factory.Faker("company") + name = factory.Sequence(lambda n: f"{factory.Faker('company')} {n}") match = "" matching_algorithm = MatchingModel.MATCH_NONE @@ -28,7 +28,7 @@ class DocumentTypeFactory(DjangoModelFactory): class Meta: model = DocumentType - name = factory.Faker("bs") + name = factory.Sequence(lambda n: f"{factory.Faker('bs')} {n}") match = "" matching_algorithm = MatchingModel.MATCH_NONE @@ -37,7 +37,7 @@ class TagFactory(DjangoModelFactory): class Meta: model = Tag - name = factory.Faker("word") + name = factory.Sequence(lambda n: f"{factory.Faker('word')} {n}") match = "" matching_algorithm = MatchingModel.MATCH_NONE is_inbox_tag = False @@ -47,7 +47,9 @@ class StoragePathFactory(DjangoModelFactory): class Meta: model = StoragePath - name = factory.Faker("file_path", depth=2, extension="") + name = factory.Sequence( + lambda n: f"{factory.Faker('file_path', depth=2, extension='')} {n}", + ) path = factory.LazyAttribute(lambda o: f"{o.name}/{{title}}") match = "" matching_algorithm = MatchingModel.MATCH_NONE diff --git a/uv.lock b/uv.lock index 78d957ad8..a9b41a598 100644 --- a/uv.lock +++ b/uv.lock @@ -1342,11 +1342,11 @@ wheels = [ [[package]] name = "faker" -version = "40.1.2" +version = "40.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/77/1c3ff07b6739b9a1d23ca01ec0a90a309a33b78e345a3eb52f9ce9240e36/faker-40.1.2.tar.gz", hash = "sha256:b76a68163aa5f171d260fc24827a8349bc1db672f6a665359e8d0095e8135d30", size = 1949802, upload-time = "2026-01-13T20:51:49.917Z" } +sdist = { url = "https://files.pythonhosted.org/packages/03/2a/96fff3edcb10f6505143448a4b91535f77b74865cec45be52690ee280443/faker-40.5.1.tar.gz", hash = "sha256:70222361cd82aa10cb86066d1a4e8f47f2bcdc919615c412045a69c4e6da0cd3", size = 1952684, upload-time = "2026-02-23T21:34:38.362Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/ec/91a434c8a53d40c3598966621dea9c50512bec6ce8e76fa1751015e74cef/faker-40.1.2-py3-none-any.whl", hash = "sha256:93503165c165d330260e4379fd6dc07c94da90c611ed3191a0174d2ab9966a42", size = 1985633, upload-time = "2026-01-13T20:51:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a9/1eed4db92d0aec2f9bfdf1faae0ab0418b5e121dda5701f118a7a4f0cd6a/faker-40.5.1-py3-none-any.whl", hash = "sha256:c69640c1e13bad49b4bcebcbf1b52f9f1a872b6ea186c248ada34d798f1661bf", size = 1987053, upload-time = "2026-02-23T21:34:36.418Z" }, ] [[package]] @@ -3121,6 +3121,7 @@ webserver = [ dev = [ { name = "daphne", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "factory-boy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "faker", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "imagehash", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "prek", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, @@ -3145,6 +3146,7 @@ lint = [ testing = [ { name = "daphne", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "factory-boy", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, + { name = "faker", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "imagehash", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "pytest", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, { name = "pytest-cov", marker = "sys_platform == 'darwin' or sys_platform == 'linux'" }, @@ -3257,6 +3259,7 @@ provides-extras = ["mariadb", "postgres", "webserver"] dev = [ { name = "daphne" }, { name = "factory-boy", specifier = "~=3.3.1" }, + { name = "faker", specifier = "~=40.5.1" }, { name = "imagehash" }, { name = "prek", specifier = "~=0.3.0" }, { name = "pytest", specifier = "~=9.0.0" }, @@ -3279,6 +3282,7 @@ lint = [ testing = [ { name = "daphne" }, { name = "factory-boy", specifier = "~=3.3.1" }, + { name = "faker", specifier = "~=40.5.1" }, { name = "imagehash" }, { name = "pytest", specifier = "~=9.0.0" }, { name = "pytest-cov", specifier = "~=7.0.0" },