Skip to content

Commit a685a19

Browse files
committed
Convert more test fixtures to helpers
1 parent 2935486 commit a685a19

File tree

7 files changed

+114
-72
lines changed

7 files changed

+114
-72
lines changed

adit/batch_query/tests/integration/test_batch_query.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
from adit_radis_shared.common.utils.auth_utils import add_permission, add_user_to_group
77
from adit_radis_shared.common.utils.worker_utils import run_worker_once
88
from playwright.sync_api import Locator, Page, expect
9+
from pytest_django.live_server_helper import LiveServer
910

1011
from adit.batch_query.models import BatchQueryJob
12+
from adit.batch_query.utils.testing_helpers import create_batch_query_group
1113
from adit.core.utils.auth_utils import grant_access
1214
from adit.core.utils.testing_helpers import (
1315
create_excel_file,
@@ -19,11 +21,7 @@
1921
@pytest.mark.integration
2022
@pytest.mark.django_db(transaction=True)
2123
def test_urgent_batch_query_with_dimse_server(
22-
page: Page,
23-
poll: Callable[[Locator], Locator],
24-
live_server,
25-
create_and_login_user,
26-
batch_query_group,
24+
page: Page, poll: Callable[[Locator], Locator], live_server: LiveServer, create_and_login_user
2725
):
2826
# Arrange
2927
df = pd.DataFrame(
@@ -33,12 +31,13 @@ def test_urgent_batch_query_with_dimse_server(
3331
batch_file = create_excel_file(df, "batch_file.xlsx")
3432

3533
user: User = create_and_login_user(live_server.url)
36-
add_user_to_group(user, batch_query_group)
37-
add_permission(batch_query_group, BatchQueryJob, "can_process_urgently")
34+
group = create_batch_query_group()
35+
add_user_to_group(user, group)
36+
add_permission(group, BatchQueryJob, "can_process_urgently")
3837

3938
orthancs = setup_dimse_orthancs()
40-
grant_access(batch_query_group, orthancs[0], source=True)
41-
grant_access(batch_query_group, orthancs[1], destination=True)
39+
grant_access(group, orthancs[0], source=True)
40+
grant_access(group, orthancs[1], destination=True)
4241

4342
# Act
4443
page.goto(live_server.url + "/batch-query/jobs/new/")
@@ -58,11 +57,7 @@ def test_urgent_batch_query_with_dimse_server(
5857
@pytest.mark.integration
5958
@pytest.mark.django_db(transaction=True)
6059
def test_urgent_batch_query_with_dicomweb_server(
61-
page: Page,
62-
poll: Callable[[Locator], Locator],
63-
live_server,
64-
create_and_login_user,
65-
batch_query_group,
60+
page: Page, poll: Callable[[Locator], Locator], live_server: LiveServer, create_and_login_user
6661
):
6762
# Arrange
6863
df = pd.DataFrame(
@@ -72,12 +67,13 @@ def test_urgent_batch_query_with_dicomweb_server(
7267
batch_file = create_excel_file(df, "batch_file.xlsx")
7368

7469
user: User = create_and_login_user(live_server.url)
75-
add_user_to_group(user, batch_query_group)
76-
add_permission(batch_query_group, BatchQueryJob, "can_process_urgently")
70+
group = create_batch_query_group()
71+
add_user_to_group(user, group)
72+
add_permission(group, BatchQueryJob, "can_process_urgently")
7773

7874
orthancs = setup_dicomweb_orthancs()
79-
grant_access(batch_query_group, orthancs[0], source=True)
80-
grant_access(batch_query_group, orthancs[1], destination=True)
75+
grant_access(group, orthancs[0], source=True)
76+
grant_access(group, orthancs[1], destination=True)
8177

8278
# Act
8379
page.goto(live_server.url + "/batch-query/jobs/new/")
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import pytest
21
from adit_radis_shared.accounts.factories import GroupFactory
32
from adit_radis_shared.common.utils.auth_utils import add_permission
43

54

6-
@pytest.fixture
7-
def batch_query_group(db):
5+
def create_batch_query_group():
86
group = GroupFactory.create(name="Radiologists")
97
add_permission(group, "batch_query", "add_batchqueryjob")
108
add_permission(group, "batch_query", "view_batchqueryjob")

adit/batch_transfer/tests/conftest.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

adit/batch_transfer/tests/integration/test_batch_transfer.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
from adit_radis_shared.common.utils.auth_utils import add_permission, add_user_to_group
77
from adit_radis_shared.common.utils.worker_utils import run_worker_once
88
from playwright.sync_api import Locator, Page, expect
9+
from pytest_django.live_server_helper import LiveServer
910

1011
from adit.batch_transfer.models import BatchTransferJob
12+
from adit.batch_transfer.utils.testing_helpers import create_batch_transfer_group
1113
from adit.core.utils.auth_utils import grant_access
1214
from adit.core.utils.testing_helpers import (
1315
create_excel_file,
@@ -19,11 +21,7 @@
1921
@pytest.mark.integration
2022
@pytest.mark.django_db(transaction=True)
2123
def test_unpseudonymized_urgent_batch_transfer_with_dimse_server(
22-
page: Page,
23-
poll: Callable[[Locator], Locator],
24-
live_server,
25-
create_and_login_user,
26-
batch_transfer_group,
24+
page: Page, poll: Callable[[Locator], Locator], live_server: LiveServer, create_and_login_user
2725
):
2826
# Arrange
2927
df = pd.DataFrame(
@@ -33,13 +31,14 @@ def test_unpseudonymized_urgent_batch_transfer_with_dimse_server(
3331
batch_file = create_excel_file(df, "batch_file.xlsx")
3432

3533
user: User = create_and_login_user(live_server.url)
36-
add_user_to_group(user, batch_transfer_group)
37-
add_permission(batch_transfer_group, BatchTransferJob, "can_process_urgently")
38-
add_permission(batch_transfer_group, BatchTransferJob, "can_transfer_unpseudonymized")
34+
group = create_batch_transfer_group()
35+
add_user_to_group(user, group)
36+
add_permission(group, BatchTransferJob, "can_process_urgently")
37+
add_permission(group, BatchTransferJob, "can_transfer_unpseudonymized")
3938

4039
orthancs = setup_dimse_orthancs()
41-
grant_access(batch_transfer_group, orthancs[0], source=True)
42-
grant_access(batch_transfer_group, orthancs[1], destination=True)
40+
grant_access(group, orthancs[0], source=True)
41+
grant_access(group, orthancs[1], destination=True)
4342

4443
# Act
4544
page.goto(live_server.url + "/batch-transfer/jobs/new/")
@@ -61,11 +60,7 @@ def test_unpseudonymized_urgent_batch_transfer_with_dimse_server(
6160
@pytest.mark.integration
6261
@pytest.mark.django_db(transaction=True)
6362
def test_unpseudonymized_urgent_batch_transfer_with_dicomweb_server(
64-
page: Page,
65-
poll: Callable[[Locator], Locator],
66-
live_server,
67-
create_and_login_user,
68-
batch_transfer_group,
63+
page: Page, poll: Callable[[Locator], Locator], live_server: LiveServer, create_and_login_user
6964
):
7065
# Arrange
7166
df = pd.DataFrame(
@@ -75,13 +70,14 @@ def test_unpseudonymized_urgent_batch_transfer_with_dicomweb_server(
7570
batch_file = create_excel_file(df, "batch_file.xlsx")
7671

7772
user: User = create_and_login_user(live_server.url)
78-
add_user_to_group(user, batch_transfer_group)
79-
add_permission(batch_transfer_group, BatchTransferJob, "can_process_urgently")
80-
add_permission(batch_transfer_group, BatchTransferJob, "can_transfer_unpseudonymized")
73+
group = create_batch_transfer_group()
74+
add_user_to_group(user, group)
75+
add_permission(group, BatchTransferJob, "can_process_urgently")
76+
add_permission(group, BatchTransferJob, "can_transfer_unpseudonymized")
8177

8278
orthancs = setup_dicomweb_orthancs()
83-
grant_access(batch_transfer_group, orthancs[0], source=True)
84-
grant_access(batch_transfer_group, orthancs[1], destination=True)
79+
grant_access(group, orthancs[0], source=True)
80+
grant_access(group, orthancs[1], destination=True)
8581

8682
# Act
8783
page.goto(live_server.url + "/batch-transfer/jobs/new/")

adit/batch_transfer/tests/test_forms.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
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
78
from adit.core.factories import DicomServerFactory
89
from adit.core.utils.auth_utils import grant_access
910

@@ -52,12 +53,13 @@ def test_field_labels(mocker: MockerFixture):
5253

5354

5455
@pytest.mark.django_db
55-
def test_with_valid_data(mocker: MockerFixture, batch_transfer_group, data_dict, file_dict):
56+
def test_with_valid_data(mocker: MockerFixture, data_dict, file_dict):
5657
# Arrange
5758
user = UserFactory.create()
58-
add_user_to_group(user, batch_transfer_group)
59-
grant_access(batch_transfer_group, data_dict["source"], source=True)
60-
grant_access(batch_transfer_group, data_dict["destination"], destination=True)
59+
group = create_batch_transfer_group()
60+
add_user_to_group(user, group)
61+
grant_access(group, data_dict["source"], source=True)
62+
grant_access(group, data_dict["destination"], destination=True)
6163
parse_mock = mocker.patch(
6264
"adit.batch_transfer.forms.BatchTransferFileParser.parse", autospec=True
6365
)

adit/batch_transfer/tests/test_views.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from procrastinate.contrib.django.models import ProcrastinateJob
1010
from pytest_django.asserts import assertTemplateUsed
1111

12+
from adit.batch_transfer.utils.testing_helpers import create_batch_transfer_group
1213
from adit.core.factories import DicomServerFactory
1314
from adit.core.models import DicomServer
1415
from adit.core.utils.auth_utils import grant_access
@@ -64,27 +65,27 @@ def test_user_must_have_permission_to_access_view(client):
6465

6566

6667
@pytest.mark.django_db
67-
def test_logged_in_user_with_permission_can_access_form(client, batch_transfer_group):
68+
def test_logged_in_user_with_permission_can_access_form(client):
6869
user = UserFactory.create()
69-
add_user_to_group(user, batch_transfer_group)
70+
group = create_batch_transfer_group()
71+
add_user_to_group(user, group)
7072
client.force_login(user)
7173
response = client.get(reverse("batch_transfer_job_create"))
7274
assert response.status_code == 200
7375
assertTemplateUsed(response, "batch_transfer/batch_transfer_job_form.html")
7476

7577

76-
def test_batch_job_created_and_enqueued_with_auto_verify(
77-
client, settings, batch_transfer_group, form_data
78-
):
78+
def test_batch_job_created_and_enqueued_with_auto_verify(client, settings, form_data):
7979
settings.START_BATCH_TRANSFER_UNVERIFIED = True
8080

8181
user = UserFactory.create()
82-
add_user_to_group(user, batch_transfer_group)
82+
group = create_batch_transfer_group()
83+
add_user_to_group(user, group)
8384

8485
source_server = DicomServer.objects.get(pk=form_data["source"])
8586
destination_server = DicomServer.objects.get(pk=form_data["destination"])
86-
grant_access(batch_transfer_group, source_server, source=True)
87-
grant_access(batch_transfer_group, destination_server, destination=True)
87+
grant_access(group, source_server, source=True)
88+
grant_access(group, destination_server, destination=True)
8889

8990
client.force_login(user)
9091
client.post(reverse("batch_transfer_job_create"), form_data)
@@ -94,18 +95,17 @@ def test_batch_job_created_and_enqueued_with_auto_verify(
9495
assert ProcrastinateJob.objects.count() == 3
9596

9697

97-
def test_batch_job_created_and_not_enqueued_without_auto_verify(
98-
client, settings, batch_transfer_group, form_data
99-
):
98+
def test_batch_job_created_and_not_enqueued_without_auto_verify(client, settings, form_data):
10099
settings.START_BATCH_TRANSFER_UNVERIFIED = False
101100

102101
user = UserFactory.create()
103-
add_user_to_group(user, batch_transfer_group)
102+
group = create_batch_transfer_group()
103+
add_user_to_group(user, group)
104104

105105
source_server = DicomServer.objects.get(pk=form_data["source"])
106106
destination_server = DicomServer.objects.get(pk=form_data["destination"])
107-
grant_access(batch_transfer_group, source_server, source=True)
108-
grant_access(batch_transfer_group, destination_server, destination=True)
107+
grant_access(group, source_server, source=True)
108+
grant_access(group, destination_server, destination=True)
109109

110110
client.force_login(user)
111111
client.post(reverse("batch_transfer_job_create"), form_data)
@@ -115,9 +115,10 @@ def test_batch_job_created_and_not_enqueued_without_auto_verify(
115115
assert ProcrastinateJob.objects.count() == 0
116116

117117

118-
def test_job_cant_be_created_with_missing_fields(client, batch_transfer_group, form_data):
118+
def test_job_cant_be_created_with_missing_fields(client, form_data):
119119
user = UserFactory.create()
120-
add_user_to_group(user, batch_transfer_group)
120+
group = create_batch_transfer_group()
121+
add_user_to_group(user, group)
121122
client.force_login(user)
122123
for key_to_exclude in form_data:
123124
invalid_form_data = form_data.copy()
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from io import BytesIO
2+
from unittest.mock import create_autospec
3+
4+
import pandas as pd
5+
from adit_radis_shared.accounts.factories import GroupFactory
6+
from adit_radis_shared.common.utils.auth_utils import add_permission
7+
from django.core.files import File
8+
from django.core.files.uploadedfile import SimpleUploadedFile
9+
10+
from adit.core.factories import DicomServerFactory
11+
12+
13+
def create_batch_transfer_group():
14+
group = GroupFactory.create(name="Radiologists")
15+
add_permission(group, "batch_transfer", "add_batchtransferjob")
16+
add_permission(group, "batch_transfer", "view_batchtransferjob")
17+
return group
18+
19+
20+
def create_data_dict():
21+
return {
22+
"source": DicomServerFactory(),
23+
"destination": DicomServerFactory(),
24+
"project_name": "Apollo project",
25+
"project_description": "Fly to the moon",
26+
"ethics_application_id": "12345",
27+
}
28+
29+
30+
def create_file_dict():
31+
file = create_autospec(File, size=5242880)
32+
file.name = "sample_sheet.xlsx"
33+
file.read.return_value.decode.return_value = ""
34+
return {"batch_file": file}
35+
36+
37+
def create_form_data():
38+
buffer = BytesIO()
39+
data = pd.DataFrame(
40+
[
41+
["1001", "1.2.840.113845.11.1000000001951524609.20200705182951.2689481", "WSOHMP4N"],
42+
["1002", "1.2.840.113845.11.1000000001951524609.20200705170836.2689469", "C2XJQ2AR"],
43+
["1003", "1.2.840.113845.11.1000000001951524609.20200705172608.2689471", "KRS8CZ3S"],
44+
],
45+
columns=["PatientID", "StudyInstanceUID", "Pseudonym"], # type: ignore
46+
)
47+
data.to_excel(buffer, index=False) # type: ignore
48+
49+
return {
50+
"source": DicomServerFactory.create().pk,
51+
"destination": DicomServerFactory.create().pk,
52+
"project_name": "Apollo project",
53+
"project_description": "Fly to the moon",
54+
"ethics_application_id": "12345",
55+
"batch_file": SimpleUploadedFile(
56+
name="sample_sheet.xlsx",
57+
content=buffer.getvalue(),
58+
content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
59+
),
60+
}

0 commit comments

Comments
 (0)