From 07d6408e6e16d3f6901fcb0e0c9c95fee4c00b08 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 22 Aug 2021 22:29:24 +0200 Subject: [PATCH] #9 - test multiple policies --- src/test/DatabaseCleanerTest.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/test/DatabaseCleanerTest.py b/src/test/DatabaseCleanerTest.py index 026c96d..c1a2dfe 100644 --- a/src/test/DatabaseCleanerTest.py +++ b/src/test/DatabaseCleanerTest.py @@ -98,6 +98,8 @@ class TestDatabaseCleaner(unittest.TestCase): return [cls.MEASUREMENT2, cls.MEASUREMENT3, cls.MEASUREMENT4] elif startTime == '2021-08-18 18:00:00' and endTime == '2021-08-18 23:59:59': return [] + elif startTime == '2021-08-18 00:00:00' and endTime == '2021-08-18 23:59:59': + return [cls.MEASUREMENT1, cls.MEASUREMENT2, cls.MEASUREMENT3, cls.MEASUREMENT4] else: return [] else: @@ -266,4 +268,25 @@ class TestDatabaseCleaner(unittest.TestCase): self.assertEqual((database, {3}), calls[0].args) self.assertEqual((database, {5}), calls[1].args) - # TODO: test: multiple policies + def test_twoPolicies_deleteMeasurements_oneSensor(self): + mockedCrud = Mock() + + with patch.dict('sys.modules', **{'logic.database.Crud': mockedCrud}): + mockedCrud.DATE_FORMAT = '%Y-%m-%d %H:%M:%S' + mockedCrud.get_measurements_for_sensor.side_effect = self.get_measurements_mocked + mockedCrud.get_sensors.return_value = [Schemas.Sensor(id=1, name="myTempSensor", + type="temperature", device_id=1)] + mockedCrud.get_first_measurement_for_sensor.return_value = self.FIRST_MEASUREMENT + + database = Mock() + from logic.database.DatabaseCleaner import DatabaseCleaner + from logic.database.DatabaseCleaner import RetentionPolicy + + policy1 = RetentionPolicy(numberOfMeasurementsPerDay=4, ageInDays=1) + policy2 = RetentionPolicy(numberOfMeasurementsPerDay=2, ageInDays=1) + DatabaseCleaner([policy1, policy2]).clean(database, datetime(year=2021, month=8, day=19).date()) + + calls = mockedCrud.delete_multiple_measurements.call_args_list + self.assertEqual(2, len(calls)) + self.assertEqual((database, {3}), calls[0].args) + self.assertEqual((database, {3, 4}), calls[1].args) -- GitLab