Skip to content

Commit e82db59

Browse files
author
Stephanie Reeder
committed
update tests
1 parent 3ed3253 commit e82db59

File tree

4 files changed

+128
-74
lines changed

4 files changed

+128
-74
lines changed

odm2api/ODM2/services/readService.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ def getAffiliations(self, ids=None, personfirst=None, personlast=None, orgcode=N
423423
Results
424424
"""
425425

426-
def getResults(self, ids=None, actionid=None):
426+
def getResults(self, ids=None, actionid=None, simulationid = None):
427427

428428
# TODO what if user sends in both type and actionid vs just actionid
429429
"""
@@ -436,13 +436,29 @@ def getResults(self, ids=None, actionid=None):
436436
query = self._session.query(Results)
437437

438438
if actionid: query = query.join(FeatureActions).filter_by(ActionID=actionid)
439+
if simulationid: query = query.join(Results)\
440+
.join(FeatureActions)\
441+
.join(Actions)\
442+
.join(Simulations)\
443+
.filter(Simulations.SimulationID == simulationid)
439444
if ids: query = query.filter(Results.ResultID.in_(ids))
440445

441446
try:
442447
return query.all()
443448
except:
444449
return None
445450

451+
#
452+
# def getResultsBySimulationID(self, simulationid):
453+
# try:
454+
# return self._session.query(Results) \
455+
# .join(FeatureActions) \
456+
# .join(Actions) \
457+
# .join(Simulations) \
458+
# .filter(Simulations.SimulationID == simulationid).all()
459+
# except Exception, e:
460+
# print e
461+
# return None
446462
#
447463
#
448464
# def getResultValidDateTime(self, resultId):

odm2api/ODMconnection.py

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,34 +16,7 @@
1616
class SessionFactory():
1717
def __init__(self, connection_string, echo=True, version = 1.1):
1818
if 'sqlite' in connection_string:
19-
# from sqlite3 import dbapi2 as sqlite
20-
# put the spatialite dll on the path. If one had pyspatialite installed thn
21-
# this would not be required... but trying to get that on a windows machine
22-
# was way too hard to bother
23-
# dirDLLspatialite = 'C:/bin'
24-
# os.environ['PATH'] = dirDLLspatialite + ';' + os.environ['PATH']
25-
26-
# #engine = create_engine('sqlite:///D:\\temp\\test_1.db', module=sqlite, echo=False)
27-
# engine = create_engine(connection_string, module=sqlite, echo=False)
28-
29-
# this enables the extension on each connection
30-
# @event.listens_for(engine, "connect")
31-
# def connect(dbapi_connection, connection_rec):
32-
# dbapi_connection.enable_load_extension(True)
33-
# dbapi_connection.execute("SELECT load_extension('libspatialite-4.dll')")
34-
35-
#from pysqlite2 import dbapi2 as sqlite
36-
#import pyspatialite.dpabi as sqlite
37-
# self.engine = create_engine(connection_string, model = sqlite ,encoding='utf-8', echo=echo)
38-
39-
# @event.listens_for(self.engine, "connect")
40-
# def connect(dbapi_connection, connection_rec):
41-
# dbapi_connection.enable_load_extension(True)
42-
# dbapi_connection.execute("SELECT load_extension('{0}');".format("mod_spatialite"))
43-
44-
# self.engine.execute("SELECT InitSpatialMetaData();")#
45-
# self.engine.connect().connection.enable_load_extension(True)
46-
# self.engine.execute("SELECT load_extension('mod_spatialite');")#
19+
4720
self.engine = create_engine(connection_string, encoding='utf-8', echo=echo)
4821
self.test_engine = self.engine
4922

@@ -193,13 +166,13 @@ def __buildConnectionString(self, conn_dict):
193166
driver = "pyodbc"
194167
#'DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password'])
195168
# quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;' % (conn_dict['address'], conn_dict['user'], conn_dict['password']))
196-
quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s;DATABASE=%s' %
197-
(conn_dict['address'], conn_dict['user'], conn_dict['password'],conn_dict['db'],))
169+
quoted = urllib.quote_plus('DRIVER={FreeTDS};DSN=%s;UID=%s;PWD=%s'%#;DATABASE=%s' %
170+
(conn_dict['address'], conn_dict['user'], conn_dict['password'],#conn_dict['db'],
171+
))
198172
conn_string = 'mssql+pyodbc:///?odbc_connect={}'.format(quoted)
199173
else:
200174
if conn_dict['engine'] == 'mssql':
201175
driver = "pyodbc"
202-
#self._connection_format = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+10.0"
203176
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server"
204177
if "sqlncli11.dll" in os.listdir("C:\\Windows\\System32"):
205178
conn = "%s+%s://%s:%s@%s/%s?driver=SQL+Server+Native+Client+11.0"

