From f2b4e05ba5d825344008ff7f0a0504aca405d779 Mon Sep 17 00:00:00 2001 From: Ross Date: Tue, 27 Feb 2024 15:06:08 +0000 Subject: [PATCH] fix collection ordering --- atlas/tests/test_atlas_models.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/atlas/tests/test_atlas_models.py b/atlas/tests/test_atlas_models.py index 7d86cd23..1832845c 100644 --- a/atlas/tests/test_atlas_models.py +++ b/atlas/tests/test_atlas_models.py @@ -1,8 +1,13 @@ +import json +from django.http import HttpResponse from django.urls import reverse import pytest from atlas.models import CaseCollection, Finding, Condition #from atlas.views import GenericExamViews +from pytest_django.asserts import assertRedirects, assertContains, assertQuerySetEqual +from django.test import TestCase + #@pytest.mark.django_db def test_create_condition(db): @@ -84,7 +89,7 @@ def test_create_series(db, create_series): -def test_collection(db, create_case_collection, create_case, make_case, client): +def test_collection(db, create_case_collection, create_case, make_case, client, create_user): collection: CaseCollection = create_case_collection # create some cases @@ -113,6 +118,8 @@ def test_collection(db, create_case_collection, create_case, make_case, client): assert collection.get_take_url() == reverse("atlas:collection_take_start", kwargs={"pk": collection.pk}) + start_order = collection.get_cases() + new_order = [ case5.pk, case1.pk, @@ -120,9 +127,28 @@ def test_collection(db, create_case_collection, create_case, make_case, client): case3.pk, case4.pk ] - response = client.post(reverse("atlas:exam_json_edit", kwargs={"pk":collection.pk} ), json=new_order, follow=True) + response: HttpResponse = client.post(reverse("atlas:exam_json_edit", kwargs={"pk":collection.pk} ), json=new_order, follow=True) # Check that sorting the exam works + + # First attempt is not logged in + assertRedirects(response, f"{reverse('login')}?next=%2Fatlas%2Fcollection%2F1%2Fjson_edit") + + client.force_login(create_user) + + # Random user cannot modify order + response: HttpResponse = client.post(reverse("atlas:exam_json_edit", kwargs={"pk":collection.pk} ), json=new_order, follow=True) + assert response.status_code == 403 + + assertQuerySetEqual(start_order , collection.get_cases()) + + # Once the user has been made an author, they can modify the order + collection.add_author(create_user) + response: HttpResponse = client.post(reverse("atlas:exam_json_edit", kwargs={"pk":collection.pk} ), data={"set_exam_order" : json.dumps(new_order)}, follow=True) assert response.status_code == 200 - assert response.content == b"OK" + + assert collection.get_cases().count() == 5 + assert collection.get_case_by_index(0) == case5 + assert collection.get_case_by_index(1) == case1 +