fix collection ordering
This commit is contained in:
@@ -1,8 +1,13 @@
|
|||||||
|
|
||||||
|
import json
|
||||||
|
from django.http import HttpResponse
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
import pytest
|
import pytest
|
||||||
from atlas.models import CaseCollection, Finding, Condition
|
from atlas.models import CaseCollection, Finding, Condition
|
||||||
#from atlas.views import GenericExamViews
|
#from atlas.views import GenericExamViews
|
||||||
|
from pytest_django.asserts import assertRedirects, assertContains, assertQuerySetEqual
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
|
||||||
#@pytest.mark.django_db
|
#@pytest.mark.django_db
|
||||||
def test_create_condition(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
|
collection: CaseCollection = create_case_collection
|
||||||
|
|
||||||
# create some cases
|
# 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})
|
assert collection.get_take_url() == reverse("atlas:collection_take_start", kwargs={"pk": collection.pk})
|
||||||
|
|
||||||
|
start_order = collection.get_cases()
|
||||||
|
|
||||||
new_order = [
|
new_order = [
|
||||||
case5.pk,
|
case5.pk,
|
||||||
case1.pk,
|
case1.pk,
|
||||||
@@ -120,9 +127,28 @@ def test_collection(db, create_case_collection, create_case, make_case, client):
|
|||||||
case3.pk,
|
case3.pk,
|
||||||
case4.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
|
# 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.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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user