tests/test_odm2/test_createservice.py

Lines changed: 89 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,10 @@ def test_createVariable(self):
6363
nodv = -9999
6464
speciation="mg/L as PO4"
6565
definition="This is a test variable"
66-
self.writer.createVariable(code = code,name = name,vType = vType,nodv =nodv,speciation=None,definition=None)
67-
66+
v = models.Variables(VariableCode = code, VariableName=name, VariableTypeCV=vType, NoDataValue= nodv, Speciation = speciation,
67+
Definition=definition)
68+
# self.writer.createVariable(code = code,name = name,vType = vType,nodv =nodv,speciation=None,definition=None)
69+
self.writer.createVariable(v)
6870
# assert that this dataset has been successfully inserted
6971
res = self.engine.execute('SELECT * from Variables WHERE VariableCode = "MyVar" ORDER BY VariableID DESC').first()
7072
assert(res is not None)
@@ -75,7 +77,10 @@ def test_createVariable(self):
7577
assert(res[5] == None) # speciation
7678
assert(res[6] == nodv ) # nodata
7779

78-
self.writer.createVariable(code = code, name = name, vType = vType, nodv =nodv, speciation=speciation,definition=None)
80+
v = models.Variables(VariableCode = code, VariableName=name, VariableTypeCV=vType, NoDataValue= nodv, Speciation = speciation,
81+
Definition=definition)
82+
# self.writer.createVariable(code = code,name = name,vType = vType,nodv =nodv,speciation=None,definition=None)
83+
self.writer.createVariable(v)
7984

8085
# assert that this dataset has been successfully inserted
8186
res = self.engine.execute('SELECT * from Variables WHERE VariableCode = "MyVar" ORDER BY VariableID DESC').first()
@@ -87,8 +92,11 @@ def test_createVariable(self):
8792
assert(res[5] == speciation) # speciation
8893
assert(res[6] == nodv ) # nodata
8994

95+
v = models.Variables(VariableCode = code, VariableName=name, VariableTypeCV=vType, NoDataValue= nodv, Speciation = speciation,
96+
Definition=definition)
97+
# self.writer.createVariable(code = code,name = name,vType = vType,nodv =nodv,speciation=None,definition=None)
98+
self.writer.createVariable(v)
9099

91-
self.writer.createVariable(code = code,name = name,vType = vType,nodv =nodv,speciation=None,definition=definition)
92100

93101
# assert that this dataset has been successfully inserted
94102
res = self.engine.execute('SELECT * from Variables WHERE VariableCode = "MyVar" ORDER BY VariableID DESC').first()
@@ -101,7 +109,11 @@ def test_createVariable(self):
101109
assert(res[6] == nodv ) # nodata
102110

103111

104-
self.writer.createVariable(code = code,name = name,vType = vType,nodv =nodv,speciation=speciation,definition=definition)
112+
v = models.Variables(VariableCode = code, VariableName=name, VariableTypeCV=vType, NoDataValue= nodv, Speciation = speciation,
113+
Definition=definition)
114+
# self.writer.createVariable(code = code,name = name,vType = vType,nodv =nodv,speciation=None,definition=None)
115+
self.writer.createVariable(v)
116+
105117

106118
# assert that this dataset has been successfully inserted
107119
res = self.engine.execute('SELECT * from Variables WHERE VariableCode = "MyVar" ORDER BY VariableID DESC').first()
@@ -147,10 +159,14 @@ def test_createDataset(self):
147159
assert(len(res.fetchall()) == 0)
148160

149161
# create a new dataset
150-
dataset = self.writer.createDataset(dstype=type,
151-
dscode=code,
152-
dstitle=title,
153-
dsabstract=desc)
162+
# dataset = self.writer.createDataset(dstype=type,
163+
# dscode=code,
164+
# dstitle=title,
165+
# dsabstract=desc)
166+
#TODO uuid
167+
d = models.Datasets(DataSetTypeCV = type, DataSetCode =code, DataSetTitle=title, DataSetAbstract = desc)
168+
dataset = self.writer.createDataset(d)
169+
154170

