|
8 | 8 | from django.db import connections |
9 | 9 | from django.urls import reverse_lazy |
10 | 10 | from le_utils.constants import format_presets |
| 11 | +from le_utils.constants.labels.accessibility_categories import ACCESSIBILITYCATEGORIESLIST |
| 12 | +from le_utils.constants.labels.learning_activities import LEARNINGACTIVITIESLIST |
| 13 | +from le_utils.constants.labels.levels import LEVELSLIST |
| 14 | +from le_utils.constants.labels.needs import NEEDSLIST |
| 15 | +from le_utils.constants.labels.resource_type import RESOURCETYPELIST |
| 16 | +from le_utils.constants.labels.subjects import SUBJECTSLIST |
11 | 17 | from mixer.main import mixer |
12 | 18 | from mock import patch |
13 | 19 | from rest_framework.test import APIClient |
@@ -44,6 +50,16 @@ class SampleContentNodeDataSchema: |
44 | 50 | copyright_holder = str |
45 | 51 |
|
46 | 52 |
|
| 53 | +METADATA = { |
| 54 | + "grade_levels": LEVELSLIST, |
| 55 | + "resource_types": RESOURCETYPELIST, |
| 56 | + "learning_activities": LEARNINGACTIVITIESLIST, |
| 57 | + "accessibility_labels": ACCESSIBILITYCATEGORIESLIST, |
| 58 | + "categories": SUBJECTSLIST, |
| 59 | + "learner_needs": NEEDSLIST, |
| 60 | +} |
| 61 | + |
| 62 | + |
47 | 63 | class ApiAddNodesToTreeTestCase(StudioTestCase): |
48 | 64 | """ |
49 | 65 | Tests for contentcuration.views.internal.api_add_nodes_to_tree function. |
@@ -110,13 +126,19 @@ def setUp(self): |
110 | 126 | invalid_copyright_holder["title"] = "invalid_copyright_holder" |
111 | 127 | invalid_copyright_holder["copyright_holder"] = "" |
112 | 128 |
|
| 129 | + valid_metadata_labels = self._make_node_data() |
| 130 | + valid_metadata_labels["title"] = "valid_metadata_labels" |
| 131 | + for label, values in METADATA.items(): |
| 132 | + valid_metadata_labels[label] = [values[0]] |
| 133 | + |
113 | 134 | self.sample_data = { |
114 | 135 | "root_id": self.root_node.id, |
115 | 136 | "content_data": [ |
116 | 137 | valid_node, |
117 | 138 | invalid_title_node, |
118 | 139 | invalid_license_description, |
119 | 140 | invalid_copyright_holder, |
| 141 | + valid_metadata_labels, |
120 | 142 | ], |
121 | 143 | } |
122 | 144 | self.resp = self.admin_client().post( |
@@ -166,6 +188,13 @@ def test_associates_file_with_created_node(self): |
166 | 188 | # our original file object |
167 | 189 | assert f.file_on_disk.read() == self.fileobj.file_on_disk.read() |
168 | 190 |
|
| 191 | + def test_metadata_properly_created(self): |
| 192 | + node = ContentNode.objects.get(title="valid_metadata_labels") |
| 193 | + for label, values in METADATA.items(): |
| 194 | + self.assertEqual(getattr(node, label), { |
| 195 | + values[0]: True |
| 196 | + }) |
| 197 | + |
169 | 198 | def test_invalid_nodes_are_not_complete(self): |
170 | 199 | node_0 = ContentNode.objects.get(title=self.title) |
171 | 200 | node_1 = ContentNode.objects.get(description="invalid_title_node") |
@@ -196,6 +225,24 @@ def test_tag_greater_than_30_chars_excluded(self): |
196 | 225 |
|
197 | 226 | self.assertEqual(response.status_code, 400, response.content) |
198 | 227 |
|
| 228 | + def test_invalid_metadata_label_excluded(self): |
| 229 | + invalid_metadata_labels = self._make_node_data() |
| 230 | + invalid_metadata_labels["title"] = "invalid_metadata_labels" |
| 231 | + invalid_metadata_labels["categories"] = ["not a label!"] |
| 232 | + |
| 233 | + test_data = { |
| 234 | + "root_id": self.root_node.id, |
| 235 | + "content_data": [ |
| 236 | + invalid_metadata_labels, |
| 237 | + ], |
| 238 | + } |
| 239 | + |
| 240 | + response = self.admin_client().post( |
| 241 | + reverse_lazy("api_add_nodes_to_tree"), data=test_data, format="json" |
| 242 | + ) |
| 243 | + |
| 244 | + self.assertEqual(response.status_code, 400, response.content) |
| 245 | + |
199 | 246 |
|
200 | 247 | class ApiAddExerciseNodesToTreeTestCase(StudioTestCase): |
201 | 248 | """ |
|
0 commit comments