Skip to content

Commit f831d46

Browse files
committed
Improve organization of package.
1 parent cb04374 commit f831d46

11 files changed

Lines changed: 74 additions & 228 deletions

File tree

dataverse/example/__init__.py

Whitespace-only changes.

dataverse/example/dvn_example.py

Lines changed: 0 additions & 100 deletions
This file was deleted.

dataverse/resources/dvn-4.hmdc.harvard.edu

Lines changed: 0 additions & 17 deletions
This file was deleted.

dataverse/settings/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from .defaults import *
2+
3+
try:
4+
from .local import *
5+
except ImportError as error:
6+
pass
Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
DEFAULT_USERNAME = "changeme"
2-
DEFAULT_PASSWORD = "changeme"
31
DEFAULT_HOST = "dataverse-demo.iq.harvard.edu"
4-
DEFAULT_CERT = "dataverseclient/resources/dvn-4.hmdc.harvard.edu"
2+
DEFAULT_TOKEN = "changeme"
53

64
EXAMPLE_DICT = {
75
"title": "ExampleTitle",
@@ -20,8 +18,23 @@
2018
"publication": "ExamplePublication",
2119
}
2220

21+
SWORD_BOOTSTRAP = """<?xml version="1.0"?>
22+
<entry xmlns="http://www.w3.org/2005/Atom"
23+
xmlns:dcterms="http://purl.org/dc/terms/">
24+
</entry>"""
2325

24-
try:
25-
from local import *
26-
except ImportError:
27-
pass
26+
SWORD_NAMESPACE = {
27+
"dcterms": "http://purl.org/dc/terms/",
28+
"atom": "http://www.w3.org/2005/Atom",
29+
}
30+
31+
UNIQUE_FIELDS = ['title', 'id', 'updated', 'summary']
32+
33+
REPLACEMENT_DICT = {
34+
'id': 'identifier',
35+
'author': 'creator',
36+
'producer': 'publisher',
37+
'restriction': 'rights',
38+
'keyword': 'subject',
39+
'publication': 'isReferencedBy'
40+
}

dataverse/study.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import requests
77

88
from file import DataverseFile
9-
from sword import SWORD_BOOTSTRAP
10-
from utils import get_element, get_elements, DataverseException, \
11-
get_files_in_path, add_field
9+
from settings import SWORD_BOOTSTRAP
10+
from utils import (
11+
get_element, get_elements, DataverseException, get_files_in_path,
12+
add_field,
13+
)
1214

1315

1416
class Study(object):

dataverse/sword.py

Lines changed: 0 additions & 20 deletions
This file was deleted.

dataverse/test/config.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
PICS_OF_CATS_STUDY = {
2-
"id" : "1",
3-
"title" : "This Study is about Pictures of Cats",
4-
"author" : "Peter Bull",
5-
"abstract" : "In this study we prove that there can be pictures of cats passed through the intertubes.",
2+
"id": "1",
3+
"title": "This Study is about Pictures of Cats",
4+
"author": "Peter Bull",
5+
"description": "In this study we prove there can be pictures of cats.",
66
}
77

8-
INGEST_FILES = "../resources/sword_ingest.zip"
9-
108
ATOM_STUDY = "../resources/atom-entry-study.xml"
119

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import sys
2-
from time import sleep
32
import unittest
43

54
import logging
@@ -8,7 +7,7 @@
87
# local modules
98
from dataverse.study import Study
109
from dataverse.connection import Connection
11-
from dataverse.example.config import DEFAULT_USERNAME, DEFAULT_HOST, DEFAULT_PASSWORD
10+
from dataverse.settings import DEFAULT_TOKEN, DEFAULT_HOST
1211
from dataverse.test.config import PICS_OF_CATS_STUDY, ATOM_STUDY
1312
from dataverse import utils
1413

@@ -46,15 +45,13 @@ def test_get_elements(self):
4645

4746
def test_format_term(self):
4847
# A term not in the replacement dict
49-
term = 'title'
50-
formatted_term = utils.format_term(term)
51-
self.assertEqual(formatted_term, 'dcterms_title')
48+
formatted_term = utils.format_term('title', namespace='dcterms')
49+
self.assertEqual(formatted_term, '{http://purl.org/dc/terms/}title')
5250

