marco@16: from . import TestController
marco@16:
marco@16: from sword2 import SDCollection, ServiceDocument
marco@16: from sword2.compatible_libs import json
marco@16:
marco@16: class TestSDCollection(TestController):
marco@16: def test_01_blank_init(self):
marco@16: c = SDCollection()
marco@16: assert c.title == None
marco@16: assert c.href == None
marco@16:
marco@16: def test_02_init(self):
marco@16: c = SDCollection(title="My test collection", href="http://example.org")
marco@16: assert c.title == "My test collection"
marco@16: assert c.href == "http://example.org"
marco@16:
marco@16: def test_03_init_and_update(self):
marco@16: c = SDCollection(title="My test collection", href="http://example.org")
marco@16: assert c.title == "My test collection"
marco@16: assert c.href == "http://example.org"
marco@16: c.title = "Altered Title"
marco@16: assert c.title == "Altered Title"
marco@16:
marco@16: def test_04_init_and_update_json_test(self):
marco@16: c = SDCollection(title="My test collection", href="http://example.org")
marco@16: assert c.title == "My test collection"
marco@16: assert c.href == "http://example.org"
marco@16: c.title = "Altered Title"
marco@16: assert c.title == "Altered Title"
marco@16: j = c.to_json()
marco@16: j_data = json.loads(j)
marco@16: assert j_data['title'] == "Altered Title"
marco@16: assert j_data['href'] == "http://example.org"
marco@16: assert j_data['accept'] == []
marco@16:
marco@16: short_service_doc = '''
marco@16:
marco@16:
marco@16: 2.0
marco@16: 16777216
marco@16:
marco@16:
marco@16: Main Site
marco@16:
marco@16:
marco@16: Collection 43
marco@16: */*
marco@16: */*
marco@16: Collection Policy
marco@16: Collection Description
marco@16: false
marco@16: Treatment description
marco@16: http://purl.org/net/sword/package/SimpleZip
marco@16: http://purl.org/net/sword/package/METSDSpaceSIP
marco@16: http://swordapp.org/sd-iri/e4
marco@16:
marco@16:
marco@16: '''
marco@16:
marco@16: long_service_doc = '''
marco@16:
marco@16:
marco@16: 2.0
marco@16: 16777216
marco@16:
marco@16:
marco@16: Main Site
marco@16:
marco@16:
marco@16: Collection 43
marco@16: */*
marco@16: */*
marco@16: Collection Policy
marco@16: Collection Description
marco@16: false
marco@16: Treatment description
marco@16: http://purl.org/net/sword/package/SimpleZip
marco@16: http://purl.org/net/sword/package/METSDSpaceSIP
marco@16: http://swordapp.org/sd-iri/e4
marco@16:
marco@16:
marco@16:
marco@16: Sub-site
marco@16:
marco@16:
marco@16: Collection 44
marco@16: */*
marco@16: */*
marco@16: Collection Policy
marco@16: Collection Description
marco@16: true
marco@16: Treatment description
marco@16: http://purl.org/net/sword/package/SimpleZip
marco@16: http://swordapp.org/sd-iri/e5
marco@16: http://swordapp.org/sd-iri/e6
marco@16: http://swordapp.org/sd-iri/e7
marco@16: http://swordapp.org/sd-iri/e8
marco@16:
marco@16:
marco@16: Collection 46
marco@16: application/zip
marco@16: application/zip
marco@16: Only Theses
marco@16: Theses dropbox
marco@16: true
marco@16: Treatment description
marco@16: http://purl.org/net/sword/package/SimpleZip
marco@16:
marco@16:
marco@16: '''
marco@16:
marco@16: class TestServiceDocument(TestController):
marco@16: def test_01_blank_init(self):
marco@16: s = ServiceDocument()
marco@16: assert s.version == None
marco@16: assert s.parsed == False
marco@16: assert s.valid == False # Invalid document as should be blank
marco@16:
marco@16: def test_02_init_and_load_simple(self):
marco@16: s = ServiceDocument()
marco@16: s.load_document(short_service_doc)
marco@16: assert s.version == "2.0"
marco@16: assert s.valid == True
marco@16: assert s.maxUploadSize == 16777216 # check int()
marco@16:
marco@16: def test_03_load_on_init(self):
marco@16: s = ServiceDocument(xml_response = short_service_doc)
marco@16: assert s.version == "2.0"
marco@16: assert s.valid == True
marco@16: assert s.maxUploadSize == 16777216 # check int()
marco@16:
marco@16: def test_04_init_and_load_long(self):
marco@16: s = ServiceDocument()
marco@16: s.load_document(long_service_doc)
marco@16: assert s.version == "2.0"
marco@16: assert s.valid == True
marco@16: assert s.maxUploadSize == 16777216 # check int()
marco@16:
marco@16: def test_05_long_load_on_init(self):
marco@16: s = ServiceDocument(xml_response = long_service_doc)
marco@16: assert s.version == "2.0"
marco@16: assert s.valid == True
marco@16: assert s.maxUploadSize == 16777216 # check int()
marco@16:
marco@16: def test_06_workspaces_short(self):
marco@16: s = ServiceDocument(xml_response = short_service_doc)
marco@16: assert len(s.workspaces) == 1
marco@16: assert s.workspaces[0][0] == "Main Site"
marco@16: assert len(s.workspaces[0][1]) == 1
marco@16:
marco@16: def test_07_workspaces_long(self):
marco@16: s = ServiceDocument(xml_response = long_service_doc)
marco@16: assert len(s.workspaces) == 2
marco@16: assert s.workspaces[0][0] == "Main Site"
marco@16: assert s.workspaces[1][0] == "Sub-site"
marco@16: assert len(s.workspaces[1][1]) == 2
marco@16:
marco@16: def test_08_collection_information_long(self):
marco@16: s = ServiceDocument(xml_response = long_service_doc)
marco@16: sub_workspace = s.workspaces[1]
marco@16: assert sub_workspace[0] == "Sub-site"
marco@16: sub_collections = sub_workspace[1]
marco@16: for c in sub_collections:
marco@16: if c.title == "Collection 44":
marco@16: assert c.href == "http://swordapp.org/col-iri/44"
marco@16: assert len(c.service) == 4
marco@16: assert c.mediation == True
marco@16: if c.href == "http://swordapp.org/col-iri/46":
marco@16: assert c.title == "Collection 46"
marco@16: assert c.service == None
marco@16: assert c.collectionPolicy == "Only Theses"
marco@16:
marco@16: def test_09_accept_information_long(self):
marco@16: s = ServiceDocument(xml_response = long_service_doc)
marco@16: sub_workspace = s.workspaces[1]
marco@16: assert sub_workspace[0] == "Sub-site"
marco@16: sub_collections = sub_workspace[1]
marco@16: for c in sub_collections:
marco@16: if c.title == "Collection 44":
marco@16: assert "*/*" in c.accept
marco@16: if c.href == "http://swordapp.org/col-iri/46":
marco@16: assert "application/zip" in c.accept
marco@16: assert "http://purl.org/net/sword/package/SimpleZip" in c.acceptPackaging
marco@16: