diff --git a/rapids/tests/test_urls.py b/rapids/tests/test_urls.py index 68d616c9..3423533e 100644 --- a/rapids/tests/test_urls.py +++ b/rapids/tests/test_urls.py @@ -361,5 +361,3 @@ def test_cookies(db, client): #assert "csrftoken" in [i.text for i in soup.find_all("th")] #assert "sessionid" in [i.text for i in soup.find_all("th")] - - diff --git a/rcr/tests/conftest.py b/rcr/tests/conftest.py new file mode 100644 index 00000000..a279f550 --- /dev/null +++ b/rcr/tests/conftest.py @@ -0,0 +1,87 @@ +import pytest +from django.contrib.auth.models import Group + +from rcr.models import Item, Level, OncologyCategory, Outcome, OutcomeReason, RadiologyCategory + +@pytest.fixture +def create_superuser(db, django_user_model): + return django_user_model.objects.create_superuser( + "admin", "ross@xkjq.uk", "adminpassword" + ) + +@pytest.fixture +def create_cid_manager(db, django_user_model): + user = django_user_model.objects.create_user( + "cid_user", "cid@user.com", "password1234" + ) + g = Group.objects.create(name="cid_user_manager") + g.save() + user.groups.add(g) + return user + +@pytest.fixture +def create_groups(db): + Group.objects.create(name="rcr_radiology_assessor") + Group.objects.create(name="rcr_oncology_assessor") + Group.objects.create(name="rcr_assessor") + + +@pytest.fixture +def create_radiology_user(db, django_user_model, create_groups): + user = django_user_model.objects.create_user( + "rad", "rad@user.com", "password1234", first_name="Radiology", last_name="User" + ) + user.groups.add(Group.objects.get(name="rcr_radiology_assessor")) + return user + +@pytest.fixture +def create_oncology_user(db, django_user_model, create_groups): + user = django_user_model.objects.create_user( + "onc", "onc@user.com", "password1234", first_name="Oncology", last_name="User" + ) + user.groups.add(Group.objects.get(name="rcr_oncology_assessor")) + return user + +@pytest.fixture +def create_item(db, create_radiology_category, create_oncology_category, create_outcome, create_outcome_reason, create_level): + return Item.objects.create( + name="Test Item", + description="Test Description", + content_type="Test Content Type", + number_of_items=1, + specialty="Test Specialty", + access_count=1, + targeted_to_group="Test Group", + review_link="Test Review Link", + review_link_password="Test Password", + rcr_platform_id="Test Platform ID", + radiology_category=create_radiology_category, + oncology_category=create_oncology_category, + outcome=create_outcome, + outcome_reason=create_outcome_reason, + outcome_free_text="Test Outcome Free Text", + comments="Test Comments", + needs_review=True, + completed_radiology=True, + completed_oncology=True + ) + +@pytest.fixture +def create_level(db): + return Level.objects.create(name="Test Level") + +@pytest.fixture +def create_radiology_category(db): + return RadiologyCategory.objects.create(name="Test Radiology Category") + +@pytest.fixture +def create_oncology_category(db): + return OncologyCategory.objects.create(name="Test Oncology Category") + +@pytest.fixture +def create_outcome(db): + return Outcome.objects.create(name="Test Outcome") + +@pytest.fixture +def create_outcome_reason(db): + return OutcomeReason.objects.create(reason="Test Outcome Reason") \ No newline at end of file diff --git a/rcr/tests/test_models.py b/rcr/tests/test_models.py new file mode 100644 index 00000000..c8cab4cb --- /dev/null +++ b/rcr/tests/test_models.py @@ -0,0 +1,62 @@ +# FILEPATH: /home/ross/rad/rad/rapids/tests/test_models.py + +from django.contrib.auth import get_user_model +from rcr.models import Item, Level, RadiologyCategory, OncologyCategory, Outcome, OutcomeReason +import pytest + +@pytest.fixture +def create_level(db): + return Level.objects.create(name="Test Level") + +@pytest.fixture +def create_radiology_category(db): + return RadiologyCategory.objects.create(name="Test Radiology Category") + +@pytest.fixture +def create_oncology_category(db): + return OncologyCategory.objects.create(name="Test Oncology Category") + +@pytest.fixture +def create_outcome(db): + return Outcome.objects.create(name="Test Outcome") + +@pytest.fixture +def create_outcome_reason(db): + return OutcomeReason.objects.create(reason="Test Outcome Reason") + +@pytest.fixture +def create_item(db, create_level, create_radiology_category, create_oncology_category, create_outcome, create_outcome_reason): + item = Item.objects.create( + name="Test Item", + description="Test Description", + content_type="Test Content Type", + number_of_items=1, + specialty="Test Specialty", + access_count=1, + targeted_to_group="Test Group", + review_link="Test Review Link", + review_link_password="Test Password", + rcr_platform_id="Test Platform ID", + radiology_category=create_radiology_category, + oncology_category=create_oncology_category, + outcome=create_outcome, + outcome_reason=create_outcome_reason, + outcome_free_text="Test Outcome Free Text", + comments="Test Comments", + needs_review=True, + completed_radiology=True, + completed_oncology=True + ) + item.level.add(create_level) + return item + +def test_item_creation(create_item): + assert Item.objects.count() == 1 + assert Item.objects.first().name == "Test Item" + +def test_item_str(create_item): + assert str(create_item) == "Test Specialty / Test Content Type / Test Item [Completed ONC] [Completed RAD]" + +def test_item_get_assessed_by(create_item, create_radiology_user): + create_item.assessed_by.add(create_radiology_user) + assert create_item.get_assessed_by() == f"RU" \ No newline at end of file diff --git a/rcr/tests/test_rcr_urls.py b/rcr/tests/test_rcr_urls.py index 8a086e74..5d01257d 100644 --- a/rcr/tests/test_rcr_urls.py +++ b/rcr/tests/test_rcr_urls.py @@ -12,49 +12,82 @@ import django.test -@pytest.fixture -def create_superuser(db, django_user_model): - return django_user_model.objects.create_superuser( - "admin", "ross@xkjq.uk", "adminpassword" - ) -@pytest.fixture -def create_cid_manager(db, django_user_model): - user = django_user_model.objects.create_user( - "cid_user", "cid@user.com", "password1234" - ) - g = Group.objects.create(name="cid_user_manager") - g.save() - user.groups.add(g) - return user - -@pytest.fixture -def create_groups(db): - Group.objects.create(name="rcr_radiology_assessor") - Group.objects.create(name="rcr_oncology_assessor") - Group.objects.create(name="rcr_assessor") - - -@pytest.fixture -def create_radiology_user(db, django_user_model): - user = django_user_model.objects.create_user( - "rad", "rad@user.com", "password1234" - ) - user.groups.add(Group.objects.get(name="rcr_radiology_assessor")) - return user - -@pytest.fixture -def create_oncology_user(db, django_user_model): - user = django_user_model.objects.create_user( - "onc", "onc@user.com", "password1234" - ) - user.groups.add(Group.objects.get(name="rcr_oncology_assessor")) - return user - - -def test_index(client: django.test.Client, create_groups, create_radiology_user): +def test_radiology_index_view(client, create_radiology_user): client.force_login(create_radiology_user) - response = client.get(reverse(f"rcr:radiology_index_view")) + + url = reverse("rcr:radiology_index_view") + response = client.get(url) assert response.status_code == 200 - print(response.content) \ No newline at end of file +def test_radiology_index_all_view(client, create_radiology_user): + client.force_login(create_radiology_user) + url = reverse("rcr:radiology_index_all_view") + response = client.get(url) + assert response.status_code == 200 + +def test_radiology_review_view(client, create_radiology_user): + client.force_login(create_radiology_user) + url = reverse("rcr:radiology_review_view") + response = client.get(url) + assert response.status_code == 302 + +def test_radiology_index_completed_view(client, create_radiology_user): + client.force_login(create_radiology_user) + url = reverse("rcr:radiology_index_completed_view") + response = client.get(url) + assert response.status_code == 200 + +def test_radiology_assessors_view(client, create_radiology_user): + client.force_login(create_radiology_user) + url = reverse("rcr:radiology_assessors_view") + response = client.get(url) + assert response.status_code == 200 + +def test_radiology_assigned_user_view(client, create_radiology_user): + client.force_login(create_radiology_user) + user_pk = create_radiology_user.pk + url = reverse("rcr:radiology_assigned_user_view", args=[user_pk]) + response = client.get(url) + assert response.status_code == 200 + +def test_radiology_assessor_assignment_view(client, create_radiology_user): + client.force_login(create_radiology_user) + assessor_pk = create_radiology_user.pk + url = reverse("rcr:radiology_assessor_assignment_view", args=[assessor_pk]) + response = client.get(url) + assert response.status_code == 200 + +def test_radiology_index_completed_by_user_view(client, create_radiology_user): + client.force_login(create_radiology_user) + user_pk = create_radiology_user.pk + url = reverse("rcr:radiology_index_completed_by_user_view", args=[user_pk]) + response = client.get(url) + assert response.status_code == 200 + +def test_radiology_detail_view(client, create_radiology_user, create_item): + client.force_login(create_radiology_user) + item_pk = create_item.pk + url = reverse("rcr:radiology_detail_view", args=[item_pk]) + response = client.get(url) + assert response.status_code == 200 + +def test_radiology_update_next_view(client, create_radiology_user): + client.force_login(create_radiology_user) + url = reverse("rcr:radiology_update_next_view") + response = client.get(url) + assert response.status_code == 302 + +def test_radiology_update_next_skip_view(client, create_radiology_user): + client.force_login(create_radiology_user) + skip = 1 # Replace with a valid skip value + url = reverse("rcr:radiology_update_next_skip_view", args=[skip]) + response = client.get(url) + assert response.status_code == 302 + +def test_radiology_update_view(client, create_radiology_user, create_item): + client.force_login(create_radiology_user) + item_pk = create_item.pk + url = reverse("rcr:radiology_update_view", args=[item_pk]) + response = client.get(url) + assert response.status_code == 200 \ No newline at end of file