Commit 2af47614 authored by Dominik Rosiek's avatar Dominik Rosiek

unit tests for models

parent f02c58ca
This source diff could not be displayed because it is too large. You can view the blob instead.
import uuid import uuid
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
import time
from asynctest import CoroutineMock from asynctest import CoroutineMock
from models import Type from models import Type, Station, Measurement
from tornado.testing import AsyncTestCase, gen_test from tornado.testing import AsyncTestCase, gen_test
class TypeTest(AsyncTestCase): class TypeTest(AsyncTestCase):
def setUp(self): def setUp(self):
Type.stored = {} Type.stored = {}
...@@ -18,6 +21,9 @@ class TypeTest(AsyncTestCase): ...@@ -18,6 +21,9 @@ class TypeTest(AsyncTestCase):
self.type = Type(shortname=self.shortname, unit=self.unit, norm=self.norm, longname=self.longname, self.type = Type(shortname=self.shortname, unit=self.unit, norm=self.norm, longname=self.longname,
description=self.description, type_id=self.id) description=self.description, type_id=self.id)
def tearDown(self):
Type.stored = {}
@gen_test @gen_test
def test_init(self): def test_init(self):
self.assertEqual(self.type.id, self.id) self.assertEqual(self.type.id, self.id)
...@@ -55,19 +61,216 @@ class TypeTest(AsyncTestCase): ...@@ -55,19 +61,216 @@ class TypeTest(AsyncTestCase):
self.assertEqual(result.longname, self.longname) self.assertEqual(result.longname, self.longname)
self.assertEqual(result.description, self.description) self.assertEqual(result.description, self.description)
# import models @gen_test
# def test_save(self):
# station = models.Station(1, "Kraków", 12, 13, "Aleje") with patch('models.DDBtypes') as mock_type:
# station.save() mock_type.return_value.add = CoroutineMock()
# station2 = models.Station.get(station.id) self.type.save()
# assert station.id == station2.id mock_type.return_value.add.assert_called_once_with(pollution_type=self.type)
#
# pollution_type = models.Type(shortname="pm2", unit="mg", norm=120, longname="long_pm2", description="description pm2") @gen_test
# pollution_type.save() def test_get_all(self):
# pollution_type2 = models.Type.get(pollution_type.id) with patch('models.DDBtypes') as mock_type:
# assert pollution_type.id == pollution_type2.id mock_type.return_value.get_all = CoroutineMock()
# mock_type.return_value.get_all.return_value = [{
# measurement = models.Measurement(station=station, pollution_type=pollution_type, value=13, time=124) 'type_id': self.id,
# measurement.save() 'shortname': self.shortname,
# measurement2 = models.Measurement.get(measurement.id) 'unit': self.unit,
# assert measurement.id == measurement2.id 'norm': self.norm,
\ No newline at end of file 'longname': self.longname,
'description': self.description
}]
result = yield Type.get_all()
expected = {self.type.id: self.type}
self.assertCountEqual(result, expected)
self.assertCountEqual(Type.stored, expected)
class StationTest(AsyncTestCase):
def setUp(self):
super(StationTest, self).setUp()
Station.stored = {}
self.id = uuid.uuid4()
self.api_id = 1337
self.city = "test_city"
self.longitude = 12345
self.latitude = 54321
self.name = "test_name"
self.station = Station(station_id=self.id, api_station_id=self.api_id, city=self.city, longitude=self.longitude,
latitude=self.latitude, name=self.name)
def tearDown(self):
Station.stored = {}
@gen_test
def test_init(self):
self.assertEqual(self.station.id, self.id)
self.assertEqual(self.station.api_id, self.api_id)
self.assertEqual(self.station.city, self.city)
self.assertEqual(self.station.longitude, self.longitude)
self.assertEqual(self.station.latitude, self.latitude)
self.assertEqual(self.station.name, self.name)
@gen_test
def test_get_from_storage(self):
Station.stored = {self.station.id: self.station}
result = yield Station.get(self.station.id)
self.assertEqual(result, self.station)
@gen_test
def test_get(self):
with patch('models.DDBstations') as mock_types:
mock_types.return_value.get = CoroutineMock()
mock_types.return_value.get.return_value = {
'station_id': self.id,
'api_station_id': self.api_id,
'city': self.city,
'longitude': self.longitude,
'latitude': self.latitude,
'name': self.name
}
result = yield Station.get(self.station.id)
self.assertEqual(result.id, self.id)
self.assertEqual(result.api_id, self.api_id)
self.assertEqual(result.city, self.city)
self.assertEqual(result.longitude, self.longitude)
self.assertEqual(result.latitude, self.latitude)
self.assertEqual(result.name, self.name)
@gen_test
def test_save(self):
with patch('models.DDBstations') as mock_station:
mock_station.return_value.add = CoroutineMock()
self.station.save()
mock_station.return_value.add.assert_called_once_with(station=self.station)
@gen_test
def test_get_all(self):
with patch('models.DDBstations') as mock_station:
mock_station.return_value.get_all = CoroutineMock()
mock_station.return_value.get_all.return_value = [{
'station_id': self.id,
'api_station_id': self.api_id,
'city': self.city,
'longitude': self.longitude,
'latitude': self.latitude,
'name': self.name
}]
result = yield Station.get_all()
expected = {self.station.id: self.station}
self.assertCountEqual(result, expected)
self.assertCountEqual(Station.stored, expected)
class MeasurementTest(AsyncTestCase):
def setUp(self):
super(MeasurementTest, self).setUp()
Measurement.stored = {}
self.id = uuid.uuid4()
self.station = MagicMock()
self.type = MagicMock()
self.value = 1337
self.time = time.time()
self.meas = Measurement(measurement_id=self.id, station=self.station, pollution_type=self.type,
value=self.value, time=self.time)
def tearDown(self):
Measurement.stored = {}
@gen_test
def test_init(self):
self.assertEqual(self.meas.id, self.id)
self.assertEqual(self.meas.station, self.station)
self.assertEqual(self.meas.type, self.type)
self.assertEqual(self.meas.value, self.value)
self.assertEqual(self.meas.time, self.time)
@gen_test
def test_get_from_storage(self):
Measurement.stored = {self.meas.id: self.meas}
result = yield Measurement.get(self.meas.id)
self.assertEqual(result, self.meas)
@gen_test
def test_get(self):
with patch('models.Station') as mock_station:
mock_station.get = CoroutineMock()
mock_station.get.return_value = self.station
with patch('models.Type') as mock_type:
mock_type.get = CoroutineMock()
mock_type.get.return_value = self.type
with patch('models.DDBmeasurements') as mock_types:
mock_types.return_value.get = CoroutineMock()
mock_types.return_value.get.return_value = {
'measurement_id': self.id,
'station_id': self.station.id,
'type_id': self.type.id,
'value': self.value,
'time': self.time,
}
result = yield Measurement.get(self.station.id)
mock_type.get.assert_called_once_with(self.type.id)
mock_station.get.assert_called_once_with(self.station.id)
self.assertEqual(result.id, self.id)
self.assertEqual(result.station, self.station)
self.assertEqual(result.type, self.type)
self.assertEqual(result.value, self.value)
self.assertEqual(result.time, self.time)
@gen_test
def test_save(self):
with patch('models.DDBmeasurements') as mock_measurements:
with patch('models.DDBlastmeasurements') as mock_last:
mock_measurements.return_value.add = CoroutineMock()
mock_last.return_value.add = CoroutineMock()
self.meas.save()
mock_measurements.return_value.add.assert_called_once_with(measurement=self.meas)
mock_last.return_value.add.assert_called_once_with(measurement=self.meas)
@gen_test
def test_get_last(self):
Measurement.stored = {self.meas.id: self.meas}
with patch('models.DDBlastmeasurements') as mock_last:
mock_last.return_value.get = CoroutineMock()
mock_last.return_value.get.return_value = {
'measurement_id': self.meas.id
}
result = yield Measurement.get_last(station=self.station, pollution_type=self.type)
mock_last.return_value.get.assert_called_once_with(self.station, self.type)
self.assertEqual(result, self.meas)
@gen_test
def test_get_all_last(self):
Measurement.stored = {self.meas.id: self.meas}
with patch('models.DDBlastmeasurements') as mock_last:
mock_last.return_value.get_all = CoroutineMock()
mock_last.return_value.get_all.return_value = [{
'measurement_id': self.meas.id
}]
result = yield Measurement.get_all_last()
mock_last.return_value.get_all.assert_called_once_with()
self.assertCountEqual(result, [self.meas])
def test_str(self):
expected = "{0} {1} {2} {3} {4}".format(self.id, self.station.id, self.type.id, self.value, self.time)
result = str(self.meas)
self.assertEqual(result, expected)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment