Skip to content

Commit b95a5f8

Browse files
committed
Use temporary Dataverse for tests, improve test variable names
1 parent e1e54eb commit b95a5f8

1 file changed

Lines changed: 45 additions & 42 deletions

File tree

dataverse/test/test_dataverse.py

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22

3+
import uuid
34
import httpretty
45

56
from dataverse.connection import Connection
@@ -125,55 +126,57 @@ class TestDatasetOperations(object):
125126
@classmethod
126127
def setup_class(cls):
127128
print "Connecting to DVN."
128-
cls.dvc = Connection(TEST_HOST, TEST_TOKEN)
129-
130-
print "Getting Dataverse"
131-
dataverses = cls.dvc.get_dataverses()
132-
if not dataverses:
133-
raise exceptions.DataverseError(
134-
'You must have a Dataverse to run these tests.'
135-
)
129+
cls.connection = Connection(TEST_HOST, TEST_TOKEN)
130+
131+
print "Creating test Dataverse"
132+
cls.alias = str(uuid.uuid1())
133+
cls.connection.create_dataverse(
134+
cls.alias,
135+
'Test Dataverse',
136+
'dataverse@example.com',
137+
)
138+
cls.dataverse = cls.connection.get_dataverse(cls.alias, True)
139+
assert cls.dataverse
136140

137-
cls.dv = dataverses[0]
141+
@classmethod
142+
def teardown_class(cls):
138143

139-
print "Removing any existing datasets."
140-
datasets = cls.dv.get_datasets()
141-
for dataset in datasets:
142-
if dataset.get_state() != 'DEACCESSIONED':
143-
cls.dv.delete_dataset(dataset)
144-
print 'Dataverse emptied.'
144+
print "Removing test Dataverse"
145+
cls.connection.delete_dataverse(cls.alias)
146+
dataverse = cls.connection.get_dataverse(cls.alias, True)
147+
assert dataverse is None
145148

146149
def setup_method(self, method):
147150

148151
# create a dataset for each test
149152
s = Dataset(**PICS_OF_CATS_DATASET)
150-
self.dv.add_dataset(s)
151-
self.s = self.dv.get_dataset_by_doi(s.doi)
153+
self.dataverse.add_dataset(s)
154+
self.dataset = self.dataverse.get_dataset_by_doi(s.doi)
152155

153156
def teardown_method(self, method):
154157
try:
155-
self.dv.delete_dataset(self.s)
158+
self.dataverse.delete_dataset(self.dataset)
156159
finally:
157160
return
158161

159162
def test_create_dataset_from_xml(self):
160163
new_dataset = Dataset.from_xml_file(ATOM_DATASET)
161-
self.dv.add_dataset(new_dataset)
162-
retrieved_dataset = self.dv.get_dataset_by_title("Roasting at Home")
164+
self.dataverse.add_dataset(new_dataset)
165+
retrieved_dataset = self.dataverse.get_dataset_by_title("Roasting at Home")
163166
assert retrieved_dataset
164-
self.dv.delete_dataset(retrieved_dataset)
167+
self.dataverse.delete_dataset(retrieved_dataset)
165168

166169
def test_add_files(self):
167-
self.s.add_files(EXAMPLE_FILES)
168-
actual_files = [f.name for f in self.s.get_files()]
170+
self.dataset.add_files(EXAMPLE_FILES)
171+
actual_files = [f.name for f in self.dataset.get_files()]
169172

170173
assert '__init__.py' in actual_files
171174
assert 'config.py' in actual_files
172175

173176
def test_upload_file(self):
174-
self.s.upload_file('file.txt', 'This is a simple text file!')
175-
self.s.upload_file('file2.txt', 'This is the second simple text file!')
176-
actual_files = [f.name for f in self.s.get_files()]
177+
self.dataset.upload_file('file.txt', 'This is a simple text file!')
178+
self.dataset.upload_file('file2.txt', 'This is the second simple text file!')
179+
actual_files = [f.name for f in self.dataset.get_files()]
177180

178181
assert 'file.txt' in actual_files
179182
assert 'file2.txt' in actual_files
@@ -182,45 +185,45 @@ def test_display_atom_entry(self):
182185
# this just tests we can get an entry back, but does
183186
# not do anything with that xml yet. however, we do use get_entry
184187
# in other methods so this test case is probably covered
185-
assert self.s.get_entry()
188+
assert self.dataset.get_entry()
186189

187190
def test_display_dataset_statement(self):
188191
# this just tests we can get an entry back, but does
189192
# not do anything with that xml yet. however, we do use get_statement
190193
# in other methods so this test case is probably covered
191-
assert self.s.get_statement()
194+
assert self.dataset.get_statement()
192195

193196
def test_delete_a_file(self):
194-
self.s.upload_file('cat.jpg', b'Whatever a cat looks like goes here.')
197+
self.dataset.upload_file('cat.jpg', b'Whatever a cat looks like goes here.')
195198

196199
# Add file and confirm
197-
files = self.s.get_files()
200+
files = self.dataset.get_files()
198201
assert len(files) == 1
199202
assert files[0].name == 'cat.jpg'
200203

201204
# Delete file and confirm
202-
self.s.delete_file(files[0])
203-
files = self.s.get_files()
205+
self.dataset.delete_file(files[0])
206+
files = self.dataset.get_files()
204207
assert not files
205208

206209
def test_delete_a_dataset(self):
207210
xmlDataset = Dataset.from_xml_file(ATOM_DATASET)
208-
self.dv.add_dataset(xmlDataset)
209-
atomDataset = self.dv.get_dataset_by_title("Roasting at Home")
210-
num_datasets = len(self.dv.get_datasets())
211+
self.dataverse.add_dataset(xmlDataset)
212+
atomDataset = self.dataverse.get_dataset_by_title("Roasting at Home")
213+
num_datasets = len(self.dataverse.get_datasets())
211214

212215
assert num_datasets > 0
213-
self.dv.delete_dataset(atomDataset)
216+
self.dataverse.delete_dataset(atomDataset)
214217
assert atomDataset.get_state(refresh=True) == 'DEACCESSIONED'
215-
assert len(self.dv.get_datasets()) == num_datasets - 1
218+
assert len(self.dataverse.get_datasets()) == num_datasets - 1
216219

217220
@pytest.mark.skipif(True, reason='Published datasets can no longer be deaccessioned via API')
218221
def test_publish_dataset(self):
219-
assert self.s.get_state() == "DRAFT"
220-
self.s.publish()
221-
assert self.s.get_state() == "PUBLISHED"
222-
self.dv.delete_dataset(self.s)
223-
assert self.s.get_state(refresh=True) == "DEACCESSIONED"
222+
assert self.dataset.get_state() == "DRAFT"
223+
self.dataset.publish()
224+
assert self.dataset.get_state() == "PUBLISHED"
225+
self.dataverse.delete_dataset(self.dataset)
226+
assert self.dataset.get_state(refresh=True) == "DEACCESSIONED"
224227

225228

226229
if __name__ == '__main__':

0 commit comments

Comments
 (0)