Skip to content

Commit df075e3

Browse files
authored
Merge pull request #92 from lsetiawan/fix_test
Fix test
2 parents a8277c3 + 75738ab commit df075e3

File tree

2 files changed

+118
-91
lines changed

2 files changed

+118
-91
lines changed

tests/test_odm2/test_odm2.py

+107-85
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
__author__ = 'tony castronova'
2-
__author__ = 'david valentine'
1+
from __future__ import (absolute_import, division, print_function)
32

43
#import unittest
54

@@ -8,10 +7,20 @@
87
from odm2api.ODM2.services.createService import CreateODM2
98
from odm2api.ODM2.services.updateService import UpdateODM2
109
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)
1216

1317
from tests import test_connection as testConnection
1418
import pytest
19+
20+
21+
__author__ = ['tony castronova', 'david valentine']
22+
23+
1524
xfail = pytest.mark.xfail
1625
skipif = 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

153162
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')
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

192204
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)
211226
methods = setup.odmread.getMethods()
212227

213228
assert len(methods) == 3
214229

215230

216231
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)
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

339358
def 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")

tests/test_odm2/test_readservice.py

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import (absolute_import, division, print_function)
2+
13
import pytest
24
import datetime
35
from os.path import *
@@ -59,7 +61,7 @@ def build_db(self):
5961
try:
6062
db.engine.execute(line + ');')
6163
except Exception as e:
62-
print e
64+
print(e)
6365

6466
self.reader = ReadODM2(db)
6567
self.engine= db.engine
@@ -173,7 +175,7 @@ def test_getRelatedModelsByCode(self):
173175

174176
assert resapi is not None
175177
assert len(resapi) > 0
176-
print resapi[0].ModelCode
178+
print(resapi[0].ModelCode)
177179
assert resapi[0].ModelCode == 'swat'
178180
# assert resapi[0].RelatedModelObj.ModelCode == 'swmm'
179181
# test converter code that doesn't exist
@@ -183,8 +185,11 @@ def test_getRelatedModelsByCode(self):
183185
assert len(resapi) == 0
184186

185187
# test invalid argument
186-
resapi = self.reader.getRelatedModels(code = models.ActionBy)
187-
assert resapi is None
188+
resapi = self.reader.getRelatedModels(code = 234123)
189+
assert resapi == []
190+
# MySQL is very relaxed about this,
191+
# should be `resapi is None` if PostgreSQL,
192+
# because code type is not string
188193

189194

190195

@@ -213,7 +218,7 @@ def test_getAllResults(self):
213218

214219
# get all results from the database
215220
res = self.engine.execute('SELECT * FROM Results').fetchall()
216-
print res
221+
print(res)
217222
# get all results using the api
218223
resapi = self.reader.getResults()
219224

@@ -297,7 +302,7 @@ def test_getResultsBySimulationID(self):
297302
'where s.SimulationID = 1').first()
298303
assert len(res) > 0
299304
res = rawSql2Alchemy(res, models.Results)
300-
print res
305+
print(res)
301306

302307
# get simulation by id using the api
303308
# resapi = self.reader.getResultsBySimulationID(simulation.SimulationID)

0 commit comments

Comments
 (0)