155171
# assert that this dataset has been successfully inserted
156172
res = self.engine.execute('SELECT * from DataSets')
@@ -176,15 +192,31 @@ def test_createResult(self):
176192
assert(len(res.fetchall()) == 0)
177193

178194
# create a result record
179-
self.writer.createResult(featureactionid = 1,
180-
variableid = 1,
181-
unitid = 1,
182-
processinglevelid = 1,
183-
valuecount = 0,
184-
sampledmedium = 'unknown',
185-
resulttypecv = 'time series',
186-
taxonomicclass=None, resultdatetime=None, resultdatetimeutcoffset=None,
187-
validdatetime=None, validdatetimeutcoffset=None, statuscv=None)
195+
# self.writer.createResult(featureactionid = 1,
196+
# variableid = 1,
197+
# unitid = 1,
198+
# processinglevelid = 1,
199+
# valuecount = 0,
200+
# sampledmedium = 'unknown',
201+
# resulttypecv = 'time series',
202+
# taxonomicclass=None, resultdatetime=None, resultdatetimeutcoffset=None,
203+
# validdatetime=None, validdatetimeutcoffset=None, statuscv=None)
204+
#TODO uuid
205+
r = models.Results(FeatureActionID = 1,
206+
VariableID=1,
207+
UnitsID =1,
208+
ProcessingLevelID = 1,
209+
ValueCount = 0,
210+
SampledMediumCV = 'unknown',
211+
ResultTypeCV = 'time series',
212+
TaxonomicClassifierID = None,
213+
ResultDateTime = None,
214+
ResultDateTimeUTCOffset = None,
215+
ValidDateTime=None,
216+
ValidDateTimeUTCOffset = None,
217+
StatusCV = None
218+
)
219+
self.writer.createResult(r)
188220

189221

190222
# assert that there are results
@@ -201,15 +233,27 @@ def test_createTimeSeriesResult(self):
201233
result = self.engine.execute('SELECT * FROM Results').first()
202234
if result is None:
203235
# create a basic result record
204-
self.writer.createResult(featureactionid = 1,variableid = 1,unitid = 1,processinglevelid = 1,
205-
valuecount = 0,sampledmedium = 'unknown',resulttypecv = 'time series')
236+
# self.writer.createResult(featureactionid = 1,variableid = 1,unitid = 1,processinglevelid = 1,
237+
# valuecount = 0,sampledmedium = 'unknown',resulttypecv = 'time series')
238+
#TODO uuid
239+
r = models.Results(FeatureActionID = 1,
240+
VariableID=1,
241+
UnitsID =1,
242+
ProcessingLevelID = 1,
243+
ValueCount = 0,
244+
SampledMediumCV = 'unknown',
245+
ResultTypeCV = 'time series',
246+
247+
)
248+
self.writer.createResult(r)
206249
result = self.engine.execute('SELECT * FROM Results').first()
207250
assert(result is not None)
208251

209252

210253
# create most basic time series result record possible
211-
tsr = self.writer.createTimeSeriesResult(result=result, aggregationstatistic='unknown')
212-
254+
# tsr = self.writer.createTimeSeriesResult(result=result, aggregationstatistic='unknown')
255+
t = models.TimeSeriesResults(ResultID = result.ResultID, AggregationStatisticCV = 'unknown')
256+
tsr= self.writer.createResults(t)
213257
# assert that this basic tsr exists in the datbase
214258
res = self.engine.execute('SELECT * FROM TimeSeriesResults').first()
215259
assert(res is not None)
@@ -250,17 +294,29 @@ def test_createSimulation(self):
250294
# create a new simulation
251295
st = datetime.datetime(2016,1,1)
252296
et = datetime.datetime(2016,1,25)
253-
dataset = self.writer.createSimulation( actionid = 1,
254-
modelID=1,
255-
simulationName= 'MySimulation',
256-
simulationDescription = 'My simulation description',
257-
simulationStartDateTime = st,
258-
simulationStartOffset = 6,
259-
simulationEndDateTime = et,
260-
simulationEndOffset = 6,
261-
timeStepValue = 1,
262-
timeStepUnitID = 1,
263-
inputDatasetID=None)
297+
# sim = self.writer.createSimulation( actionid = 1,
298+
# modelID=1,
299+
# simulationName= 'MySimulation',
300+
# simulationDescription = 'My simulation description',
301+
# simulationStartDateTime = st,
302+
# simulationStartOffset = 6,
303+
# simulationEndDateTime = et,
304+
# simulationEndOffset = 6,
305+
# timeStepValue = 1,
306+
# timeStepUnitID = 1,
307+
# inputDatasetID=None)
308+
s = models.Simulations(ActionID = 1,
309+
SimulationName ="MySimulation",
310+
SimulationDescription = "My simulation description",
311+
SimulationsStartDateTime = st,
312+
SimulationStartOffset=6,
313+
SimulationEdnDateTime=et,
314+
SimulationEndOffset=6,
315+
TimeStepValue=1,
316+
TimeStepuUnitsID=1,
317+
InputDataSetID=None
318+
)
319+
sim = self.writer.creatSimulation(s)
264320

265321
# assert that this record has been successfully inserted
266322
res = self.engine.execute('SELECT * from Simulations')

tests/test_odm2/test_readservice.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,27 +134,32 @@ def test_getModelByCode(self):
134134
def test_getRelatedModelsByID(self):
135135

136136
# get related models by id using the api
137-
resapi = self.reader.getRelatedModelsByID(2)
137+
# resapi = self.reader.getRelatedModelsByID(2)
138+
resapi = self.reader.getRelatedModels(id = 2)
138139

139140
assert resapi is not None
140141
assert resapi[0].ModelObj.ModelCode == 'swat'
141142

142143
def test_getRelatedModelsByCode(self):
143144

144145
# get related models by id using the api
145-
resapi = self.reader.getRelatedModelsByCode('swmm')
146+
#resapi = self.reader.getRelatedModelsByCode('swmm')
147+
resapi = self.reader.getRelatedModels(code = 'swmm')
146148

147149
assert resapi is not None
148150
assert len(resapi) > 0
149151
assert resapi[0].ModelObj.ModelCode == 'swat'
150152

151153
# test model code that doesn't exist
152-
resapi = self.reader.getRelatedModelsByCode('None')
154+
# resapi = self.reader.getRelatedModelsByCode('None')
155+
resapi= self.reader.getRelatedModels(code = 'None')
156+
153157
assert resapi is not None
154158
assert len(resapi) == 0
155159

156160
# test invalid argument
157-
resapi = self.reader.getRelatedModelsByCode(models.ActionBy)
161+
# resapi = self.reader.getRelatedModelsByCode(models.ActionBy)
162+
resapi = self.reader.getRelatedModels(code = models.ActionBy)
158163
assert resapi is None
159164

160165

@@ -184,8 +189,8 @@ def test_getAllSimulations(self):
184189
res = self.engine.execute('SELECT * FROM Simulations').fetchall()
185190

186191
# get all simulations using the api
187-
resapi = self.reader.getAllSimulations()
188-
192+
# resapi = self.reader.getAllSimulations()
193+
resapi = self.reader.getSimulations()
189194
assert len(res) == len(resapi)
190195

191196
def test_getSimulationByName(self):
@@ -195,7 +200,8 @@ def test_getSimulationByName(self):
195200
simName = res[2]
196201

197202
# get simulation by name using the api
198-
resapi = self.reader.getSimulationByName(simulationName=simName)
203+
# resapi = self.reader.getSimulationByName(simulationName=simName)
204+
resapi = self.reader.getSimulations(name = simName)
199205
assert resapi is not None
200206

201207
def test_getSimulationByActionID(self):
@@ -205,7 +211,8 @@ def test_getSimulationByActionID(self):
205211
actionID = res[1]
206212

207213
# get simulation by actionid using the api
208-
resapi = self.reader.getSimulationByActionID(actionID=actionID)
214+
# resapi = self.reader.getSimulationByActionID(actionID=actionID)
215+
resapi = self.reader.getSimulation(actionid=actionID)
209216
assert resapi is not None
210217

211218
def test_getResultsBySimulationID(self):
@@ -225,7 +232,9 @@ def test_getResultsBySimulationID(self):
225232
print res
226233

227234
# get simulation by id using the api
228-
resapi = self.reader.getResultsBySimulationID(simulation.SimulationID)
235+
# resapi = self.reader.getResultsBySimulationID(simulation.SimulationID)
236+
resapi = self.reader.getResults(simulationid = simulation.SimulationID)
237+
229238
assert resapi is not None
230239
assert len(resapi) > 0
231240
assert res.ResultID == resapi[0].ResultID

0 commit comments

Comments
 (0)