1- __author__ = 'tony castronova'
2- __author__ = 'david valentine'
1+ from __future__ import (absolute_import , division , print_function )
32
43#import unittest
54
87from odm2api .ODM2 .services .createService import CreateODM2
98from odm2api .ODM2 .services .updateService import UpdateODM2
109from 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 )
1216
1317from tests import test_connection as testConnection
1418import pytest
19+
20+
21+ __author__ = ['tony castronova' , 'david valentine' ]
22+
23+
1524xfail = pytest .mark .xfail
1625skipif = xfail = pytest .mark .skipif
1726#from pytest import raises use pytest.raises()
@@ -34,7 +43,7 @@ def setup( request):
3443 # build an empty database for testing
3544 # conn = dbconnection.createConnection('sqlite', ':memory:')
3645 db = request .param
37- print ("dbtype" , db [0 ], db [1 ])
46+ print ("dbtype" , db [0 ], db [1 ])
3847 session_factory = dbconnection .createConnection (db [1 ], db [2 ], db [3 ], db [4 ], db [5 ], echo = False )
3948 assert session_factory is not None , ("failed to create a session for " , db [0 ], db [1 ])
4049 assert session_factory .engine is not None , ("failed: session has no engine " , db [0 ], db [1 ])
@@ -55,10 +64,10 @@ def setup( request):
5564 s .flush ()
5665 # s.invalidate()
5766
58- print 'database initialization completed successfully'
67+ print ( 'database initialization completed successfully' )
5968
6069 def fin ():
61- print ("teardown odm2 test connection" )
70+ print ("teardown odm2 test connection" )
6271 del dbConn .odmread
6372 del dbConn .odmcreate
6473 del dbConn .odmupdate
@@ -151,72 +160,79 @@ def test_personFail(setup):
151160 assert 'null' in str (excinfo .value ).lower ()
152161
153162def 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' )
155181 # 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
174189
175190 with pytest .raises (Exception ) as excinfo :
176191 # 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+ )
183200
184201 assert 'unique' in str (excinfo .value ).lower ()
185202
186- vars = setup .odmread .getVariables ()
187-
188- assert len (vars ) == 3
189-
190-
191203
192204def 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 )
211226 methods = setup .odmread .getMethods ()
212227
213228 assert len (methods ) == 3
214229
215230
216231def 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 )
220236 res = setup .odmread .getProcessingLevels ()
221237
222238 assert len (res ) == 1
@@ -307,65 +323,71 @@ def test_createDeploymentAction(setup):
307323
308324 assert len (res ) == 1
309325
310- def test_createModel (setup ):
311326
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' )
312337 # create converter (expected: record inserted)
313- setup .odmcreate .createModel (code = 'converter' ,
314- name = 'mymodel' ,
315- description = 'my test converter' )
338+ setup .odmcreate .createModel (mod1 )
316339
317340 # create with no description (expected: record inserted)
318- setup .odmcreate .createModel (code = 'model2' ,
319- name = 'mymodel' ,
320- description = None )
341+ setup .odmcreate .createModel (mod2 )
321342
322343
323- res = setup .odmread .getAllModels ()
344+ res = setup .odmread .getModels ()
324345
325346 assert len (res ) == 2
326347
327- res = setup .odmread .getModelByCode ( 'converter' )
348+ res = setup .odmread .getModels ( codes = [ 'converter' ] )
328349 assert res is not None
329- assert res .ModelCode == 'converter'
350+ assert res [ 0 ] .ModelCode == 'converter'
330351
331352 with pytest .raises (Exception ) as excinfo :
332353 # 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 )
336355 assert 'unique' in str (excinfo .value ).lower ()
337356
338357
339358def test_createRelatedModel (setup ):
340359 # create a relationship type
341360 setup .odmcreate .getSession ().execute (
342361 "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' )
343368 # 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 )
347370 # 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 )
351372
373+ rm = RelatedModels (ModelID = m1 .ModelID ,
374+ RelatedModelID = m2 .ModelID ,
375+ RelationshipTypeCV = 'Is part of' )
352376 # create related records
353- setup .odmcreate .createRelatedModel (modelid = m1 .ModelID ,
354- relatedModelID = m2 .ModelID ,
355- relationshipType = 'coupled' )
377+ setup .odmcreate .createRelatedModel (rm )
356378
357- m1r = setup .odmread .getModelByCode ( 'converter' )
379+ m1r = setup .odmread .getModels ( codes = [ 'converter' ] )
358380 assert m1r is not None
359- assert m1r .ModelCode == 'converter'
381+ assert m1r [ 0 ] .ModelCode == 'converter'
360382
361- m2r = setup .odmread .getModelByCode ( 'model2' )
383+ m2r = setup .odmread .getModels ( codes = [ 'model2' ] )
362384 assert m2r is not None
363- assert m2r .ModelCode == 'model2'
385+ assert m2r [ 0 ] .ModelCode == 'model2'
364386
365- m1rel = setup .odmread .getRelatedModelsByCode ( 'converter' )
387+ m1rel = setup .odmread .getRelatedModels ( code = 'converter' )
366388 assert len (m1rel ) == 1
367389
368- m2rel = setup .odmread .getRelatedModelsByCode ( 'model2' )
390+ m2rel = setup .odmread .getRelatedModels ( code = 'model2' )
369391 assert len (m2rel ) == 0
370392
371393@skipif (True , reason = "Needs data" )
0 commit comments