5351
def test_format_term_replace(self):
5452
# A term in the replacement dict
55-
term = 'id'
56-
formatted_term = utils.format_term(term)
57-
self.assertEqual(formatted_term, 'dcterms_identifier')
53+
formatted_term = utils.format_term('id', namespace='dcterms')
54+
self.assertEqual(formatted_term, '{http://purl.org/dc/terms/}identifier')
5855

5956

6057
class TestStudy(unittest.TestCase):
@@ -72,6 +69,7 @@ def test_init(self):
7269
tag='publisher'
7370
).text
7471
self.assertEqual(title, 'My Study')
72+
self.assertEqual(title, study.title)
7573
self.assertEqual(publisher, 'Mr. Pub Lisher')
7674

7775
def test_init_from_xml(self):
@@ -91,20 +89,24 @@ def test_init_from_xml(self):
9189

9290

9391
class TestStudyOperations(unittest.TestCase):
92+
9493
@classmethod
9594
def setUpClass(self):
96-
9795
print "Connecting to DVN."
98-
self.dvc = Connection(
99-
username=DEFAULT_USERNAME,
100-
password=DEFAULT_PASSWORD,
101-
host=DEFAULT_HOST,
102-
disable_ssl=True
103-
)
96+
self.dvc = Connection(DEFAULT_HOST, DEFAULT_TOKEN)
10497

10598
print "Getting Dataverse"
106-
self.dv = self.dvc.get_dataverses()[0]
107-
self.dv.is_released
99+
dataverses = self.dvc.get_dataverses()
100+
if not dataverses:
101+
raise utils.DataverseException(
102+
'You must have a published Dataverse to run these tests.'
103+
)
104+
105+
self.dv = dataverses[0]
106+
if not self.dv.is_released:
107+
raise utils.DataverseException(
108+
'You must publish "{0}" to run these tests.'.format(self.dv.title)
109+
)
108110

109111
print "Removing any existing studies."
110112
studies = self.dv.get_studies()
@@ -114,9 +116,9 @@ def setUpClass(self):
114116
print 'Dataverse emptied.'
115117

116118
def setUp(self):
117-
#runs before each test method
119+
# runs before each test method
118120

119-
#create a study for each test
121+
# create a study for each test
120122
s = Study(**PICS_OF_CATS_STUDY)
121123
self.dv.add_study(s)
122124
doi = s.doi
@@ -138,17 +140,15 @@ def test_create_study_from_xml(self):
138140
self.dv.delete_study(retrieved_study)
139141

140142
def test_add_files(self):
141-
self.s.add_files(['test_dvn.py', 'config.py'])
142-
sleep(3) #wait for ingest
143+
self.s.add_files(['test_dataverse.py', 'config.py'])
143144
actual_files = [f.name for f in self.s.get_files()]
144145

145-
self.assertIn('test_dvn.py', actual_files)
146+
self.assertIn('test_dataverse.py', actual_files)
146147
self.assertIn('config.py', actual_files)
147148

148149
def test_upload_file(self):
149150
self.s.upload_file('file.txt', 'This is a simple text file!')
150151
self.s.upload_file('file2.txt', 'This is the second simple text file!')
151-
sleep(3) #wait for ingest
152152
actual_files = [f.name for f in self.s.get_files()]
153153

154154
self.assertIn('file.txt', actual_files)
@@ -191,7 +191,8 @@ def test_delete_a_study(self):
191191
self.dv.delete_study(atomStudy)
192192
self.assertEqual(atomStudy.get_state(refresh=True), 'DEACCESSIONED')
193193
self.assertEqual(len(self.dv.get_studies()), startingNumberOfStudies - 1)
194-
194+
195+
@unittest.skip('Released studies can no longer be deaccessioned via API')
195196
def test_release_study(self):
196197
self.assertTrue(self.s.get_state() == "DRAFT")
197198
self.s.release()

dataverse/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from lxml import etree
44
import bleach
55

6-
from sword import SWORD_NAMESPACE, REPLACEMENT_DICT, UNIQUE_FIELDS
6+
from settings import SWORD_NAMESPACE, REPLACEMENT_DICT, UNIQUE_FIELDS
77

88

99
class DataverseException(Exception):

0 commit comments

Comments
 (0)