Skip to content

Commit 5f74353

Browse files
committed
Convert more fixtures to helpers
1 parent 5c217c7 commit 5f74353

File tree

2 files changed

+28
-64
lines changed

2 files changed

+28
-64
lines changed

adit/batch_transfer/tests/test_forms.py

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,16 @@
44
from django.core.files import File
55
from pytest_mock import MockerFixture
66

7-
from adit.batch_transfer.utils.testing_helpers import create_batch_transfer_group
8-
from adit.core.factories import DicomServerFactory
7+
from adit.batch_transfer.utils.testing_helpers import (
8+
create_batch_transfer_group,
9+
create_data_dict,
10+
create_file_dict,
11+
)
912
from adit.core.utils.auth_utils import grant_access
1013

1114
from ..forms import BatchTransferJobForm
1215

1316

14-
@pytest.fixture
15-
def data_dict():
16-
return {
17-
"source": DicomServerFactory(),
18-
"destination": DicomServerFactory(),
19-
"project_name": "Apollo project",
20-
"project_description": "Fly to the moon",
21-
"ethics_application_id": "12345",
22-
}
23-
24-
25-
@pytest.fixture
26-
def file_dict(mocker: MockerFixture):
27-
file = mocker.create_autospec(File, size=5242880)
28-
file.name = "sample_sheet.xlsx"
29-
file.read.return_value.decode.return_value = ""
30-
return {"batch_file": file}
31-
32-
3317
@pytest.mark.django_db
3418
def test_field_labels(mocker: MockerFixture):
3519
# Arrange
@@ -53,17 +37,19 @@ def test_field_labels(mocker: MockerFixture):
5337

5438

5539
@pytest.mark.django_db
56-
def test_with_valid_data(mocker: MockerFixture, data_dict, file_dict):
40+
def test_with_valid_data(mocker: MockerFixture):
5741
# Arrange
5842
user = UserFactory.create()
5943
group = create_batch_transfer_group()
6044
add_user_to_group(user, group)
45+
data_dict = create_data_dict()
6146
grant_access(group, data_dict["source"], source=True)
6247
grant_access(group, data_dict["destination"], destination=True)
6348
parse_mock = mocker.patch(
6449
"adit.batch_transfer.forms.BatchTransferFileParser.parse", autospec=True
6550
)
6651
parse_mock.return_value = []
52+
file_dict = create_file_dict()
6753

6854
# Act
6955
form = BatchTransferJobForm(data_dict, file_dict, user=user)
@@ -95,14 +81,16 @@ def test_with_missing_values(mocker: MockerFixture):
9581

9682

9783
@pytest.mark.django_db
98-
def test_disallow_too_large_file(mocker: MockerFixture, data_dict):
84+
def test_disallow_too_large_file(mocker: MockerFixture):
9985
# Arrange
10086
file = mocker.create_autospec(File, size=5242881)
10187
file.name = "sample_sheet.xlsx"
10288

10389
user = UserFactory.create()
10490
mocker.patch.object(user, "has_perm", return_value=True)
10591

92+
data_dict = create_data_dict()
93+
10694
# Act
10795
form = BatchTransferJobForm(data_dict, {"batch_file": file}, user=user)
10896

adit/batch_transfer/tests/test_views.py

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,29 @@
1-
from io import BytesIO
2-
3-
import pandas as pd
41
import pytest
52
from adit_radis_shared.accounts.factories import UserFactory
63
from adit_radis_shared.common.utils.auth_utils import add_user_to_group
7-
from django.core.files.uploadedfile import SimpleUploadedFile
4+
from django.conf import LazySettings
5+
from django.test import Client
86
from django.urls import reverse
97
from procrastinate.contrib.django.models import ProcrastinateJob
108
from pytest_django.asserts import assertTemplateUsed
119

12-
from adit.batch_transfer.utils.testing_helpers import create_batch_transfer_group
13-
from adit.core.factories import DicomServerFactory
10+
from adit.batch_transfer.utils.testing_helpers import create_batch_transfer_group, create_form_data
1411
from adit.core.models import DicomServer
1512
from adit.core.utils.auth_utils import grant_access
1613

1714
from ..models import BatchTransferJob
1815

1916

20-
# Somehow the form data must be always generated from scratch (maybe cause of the
21-
# SimpleUploadedFile) otherwise tests fail.
22-
@pytest.fixture
23-
def form_data(db):
24-
buffer = BytesIO()
25-
data = pd.DataFrame(
26-
[
27-
["1001", "1.2.840.113845.11.1000000001951524609.20200705182951.2689481", "WSOHMP4N"],
28-
["1002", "1.2.840.113845.11.1000000001951524609.20200705170836.2689469", "C2XJQ2AR"],
29-
["1003", "1.2.840.113845.11.1000000001951524609.20200705172608.2689471", "KRS8CZ3S"],
30-
],
31-
columns=["PatientID", "StudyInstanceUID", "Pseudonym"], # type: ignore
32-
)
33-
data.to_excel(buffer, index=False) # type: ignore
34-
35-
return {
36-
"source": DicomServerFactory.create().pk,
37-
"destination": DicomServerFactory.create().pk,
38-
"project_name": "Apollo project",
39-
"project_description": "Fly to the moon",
40-
"ethics_application_id": "12345",
41-
"batch_file": SimpleUploadedFile(
42-
name="sample_sheet.xlsx",
43-
content=buffer.getvalue(),
44-
content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
45-
),
46-
}
47-
48-
4917
@pytest.mark.django_db
50-
def test_user_must_be_logged_in_to_access_view(client):
18+
def test_user_must_be_logged_in_to_access_view(client: Client):
5119
response = client.get(reverse("batch_transfer_job_create"))
5220
assert response.status_code == 302
5321
response = client.post(reverse("batch_transfer_job_create"))
5422
assert response.status_code == 302
5523

5624

5725
@pytest.mark.django_db
58-
def test_user_must_have_permission_to_access_view(client):
26+
def test_user_must_have_permission_to_access_view(client: Client):
5927
user = UserFactory.create()
6028
client.force_login(user)
6129
response = client.get(reverse("batch_transfer_job_create"))
@@ -65,7 +33,7 @@ def test_user_must_have_permission_to_access_view(client):
6533

6634

6735
@pytest.mark.django_db
68-
def test_logged_in_user_with_permission_can_access_form(client):
36+
def test_logged_in_user_with_permission_can_access_form(client: Client):
6937
user = UserFactory.create()
7038
group = create_batch_transfer_group()
7139
add_user_to_group(user, group)
@@ -75,13 +43,15 @@ def test_logged_in_user_with_permission_can_access_form(client):
7543
assertTemplateUsed(response, "batch_transfer/batch_transfer_job_form.html")
7644

7745

78-
def test_batch_job_created_and_enqueued_with_auto_verify(client, settings, form_data):
46+
@pytest.mark.django_db
47+
def test_batch_job_created_and_enqueued_with_auto_verify(client: Client, settings: LazySettings):
7948
settings.START_BATCH_TRANSFER_UNVERIFIED = True
8049

8150
user = UserFactory.create()
8251
group = create_batch_transfer_group()
8352
add_user_to_group(user, group)
8453

54+
form_data = create_form_data()
8555
source_server = DicomServer.objects.get(pk=form_data["source"])
8656
destination_server = DicomServer.objects.get(pk=form_data["destination"])
8757
grant_access(group, source_server, source=True)
@@ -95,13 +65,17 @@ def test_batch_job_created_and_enqueued_with_auto_verify(client, settings, form_
9565
assert ProcrastinateJob.objects.count() == 3
9666

9767

98-
def test_batch_job_created_and_not_enqueued_without_auto_verify(client, settings, form_data):
68+
@pytest.mark.django_db
69+
def test_batch_job_created_and_not_enqueued_without_auto_verify(
70+
client: Client, settings: LazySettings
71+
):
9972
settings.START_BATCH_TRANSFER_UNVERIFIED = False
10073

10174
user = UserFactory.create()
10275
group = create_batch_transfer_group()
10376
add_user_to_group(user, group)
10477

78+
form_data = create_form_data()
10579
source_server = DicomServer.objects.get(pk=form_data["source"])
10680
destination_server = DicomServer.objects.get(pk=form_data["destination"])
10781
grant_access(group, source_server, source=True)
@@ -115,11 +89,13 @@ def test_batch_job_created_and_not_enqueued_without_auto_verify(client, settings
11589
assert ProcrastinateJob.objects.count() == 0
11690

11791

118-
def test_job_cant_be_created_with_missing_fields(client, form_data):
92+
@pytest.mark.django_db
93+
def test_job_cant_be_created_with_missing_fields(client: Client):
11994
user = UserFactory.create()
12095
group = create_batch_transfer_group()
12196
add_user_to_group(user, group)
12297
client.force_login(user)
98+
form_data = create_form_data()
12399
for key_to_exclude in form_data:
124100
invalid_form_data = form_data.copy()
125101
del invalid_form_data[key_to_exclude]

0 commit comments

Comments
 (0)