|
1 | | -import json |
2 | | - |
3 | 1 | import pytest |
4 | 2 | from django.urls import reverse_lazy |
5 | | -from le_utils.constants import content_kinds |
6 | | -from le_utils.constants import exercises |
7 | 3 |
|
8 | 4 | from .base import BaseAPITestCase |
9 | | -from contentcuration.models import AssessmentItem |
10 | | -from contentcuration.models import ContentNode |
11 | | -from contentcuration.models import File |
12 | 5 | from contentcuration.models import User |
13 | 6 |
|
14 | 7 | pytestmark = pytest.mark.django_db |
@@ -47,109 +40,3 @@ def test_readonly_fields(self): |
47 | 40 | ) |
48 | 41 | self.channel.refresh_from_db() |
49 | 42 | self.assertEqual(original_version, self.channel.version) |
50 | | - |
51 | | - |
52 | | -# TODO: rtibbles - update tests to test sync behaviour. |
53 | | -@pytest.mark.skip |
54 | | -class AssessmentItemTestCase(BaseAPITestCase): |
55 | | - def test_bulk_update(self): |
56 | | - exercise = ContentNode.objects.filter(kind=content_kinds.EXERCISE).first() |
57 | | - item1 = AssessmentItem.objects.create(contentnode=exercise) |
58 | | - item2 = AssessmentItem.objects.create(contentnode=exercise) |
59 | | - item3 = AssessmentItem.objects.create(contentnode=exercise) |
60 | | - item1dict = {} |
61 | | - item2dict = {} |
62 | | - item3dict = {} |
63 | | - for field in AssessmentItem._meta.fields: |
64 | | - attname = field.attname |
65 | | - set_attname = attname |
66 | | - if attname == "contentnode_id": |
67 | | - set_attname = "contentnode" |
68 | | - item1dict[set_attname] = getattr(item1, attname) |
69 | | - item2dict[set_attname] = getattr(item2, attname) |
70 | | - item3dict[set_attname] = getattr(item3, attname) |
71 | | - item1dict["question"] = "test" |
72 | | - item2dict["type"] = "test" |
73 | | - self.client.put( |
74 | | - reverse_lazy("assessmentitem-list"), |
75 | | - json.dumps([item1dict, item2dict, item3dict]), |
76 | | - content_type="application/json", |
77 | | - ) |
78 | | - item1.refresh_from_db() |
79 | | - self.assertEqual(item1.question, "test") |
80 | | - item2.refresh_from_db() |
81 | | - self.assertEqual(item2.type, "test") |
82 | | - item3.refresh_from_db() |
83 | | - self.assertEqual(item3.question, item3dict["question"]) |
84 | | - |
85 | | - def test_bulk_update_non_existent_item(self): |
86 | | - exercise = ContentNode.objects.filter(kind=content_kinds.EXERCISE).first() |
87 | | - item1 = AssessmentItem.objects.create(contentnode=exercise) |
88 | | - item1dict = {} |
89 | | - item2dict = {} |
90 | | - item3dict = {} |
91 | | - for field in AssessmentItem._meta.fields: |
92 | | - attname = field.attname |
93 | | - set_attname = attname |
94 | | - if attname == "contentnode_id": |
95 | | - set_attname = "contentnode" |
96 | | - item1dict[set_attname] = getattr(item1, attname) |
97 | | - item2dict[set_attname] = getattr(item1, attname) |
98 | | - item3dict[set_attname] = getattr(item1, attname) |
99 | | - item2dict["id"] = 10000 |
100 | | - item3dict["id"] = 10001 |
101 | | - item1dict["question"] = "test" |
102 | | - response = self.client.put( |
103 | | - reverse_lazy("assessmentitem-list"), |
104 | | - json.dumps([item1dict, item2dict, item3dict]), |
105 | | - content_type="application/json", |
106 | | - ) |
107 | | - self.assertEqual(response.status_code, 400) |
108 | | - |
109 | | - def test_bulk_update_checksum_file_not_associated_create_new_file_object(self): |
110 | | - exercise = ContentNode.objects.filter(kind=content_kinds.EXERCISE).first() |
111 | | - item1 = AssessmentItem.objects.create(contentnode=exercise) |
112 | | - item1dict = {} |
113 | | - for field in AssessmentItem._meta.fields: |
114 | | - attname = field.attname |
115 | | - set_attname = attname |
116 | | - if attname == "contentnode_id": |
117 | | - set_attname = "contentnode" |
118 | | - item1dict[set_attname] = getattr(item1, attname) |
119 | | - checksum = "b6d83d66859b0cf095ef81120ef98e1f" |
120 | | - item1dict["question"] = ( |
121 | | - "".format(checksum=checksum) |
124 | | - ) |
125 | | - File.objects.create(checksum=checksum) |
126 | | - self.client.put( |
127 | | - reverse_lazy("assessmentitem-list"), |
128 | | - json.dumps([item1dict]), |
129 | | - content_type="application/json", |
130 | | - ) |
131 | | - self.assertEqual(File.objects.filter(checksum=checksum).count(), 2) |
132 | | - |
133 | | - def test_bulk_update_checksum_file_associated_use_existing_file_object(self): |
134 | | - exercise = ContentNode.objects.filter(kind=content_kinds.EXERCISE).first() |
135 | | - item1 = AssessmentItem.objects.create(contentnode=exercise) |
136 | | - item1dict = {} |
137 | | - for field in AssessmentItem._meta.fields: |
138 | | - attname = field.attname |
139 | | - set_attname = attname |
140 | | - if attname == "contentnode_id": |
141 | | - set_attname = "contentnode" |
142 | | - item1dict[set_attname] = getattr(item1, attname) |
143 | | - checksum = "b6d83d66859b0cf095ef81120ef98e1f" |
144 | | - item1dict["question"] = ( |
145 | | - "".format(checksum=checksum) |
148 | | - ) |
149 | | - File.objects.create(checksum=checksum, assessment_item=item1) |
150 | | - self.client.put( |
151 | | - reverse_lazy("assessmentitem-list"), |
152 | | - json.dumps([item1dict]), |
153 | | - content_type="application/json", |
154 | | - ) |
155 | | - self.assertEqual(File.objects.filter(checksum=checksum).count(), 1) |
0 commit comments