Explorar el Código

Added tests for listing labels. coverage of the label endpoints is now 100%

Dimitri Korsch hace 3 años
padre
commit
58e5df373f
Se han modificado 1 ficheros con 48 adiciones y 0 borrados
  1. 48 0
      tests/client/label_tests.py

+ 48 - 0
tests/client/label_tests.py

@@ -87,6 +87,54 @@ class LabelCreationTests(_BaseLabelTests):
             self.assertEqual(last_label.reference, ref)
 
 
+class LabelListTests(_BaseLabelTests):
+
+    def setupModels(self):
+        super().setupModels()
+
+        for i in range(1, 11):
+            parent, is_new = self.project.create_label(name=f"Label{i}", reference=f"label{i}")
+            self.assertTrue(is_new)
+
+            for j in range(1, 4):
+                label, is_new = self.project.create_label(
+                    name=f"Label{i}_{j}", reference=f"label{i}_{j}",
+                    parent=parent)
+                self.assertTrue(is_new)
+
+    def test_list_labels(self):
+        self.get(url_for("list_labels", project_id=4242), status_code=404)
+
+        response = self.get(url_for("list_labels", project_id=self.project.id))
+        self.assertTrue(response.is_json)
+        content = response.json
+
+        labels = {l.id: l for l in self.project.labels.all()}
+
+        self.assertEqual(len(labels), len(content))
+
+        for entry in content:
+            label = labels[entry["id"]]
+            self.assertDictEqual(label.serialize(), entry)
+
+    def test_list_label_tree(self):
+        self.get(url_for("list_label_tree", project_id=4242), status_code=404)
+
+        response = self.get(url_for("list_label_tree", project_id=self.project.id))
+        self.assertTrue(response.is_json)
+        content = response.json
+
+        root_labels = {l.id: l for l in Label.query.filter(
+            Label.project_id==self.project.id, Label.parent_id==None).all()}
+
+        self.assertEqual(len(root_labels), len(content))
+
+        for entry in content:
+            label = root_labels[entry["id"]]
+            self.assertDictEqual(label.serialize(), entry)
+
+
+
 class LabelRemovalTests(_BaseLabelTests):
 
     def url(self, label_id):