예제 #1
0
 def test_container_can_be_initialized(self):
     container = AnnotationContainer(self.base_url, [],
                                     view="PreferMinimalContainer")
     self.assertEqual(container.page_size, 100)
     self.assertEqual(container.num_pages, 0)
     self.assertEqual(container.metadata['id'],
                      container.update_url(self.base_url, {"iris": 1}))
예제 #2
0
 def test_container_can_generate_view(self):
     container = AnnotationContainer(self.base_url, self.collection)
     view = container.view()
     self.assertTrue("http://www.w3.org/ns/ldp.jsonld", view["@context"])
     self.assertTrue("http://www.w3.org/ns/anno.jsonld", view["@context"])
     self.assertEqual(view["total"], 0)
     self.assertTrue("first" not in view.keys())
예제 #3
0
 def test_container_view_can_show_first_page_as_descriptions(self):
     anno = self.annotations[0]
     container = AnnotationContainer(self.base_url, [anno],
                                     view="PreferContainedDescriptions")
     view = container.view()
     item = view["first"]["items"][0]
     for key in item.keys():
         self.assertTrue(key in anno.data.keys())
         self.assertEqual(item[key], anno.data[key])
예제 #4
0
 def test_container_view_can_show_first_page_as_iris(self):
     anno_ids = [anno.id for anno in self.annotations]
     container = AnnotationContainer(self.base_url,
                                     self.annotations,
                                     view="PreferContainedIRIs",
                                     page_size=1)
     view = container.view()
     self.assertEqual(view["first"]["id"],
                      container.update_url(container.base_url, {"page": 0}))
     self.assertEqual(view["first"]["next"],
                      container.update_url(container.base_url, {"page": 1}))
     self.assertEqual(len(view["first"]["items"]), 1)
     self.assertTrue(view["first"]["items"][0] in anno_ids)
예제 #5
0
 def test_container_cannot_be_initialized_with_non_positive_integer_page_size(
         self):
     error = None
     try:
         AnnotationContainer(self.base_url, [], page_size="ab")
     except AnnotationError as err:
         error = err
     self.assertNotEqual(error, None)
     error = None
     try:
         AnnotationContainer(self.base_url, [], page_size=0)
     except AnnotationError as err:
         error = err
     self.assertNotEqual(error, None)
예제 #6
0
 def test_container_cannot_be_initialized_with_invalid_prefer_type(self):
     error = None
     try:
         AnnotationContainer(self.base_url, [],
                             view="PreferMaximalContainer")
     except AnnotationError as err:
         error = err
     self.assertNotEqual(error, None)
     self.assertTrue("is not a valid container option", error.message)
예제 #7
0
 def test_container_calculates_page_numbers_correctly(self):
     container = AnnotationContainer(self.base_url,
                                     self.annotations,
                                     page_size=1)
     view = container.view()
     last_url = container.update_url(self.base_url, {"iris": 1, "page": 1})
     self.assertEqual(view["last"], last_url)
     container = AnnotationContainer(self.base_url,
                                     self.annotations,
                                     page_size=2)
     view = container.view()
     last_url = container.update_url(self.base_url, {"iris": 1, "page": 0})
     self.assertEqual(view["last"], last_url)
예제 #8
0
 def test_container_generate_page_referencing(self):
     annotations = [
         Annotation(copy.copy(examples["vincent"])),
         Annotation(copy.copy(examples["theo"])),
         Annotation(copy.copy(examples["brothers"]))
     ]
     container = AnnotationContainer(self.base_url,
                                     annotations,
                                     page_size=1)
     view0 = container.view_page(page=0)
     view1 = container.view_page(page=1)
     view2 = container.view_page(page=2)
     self.assertEqual(view0["next"], view1["id"])
     self.assertEqual(view0["next"], view2["prev"])
     self.assertEqual(view1["prev"], view0["id"])
     self.assertEqual(view1["next"], view2["id"])
     self.assertEqual(view2["prev"], view1["id"])
     items = view0["items"] + view1["items"] + view2["items"]
     for anno in annotations:
         self.assertTrue(anno.id in items)
예제 #9
0
 def test_container_can_generate_pages(self):
     container = AnnotationContainer(self.base_url,
                                     self.annotations,
                                     page_size=1)
     view = container.view_page(page=0)
     self.assertEqual(view["@context"], "http://www.w3.org/ns/anno.jsonld")
     self.assertEqual(
         view["id"],
         container.update_url(self.base_url, {
             "iris": 1,
             "page": 0
         }))
     self.assertEqual(view["type"], "AnnotationPage")
     self.assertEqual(view["partOf"]["id"], container.base_url)
     self.assertEqual(view["startIndex"], 0)
     self.assertEqual(
         view["next"],
         container.update_url(self.base_url, {
             "iris": 1,
             "page": 1
         }))
     self.assertEqual(len(view["items"]), 1)
예제 #10
0
 def test_non_empty_container_view_has_first_and_last_page_references(self):
     container = AnnotationContainer(self.base_url, self.annotations)
     view = container.view()
     self.assertEqual(view["total"], 2)
     self.assertEqual(type(view["first"]), str)
     self.assertEqual(type(view["last"]), str)
예제 #11
0
 def test_container_can_be_initialized_with_annotations_as_json(self):
     annotations_as_json = [anno.data for anno in self.annotations]
     container = AnnotationContainer(self.base_url, annotations_as_json)
     self.assertEqual(container.page_size, 100)
     self.assertEqual(container.num_pages, 1)
예제 #12
0
 def test_container_can_be_initialized_with_annotations(self):
     container = AnnotationContainer(self.base_url, self.annotations)
     self.assertEqual(container.page_size, 100)
     self.assertEqual(container.num_pages, 1)
예제 #13
0
 def test_container_can_be_initialized_with_collection_as_json(self):
     container = AnnotationContainer(self.base_url,
                                     self.collection.to_json())
     self.assertEqual(container.page_size, 100)
     self.assertEqual(container.num_pages, 0)
     self.assertEqual(container.metadata['label'], self.collection.label)