1
- __author__ = 'tony castronova'
2
- __author__ = 'david valentine'
1
+ from __future__ import (absolute_import , division , print_function )
3
2
4
3
#import unittest
5
4
8
7
from odm2api .ODM2 .services .createService import CreateODM2
9
8
from odm2api .ODM2 .services .updateService import UpdateODM2
10
9
from odm2api .ODM2 .services .deleteService import DeleteODM2
11
- from odm2api .ODM2 .models import People
10
+ from odm2api .ODM2 .models import (People ,
11
+ Variables ,
12
+ Methods ,
13
+ ProcessingLevels ,
14
+ Models ,
15
+ RelatedModels )
12
16
13
17
from tests import test_connection as testConnection
14
18
import pytest
19
+
20
+
21
+ __author__ = ['tony castronova' , 'david valentine' ]
22
+
23
+
15
24
xfail = pytest .mark .xfail
16
25
skipif = xfail = pytest .mark .skipif
17
26
#from pytest import raises use pytest.raises()
@@ -34,7 +43,7 @@ def setup( request):
34
43
# build an empty database for testing
35
44
# conn = dbconnection.createConnection('sqlite', ':memory:')
36
45
db = request .param
37
- print ("dbtype" , db [0 ], db [1 ])
46
+ print ("dbtype" , db [0 ], db [1 ])
38
47
session_factory = dbconnection .createConnection (db [1 ], db [2 ], db [3 ], db [4 ], db [5 ], echo = False )
39
48
assert session_factory is not None , ("failed to create a session for " , db [0 ], db [1 ])
40
49
assert session_factory .engine is not None , ("failed: session has no engine " , db [0 ], db [1 ])
@@ -55,10 +64,10 @@ def setup( request):
55
64
s .flush ()
56
65
# s.invalidate()
57
66
58
- print 'database initialization completed successfully'
67
+ print ( 'database initialization completed successfully' )
59
68
60
69
def fin ():
61
- print ("teardown odm2 test connection" )
70
+ print ("teardown odm2 test connection" )
62
71
del dbConn .odmread
63
72
del dbConn .odmcreate
64
73
del dbConn .odmupdate
@@ -151,72 +160,79 @@ def test_personFail(setup):
151
160
assert 'null' in str (excinfo .value ).lower ()
152
161
153
162
def test_createVariable (setup ):
154
-
163
+ v1 = Variables (VariableCode = 'Phos_TOT' ,
164
+ VariableNameCV = 'Phosphorus, total dissolved' ,
165
+ VariableTypeCV = 'Hydrology' ,
166
+ NoDataValue = - 999 ,
167
+ SpeciationCV = None ,
168
+ VariableDefinition = None )
169
+ v2 = Variables (VariableCode = 'Phos_TOT2' ,
170
+ VariableNameCV = 'Phosphorus, total dissolved' ,
171
+ VariableTypeCV = 'Hydrology' ,
172
+ NoDataValue = - 999 ,
173
+ SpeciationCV = 'mg/L' ,
174
+ VariableDefinition = None )
175
+ v3 = Variables (VariableCode = 'Phos_TOT3' ,
176
+ VariableNameCV = 'Phosphorus, total dissolved' ,
177
+ VariableTypeCV = 'Hydrology' ,
178
+ NoDataValue = - 999 ,
179
+ SpeciationCV = None ,
180
+ VariableDefinition = 'some definition' )
155
181
# create some variables
156
- setup .odmcreate .createVariable ( code = 'Phos_TOT' ,
157
- name = 'Phosphorus, total dissolved' ,
158
- vType = 'Hydrology' ,
159
- nodv = - 999 ,
160
- speciation = None ,
161
- definition = None )
162
- setup .odmcreate .createVariable ( code = 'Phos_TOT2' ,
163
- name = 'Phosphorus, total dissolved' ,
164
- vType = 'Hydrology' ,
165
- nodv = - 999 ,
166
- speciation = 'mg/L' ,
167
- definition = None )
168
- setup .odmcreate .createVariable ( code = 'Phos_TOT3' ,
169
- name = 'Phosphorus, total dissolved' ,
170
- vType = 'Hydrology' ,
171
- nodv = - 999 ,
172
- speciation = None ,
173
- definition = 'some definition' )
182
+ setup .odmcreate .createVariable (v1 )
183
+ setup .odmcreate .createVariable (v2 )
184
+ setup .odmcreate .createVariable (v3 )
185
+
186
+ variables = setup .odmread .getVariables ()
187
+ print (variables )
188
+ assert len (variables ) == 3
174
189
175
190
with pytest .raises (Exception ) as excinfo :
176
191
# insert duplicate
177
- setup .odmcreate .createVariable (code = 'Phos_TOT' ,
178
- name = 'Phosphorus, total dissolved' ,
179
- vType = 'Hydrology' ,
180
- nodv = - 999 ,
181
- speciation = None ,
182
- definition = None )
192
+ setup .odmcreate .createVariable (
193
+ Variables (VariableCode = 'Phos_TOT' ,
194
+ VariableNameCV = 'Phosphorus, total dissolved' ,
195
+ VariableTypeCV = 'Hydrology' ,
196
+ NoDataValue = - 999 ,
197
+ SpeciationCV = None ,
198
+ VariableDefinition = None )
199
+ )
183
200
184
201
assert 'unique' in str (excinfo .value ).lower ()
185
202
186
- vars = setup .odmread .getVariables ()
187
-
188
- assert len (vars ) == 3
189
-
190
-
191
203
192
204
def test_createMethod (setup ):
193
- setup .odmcreate .createMethod (code = 'mycode' ,
194
- name = 'my test method' ,
195
- vType = 'test method type' ,
196
- orgId = None ,
197
- link = None ,
198
- description = 'method description' )
199
- setup .odmcreate .createMethod (code = 'mycode2' ,
200
- name = 'my test method' ,
201
- vType = 'test method type' ,
202
- orgId = 1 ,
203
- link = None ,
204
- description = 'method description' )
205
- setup .odmcreate .createMethod (code = 'mycode3' ,
206
- name = 'my test method' ,
207
- vType = 'test method type' ,
208
- orgId = None ,
209
- link = None ,
210
- description = None )
205
+ m1 = Methods (MethodCode = 'mycode' ,
206
+ MethodName = 'my test method' ,
207
+ MethodTypeCV = 'Unknown' ,
208
+ MethodDescription = 'method description' ,
209
+ MethodLink = None ,
210
+ OrganizationID = None )
211
+ m2 = Methods (MethodCode = 'mycode2' ,
212
+ MethodName = 'my test method' ,
213
+ MethodTypeCV = 'Unknown' ,
214
+ MethodDescription = 'method description' ,
215
+ MethodLink = None ,
216
+ OrganizationID = 1 )
217
+ m3 = Methods (MethodCode = 'mycode3' ,
218
+ MethodName = 'my test method' ,
219
+ MethodTypeCV = 'Unknown' ,
220
+ MethodDescription = None ,
221
+ MethodLink = None ,
222
+ OrganizationID = None )
223
+ setup .odmcreate .createMethod (m1 )
224
+ setup .odmcreate .createMethod (m2 )
225
+ setup .odmcreate .createMethod (m3 )
211
226
methods = setup .odmread .getMethods ()
212
227
213
228
assert len (methods ) == 3
214
229
215
230
216
231
def test_ProcessingLevel (setup ):
217
- setup .odmcreate .createProcessingLevel (code = "testlevel" ,
218
- definition = "this is a test processing level" ,
219
- explanation = None )
232
+ pl = ProcessingLevels (ProcessingLevelCode = 'testlevel' ,
233
+ Definition = 'this is a test processing level' ,
234
+ Explanation = None )
235
+ setup .odmcreate .createProcessingLevel (pl )
220
236
res = setup .odmread .getProcessingLevels ()
221
237
222
238
assert len (res ) == 1
@@ -307,65 +323,71 @@ def test_createDeploymentAction(setup):
307
323
308
324
assert len (res ) == 1
309
325
310
- def test_createModel (setup ):
311
326
327
+ def test_createModel (setup ):
328
+ mod1 = Models (ModelCode = 'converter' ,
329
+ ModelName = 'mymodel' ,
330
+ ModelDescription = 'my test converter' )
331
+ mod2 = Models (ModelCode = 'model2' ,
332
+ ModelName = 'mymodel' ,
333
+ ModelDescription = None )
334
+ mod3 = Models (ModelCode = 'converter' ,
335
+ ModelName = 'mymodel2' ,
336
+ ModelDescription = 'my test model2' )
312
337
# create converter (expected: record inserted)
313
- setup .odmcreate .createModel (code = 'converter' ,
314
- name = 'mymodel' ,
315
- description = 'my test converter' )
338
+ setup .odmcreate .createModel (mod1 )
316
339
317
340
# create with no description (expected: record inserted)
318
- setup .odmcreate .createModel (code = 'model2' ,
319
- name = 'mymodel' ,
320
- description = None )
341
+ setup .odmcreate .createModel (mod2 )
321
342
322
343
323
- res = setup .odmread .getAllModels ()
344
+ res = setup .odmread .getModels ()
324
345
325
346
assert len (res ) == 2
326
347
327
- res = setup .odmread .getModelByCode ( 'converter' )
348
+ res = setup .odmread .getModels ( codes = [ 'converter' ] )
328
349
assert res is not None
329
- assert res .ModelCode == 'converter'
350
+ assert res [ 0 ] .ModelCode == 'converter'
330
351
331
352
with pytest .raises (Exception ) as excinfo :
332
353
# create converter with duplicate code (expected: fail to insert record)
333
- setup .odmcreate .createModel (code = 'converter' ,
334
- name = 'mymodel2' ,
335
- description = 'my test model2' )
354
+ setup .odmcreate .createModel (mod3 )
336
355
assert 'unique' in str (excinfo .value ).lower ()
337
356
338
357
339
358
def test_createRelatedModel (setup ):
340
359
# create a relationship type
341
360
setup .odmcreate .getSession ().execute (
342
361
"insert into cv_relationshiptype values ('coupled', 'coupled converter', 'models that have been coupled together', 'modeling', NULL)" )
362
+ mod1 = Models (ModelCode = 'converter' ,
363
+ ModelName = 'mymodel' ,
364
+ ModelDescription = 'my test converter' )
365
+ mod2 = Models (ModelCode = 'model2' ,
366
+ ModelName = 'mymodel' ,
367
+ ModelDescription = 'my test model2' )
343
368
# create converter (expected: record inserted)
344
- m1 = setup .odmcreate .createModel (code = 'converter' ,
345
- name = 'mymodel' ,
346
- description = 'my test converter' )
369
+ m1 = setup .odmcreate .createModel (mod1 )
347
370
# create converter (expected: record inserted)
348
- m2 = setup .odmcreate .createModel (code = 'model2' ,
349
- name = 'mymodel2' ,
350
- description = 'my test model2' )
371
+ m2 = setup .odmcreate .createModel (mod2 )
351
372
373
+ rm = RelatedModels (ModelID = m1 .ModelID ,
374
+ RelatedModelID = m2 .ModelID ,
375
+ RelationshipTypeCV = 'Is part of' )
352
376
# create related records
353
- setup .odmcreate .createRelatedModel (modelid = m1 .ModelID ,
354
- relatedModelID = m2 .ModelID ,
355
- relationshipType = 'coupled' )
377
+ setup .odmcreate .createRelatedModel (rm )
356
378
357
- m1r = setup .odmread .getModelByCode ( 'converter' )
379
+ m1r = setup .odmread .getModels ( codes = [ 'converter' ] )
358
380
assert m1r is not None
359
- assert m1r .ModelCode == 'converter'
381
+ assert m1r [ 0 ] .ModelCode == 'converter'
360
382
361
- m2r = setup .odmread .getModelByCode ( 'model2' )
383
+ m2r = setup .odmread .getModels ( codes = [ 'model2' ] )
362
384
assert m2r is not None
363
- assert m2r .ModelCode == 'model2'
385
+ assert m2r [ 0 ] .ModelCode == 'model2'
364
386
365
- m1rel = setup .odmread .getRelatedModelsByCode ( 'converter' )
387
+ m1rel = setup .odmread .getRelatedModels ( code = 'converter' )
366
388
assert len (m1rel ) == 1
367
389
368
- m2rel = setup .odmread .getRelatedModelsByCode ( 'model2' )
390
+ m2rel = setup .odmread .getRelatedModels ( code = 'model2' )
369
391
assert len (m2rel ) == 0
370
392
371
393
@skipif (True , reason = "Needs data" )
0 commit comments