Parcourir la source

Initial versioning tests; update TODO.

Stefano Cossu il y a 7 ans
Parent
commit
c221be7576
2 fichiers modifiés avec 60 ajouts et 0 suppressions
  1. 8 0
      doc/notes/TODO
  2. 52 0
      tests/endpoints/test_ldp.py

+ 8 - 0
doc/notes/TODO

@@ -29,6 +29,14 @@
 - [D] Reformat documentation
 - [W] Hyrax compliance
 - [W] Versioning
+  - [D] Create version
+  - [D] Retrieve version info
+  - [D] Retrieve version
+  - [W] Revert to version
+  - [W] Slug behavior
+  - [W] Tests
+  - [W] Avoid duplicate versions
+  - [ ] Delete version
 
 # Alpha 2 TODO
 

+ 52 - 0
tests/endpoints/test_ldp.py

@@ -564,3 +564,55 @@ class TestPrefHeader:
         child_resp = self.client.get('/ldp/test_delete_no_tstone01/a')
         assert child_resp.status_code == 404
 
+
+
+@pytest.mark.usefixtures('client_class')
+@pytest.mark.usefixtures('db')
+class TestVersion:
+    '''
+    Test version creation, retrieval and deletion.
+    '''
+    def test_create_versions(self):
+        '''
+        Test that POSTing multiple times to fcr:versions creates the
+        'hasVersions' triple and yields multiple version snapshots.
+        '''
+        self.client.put('/ldp/test_version')
+        create_rsp = self.client.post('/ldp/test_version/fcr:versions')
+
+        assert create_rsp.status_code == 201
+
+        rsrc_rsp = self.client.get('/ldp/test_version')
+        rsrc_gr = Graph().parse(data=rsrc_rsp.data, format='turtle')
+        assert len(set(rsrc_gr[: nsc['fcrepo'].hasVersions :])) == 1
+
+        info_rsp = self.client.get('/ldp/test_version/fcr:versions')
+        assert info_rsp.status_code == 200
+        info_gr = Graph().parse(data=info_rsp.data, format='turtle')
+        assert len(set(info_gr[: nsc['fcrepo'].hasVersion :])) == 1
+
+        self.client.post('/ldp/test_version/fcr:versions')
+        info2_rsp = self.client.get('/ldp/test_version/fcr:versions')
+
+        info2_gr = Graph().parse(data=info2_rsp.data, format='turtle')
+        assert len(set(info2_gr[: nsc['fcrepo'].hasVersion :])) == 2
+
+
+    def test_version_with_slug(self):
+        '''
+        Test a version with a slug.
+        '''
+        self.client.put('/ldp/test_version_slug')
+        create_rsp = self.client.post('/ldp/test_version_slug/fcr:versions',
+            headers={'slug' : 'v1'})
+        new_ver_uri = create_rsp.headers['Location']
+        assert new_ver_uri == g.webroot + '/test_version_slug/fcr:versions/v1'
+
+        info_rsp = self.client.get('/ldp/test_version_slug/fcr:versions')
+        info_gr = Graph().parse(data=info_rsp.data, format='turtle')
+        assert info_gr[
+            URIRef(new_ver_uri) :
+            nsc['fcrepo'].hasVersionLabel :
+            Literal('v1')]
+
+