def test_entry(self, mock_time): """ Adds an entry to the database and deletes it. """ hour = 13 minute = 35 mock_timestamp = 12341234 mock_time.return_value = mock_timestamp adh = AlarmDb(self.db_name) # Test an entry with the minimum amount of arguments and check for # default values test_alarm = AlarmItem(hour, minute) test_alarm.id_ = adh.add_alarm(test_alarm) # Test that the alarm object inserted has its member variable edited # with the new timestamp self.assertEqual(mock_timestamp, test_alarm.timestamp) # Check variables with a new alarm with data retrieved directly from db retrieved_alarm = adh.get_alarm(test_alarm.id_) self.assertEqual(hour, retrieved_alarm.hour) self.assertEqual(minute, retrieved_alarm.minute) self.assertEqual(test_alarm.monday, retrieved_alarm.monday) self.assertEqual(test_alarm.tuesday, retrieved_alarm.tuesday) self.assertEqual(test_alarm.wednesday, retrieved_alarm.wednesday) self.assertEqual(test_alarm.thursday, retrieved_alarm.thursday) self.assertEqual(test_alarm.friday, retrieved_alarm.friday) self.assertEqual(test_alarm.saturday, retrieved_alarm.saturday) self.assertEqual(test_alarm.sunday, retrieved_alarm.sunday) self.assertEqual(test_alarm.enabled, retrieved_alarm.enabled) self.assertEqual(test_alarm.label, retrieved_alarm.label) self.assertEqual(mock_timestamp, retrieved_alarm.timestamp) # Test with all possible arguments days = (False, False, True, False, False, True, False) enabled = False label = 'Test alarm label' timestamp = 98765432 test_alarm = AlarmItem(hour, minute, days=days, enabled=enabled, label=label, timestamp=timestamp) test_alarm.id_ = adh.add_alarm(test_alarm) # Check that the timestamp value from the alarm instance was not # modified with the present (in this case the mocked) timestamp self.assertEqual(timestamp, test_alarm.timestamp) # Check variables with a new alarm with data retrieved directly from db retrieved_alarm = adh.get_alarm(test_alarm.id_) self.assertEqual(hour, retrieved_alarm.hour) self.assertEqual(minute, retrieved_alarm.minute) self.assertEqual(days[0], retrieved_alarm.monday) self.assertEqual(days[1], retrieved_alarm.tuesday) self.assertEqual(days[2], retrieved_alarm.wednesday) self.assertEqual(days[3], retrieved_alarm.thursday) self.assertEqual(days[4], retrieved_alarm.friday) self.assertEqual(days[5], retrieved_alarm.saturday) self.assertEqual(days[6], retrieved_alarm.sunday) self.assertEqual(enabled, retrieved_alarm.enabled) self.assertEqual(label, retrieved_alarm.label) self.assertEqual(timestamp, retrieved_alarm.timestamp)
def test_edit_alarm_single(self): """ Adds an alarm, edits a single value and checks all the others remain the same. """ adh = AlarmDb(self.db_name) alarm_test = AlarmItem(13, 35, enabled=True, label='yes', days=(True, False, True, False, True, False, True)) # Check the timestamp changes on add_alarm original_timestamp = alarm_test.timestamp alarm_test.id_ = adh.add_alarm(alarm_test) self.assertNotEqual(alarm_test.timestamp, original_timestamp) # Edit alarm, check new data and different timestamp original_timestamp = alarm_test.timestamp time.sleep(1) edit_success = adh.edit_alarm(alarm_test.id_, minute=0) self.assertTrue(edit_success) edited_alarm = adh.get_alarm(alarm_test.id_) self.assertGreater(edited_alarm.timestamp, original_timestamp) self.assertEqual(edited_alarm.hour, 13) self.assertEqual(edited_alarm.minute, 0) self.assertTrue(edited_alarm.monday) self.assertFalse(edited_alarm.tuesday) self.assertTrue(edited_alarm.wednesday) self.assertFalse(edited_alarm.thursday) self.assertTrue(edited_alarm.friday) self.assertFalse(edited_alarm.saturday) self.assertTrue(edited_alarm.sunday) self.assertTrue(edited_alarm.enabled) self.assertEqual(edited_alarm.label, 'yes') # Test with opposite initial values alarm_test = AlarmItem(10, 20, enabled=False, label='no', days=(False, True, False, True, False, True, False)) alarm_test.id_ = adh.add_alarm(alarm_test) edit_success = adh.edit_alarm(alarm_test.id_, hour=0) self.assertTrue(edit_success) edited_alarm = adh.get_alarm(alarm_test.id_) self.assertEqual(edited_alarm.hour, 0) self.assertEqual(edited_alarm.minute, 20) self.assertFalse(edited_alarm.monday) self.assertTrue(edited_alarm.tuesday) self.assertFalse(edited_alarm.wednesday) self.assertTrue(edited_alarm.thursday) self.assertFalse(edited_alarm.friday) self.assertTrue(edited_alarm.saturday) self.assertFalse(edited_alarm.sunday) self.assertFalse(edited_alarm.enabled) self.assertEqual(edited_alarm.label, 'no')
def test_entry(self, mock_time): """ Adds an entry to the database and deletes it. """ hour = 13 minute = 35 mock_timestamp = 12341234 mock_time.return_value = mock_timestamp adh = AlarmDb(self.db_name) # Test an entry with the minimum amount of arguments and check for # default values test_alarm = AlarmItem(hour, minute) test_alarm.id_ = adh.add_alarm(test_alarm) # Test that the alarm object inserted has its member variable edited # with the new timestamp self.assertEqual(mock_timestamp, test_alarm.timestamp) # Check variables with a new alarm with data retrieved directly from db retrieved_alarm = adh.get_alarm(test_alarm.id_) self.assertEqual(hour, retrieved_alarm.hour) self.assertEqual(minute, retrieved_alarm.minute) self.assertEqual(test_alarm.monday, retrieved_alarm.monday) self.assertEqual(test_alarm.tuesday, retrieved_alarm.tuesday) self.assertEqual(test_alarm.wednesday, retrieved_alarm.wednesday) self.assertEqual(test_alarm.thursday, retrieved_alarm.thursday) self.assertEqual(test_alarm.friday, retrieved_alarm.friday) self.assertEqual(test_alarm.saturday, retrieved_alarm.saturday) self.assertEqual(test_alarm.sunday, retrieved_alarm.sunday) self.assertEqual(test_alarm.enabled, retrieved_alarm.enabled) self.assertEqual(test_alarm.label, retrieved_alarm.label) self.assertEqual(mock_timestamp, retrieved_alarm.timestamp) # Test with all possible arguments days = (False, False, True, False, False, True, False) enabled = False label = 'Test alarm label' timestamp = 98765432 test_alarm = AlarmItem( hour, minute, days=days, enabled=enabled, label=label, timestamp=timestamp) test_alarm.id_ = adh.add_alarm(test_alarm) # Check that the timestamp value from the alarm instance was not # modified with the present (in this case the mocked) timestamp self.assertEqual(timestamp, test_alarm.timestamp) # Check variables with a new alarm with data retrieved directly from db retrieved_alarm = adh.get_alarm(test_alarm.id_) self.assertEqual(hour, retrieved_alarm.hour) self.assertEqual(minute, retrieved_alarm.minute) self.assertEqual(days[0], retrieved_alarm.monday) self.assertEqual(days[1], retrieved_alarm.tuesday) self.assertEqual(days[2], retrieved_alarm.wednesday) self.assertEqual(days[3], retrieved_alarm.thursday) self.assertEqual(days[4], retrieved_alarm.friday) self.assertEqual(days[5], retrieved_alarm.saturday) self.assertEqual(days[6], retrieved_alarm.sunday) self.assertEqual(enabled, retrieved_alarm.enabled) self.assertEqual(label, retrieved_alarm.label) self.assertEqual(timestamp, retrieved_alarm.timestamp)
def test_edit_alarm_single(self): """ Adds an alarm, edits a single value and checks all the others remain the same. """ adh = AlarmDb(self.db_name) alarm_test = AlarmItem( 13, 35, enabled=True, label='yes', days=(True, False, True, False, True, False, True)) # Check the timestamp changes on add_alarm original_timestamp = alarm_test.timestamp alarm_test.id_ = adh.add_alarm(alarm_test) self.assertNotEqual(alarm_test.timestamp, original_timestamp) # Edit alarm, check new data and different timestamp original_timestamp = alarm_test.timestamp time.sleep(1) edit_success = adh.edit_alarm(alarm_test.id_, minute=0) self.assertTrue(edit_success) edited_alarm = adh.get_alarm(alarm_test.id_) self.assertGreater(edited_alarm.timestamp, original_timestamp) self.assertEqual(edited_alarm.hour, 13) self.assertEqual(edited_alarm.minute, 0) self.assertTrue(edited_alarm.monday) self.assertFalse(edited_alarm.tuesday) self.assertTrue(edited_alarm.wednesday) self.assertFalse(edited_alarm.thursday) self.assertTrue(edited_alarm.friday) self.assertFalse(edited_alarm.saturday) self.assertTrue(edited_alarm.sunday) self.assertTrue(edited_alarm.enabled) self.assertEqual(edited_alarm.label, 'yes') # Test with opposite initial values alarm_test = AlarmItem( 10, 20, enabled=False, label='no', days=(False, True, False, True, False, True, False)) alarm_test.id_ = adh.add_alarm(alarm_test) edit_success = adh.edit_alarm(alarm_test.id_, hour=0) self.assertTrue(edit_success) edited_alarm = adh.get_alarm(alarm_test.id_) self.assertEqual(edited_alarm.hour, 0) self.assertEqual(edited_alarm.minute, 20) self.assertFalse(edited_alarm.monday) self.assertTrue(edited_alarm.tuesday) self.assertFalse(edited_alarm.wednesday) self.assertTrue(edited_alarm.thursday) self.assertFalse(edited_alarm.friday) self.assertTrue(edited_alarm.saturday) self.assertFalse(edited_alarm.sunday) self.assertFalse(edited_alarm.enabled) self.assertEqual(edited_alarm.label, 'no')
def test_edit_alarm(self): """ Creates an alarm and edits it. """ adh = AlarmDb(self.db_name) adh.delete_all_alarms() alarm_test = AlarmItem( 13, 35, days=(False, False, False, False, False, False, False), enabled=True, label='') # Check the timestamp changes on add_alarm original_timestamp = alarm_test.timestamp alarm_test.id_ = adh.add_alarm(alarm_test) self.assertNotEqual(alarm_test.timestamp, original_timestamp) # Edit alarm, check new data and different timestamp original_timestamp = alarm_test.timestamp time.sleep(1) edit_success = adh.edit_alarm( alarm_test.id_, 11, 22, enabled=False, label='New label', days=(True, True, True, True, True, True, True)) self.assertEqual(edit_success, True) edited_alarm = adh.get_alarm(alarm_test.id_) self.assertGreater(edited_alarm.timestamp, original_timestamp) self.assertEqual(edited_alarm.hour, 11) self.assertEqual(edited_alarm.minute, 22) self.assertTrue(edited_alarm.monday) self.assertTrue(edited_alarm.tuesday) self.assertTrue(edited_alarm.wednesday) self.assertTrue(edited_alarm.thursday) self.assertTrue(edited_alarm.friday) self.assertTrue(edited_alarm.saturday) self.assertTrue(edited_alarm.sunday) self.assertFalse(edited_alarm.enabled) self.assertEqual(edited_alarm.label, 'New label')
def test_get_all_enable_alarms(self): """ Adds 5 alarms into the database, 3 enabled and 2 disabled. Checks the enabled and disabled getters are working. """ adh = AlarmDb(self.db_name) adh.delete_all_alarms() adh.add_alarm(AlarmItem(13, 35, days=self.random_days, enabled=True)) # id 1 adh.add_alarm(AlarmItem(14, 36, days=self.random_days, enabled=False)) # id 2 adh.add_alarm(AlarmItem(15, 37, days=self.random_days, enabled=True)) # id 3 adh.add_alarm(AlarmItem(16, 38, days=self.random_days, enabled=False)) # id 4 adh.add_alarm(AlarmItem(17, 39, days=self.random_days, enabled=True)) # id 5 enabled_alarms = adh.get_all_enabled_alarms() disabled_alarms = adh.get_all_disabled_alarms() self.assertEqual(len(enabled_alarms), 3) self.assertEqual(len(disabled_alarms), 2)
def test_get_all_enable_alarms(self): """ Adds 5 alarms into the database, 3 enabled and 2 disabled. Checks the enabled and disabled getters are working. """ adh = AlarmDb(self.db_name) adh.delete_all_alarms() adh.add_alarm( AlarmItem(13, 35, days=self.random_days, enabled=True)) # id 1 adh.add_alarm( AlarmItem(14, 36, days=self.random_days, enabled=False)) # id 2 adh.add_alarm( AlarmItem(15, 37, days=self.random_days, enabled=True)) # id 3 adh.add_alarm( AlarmItem(16, 38, days=self.random_days, enabled=False)) # id 4 adh.add_alarm( AlarmItem(17, 39, days=self.random_days, enabled=True)) # id 5 enabled_alarms = adh.get_all_enabled_alarms() disabled_alarms = adh.get_all_disabled_alarms() self.assertEqual(len(enabled_alarms), 3) self.assertEqual(len(disabled_alarms), 2)
def test_update_alarm(self): """ Creates an alarm and update it. """ adh = AlarmDb(self.db_name) adh.delete_all_alarms() alarm_test = AlarmItem(13, 35, days=(False, False, False, False, False, False, False), enabled=True, label='') original_timestamp = alarm_test.timestamp # Add the alarm to the database and check the timestamp has been set alarm_test.id_ = adh.add_alarm(alarm_test) self.assertNotEqual(alarm_test.timestamp, original_timestamp) original_timestamp = alarm_test.timestamp # Create a new AlarmItem with the same id and timestamp to update the db alarm_updated = AlarmItem(21, 12, days=(True, True, True, True, True, True, True), enabled=False, label='new label', alarm_id=alarm_test.id_, timestamp=original_timestamp) time.sleep(1) update_success = adh.update_alarm(alarm_updated) self.assertEqual(update_success, True) self.assertNotEqual(alarm_updated.timestamp, original_timestamp) # Check the new data has replaced the old, retrieved_alarm = adh.get_alarm(alarm_test.id_) self.assertEqual(retrieved_alarm.hour, 21) self.assertEqual(retrieved_alarm.minute, 12) self.assertTrue(retrieved_alarm.monday) self.assertTrue(retrieved_alarm.tuesday) self.assertTrue(retrieved_alarm.wednesday) self.assertTrue(retrieved_alarm.thursday) self.assertTrue(retrieved_alarm.friday) self.assertTrue(retrieved_alarm.saturday) self.assertTrue(retrieved_alarm.sunday) self.assertFalse(retrieved_alarm.enabled) self.assertEqual(retrieved_alarm.label, 'new label') self.assertEqual(retrieved_alarm.timestamp, alarm_updated.timestamp) self.assertGreater(retrieved_alarm.timestamp, original_timestamp)
def test_edit_alarm(self): """ Creates an alarm and edits it. """ adh = AlarmDb(self.db_name) adh.delete_all_alarms() alarm_test = AlarmItem(13, 35, days=(False, False, False, False, False, False, False), enabled=True, label='') # Check the timestamp changes on add_alarm original_timestamp = alarm_test.timestamp alarm_test.id_ = adh.add_alarm(alarm_test) self.assertNotEqual(alarm_test.timestamp, original_timestamp) # Edit alarm, check new data and different timestamp original_timestamp = alarm_test.timestamp time.sleep(1) edit_success = adh.edit_alarm(alarm_test.id_, 11, 22, enabled=False, label='New label', days=(True, True, True, True, True, True, True)) self.assertEqual(edit_success, True) edited_alarm = adh.get_alarm(alarm_test.id_) self.assertGreater(edited_alarm.timestamp, original_timestamp) self.assertEqual(edited_alarm.hour, 11) self.assertEqual(edited_alarm.minute, 22) self.assertTrue(edited_alarm.monday) self.assertTrue(edited_alarm.tuesday) self.assertTrue(edited_alarm.wednesday) self.assertTrue(edited_alarm.thursday) self.assertTrue(edited_alarm.friday) self.assertTrue(edited_alarm.saturday) self.assertTrue(edited_alarm.sunday) self.assertFalse(edited_alarm.enabled) self.assertEqual(edited_alarm.label, 'New label')
def test_update_alarm(self): """ Creates an alarm and update it. """ adh = AlarmDb(self.db_name) adh.delete_all_alarms() alarm_test = AlarmItem( 13, 35, days=(False, False, False, False, False, False, False), enabled=True, label='') original_timestamp = alarm_test.timestamp # Add the alarm to the database and check the timestamp has been set alarm_test.id_ = adh.add_alarm(alarm_test) self.assertNotEqual(alarm_test.timestamp, original_timestamp) original_timestamp = alarm_test.timestamp # Create a new AlarmItem with the same id and timestamp to update the db alarm_updated = AlarmItem( 21, 12, days=(True, True, True, True, True, True, True), enabled=False, label='new label', alarm_id=alarm_test.id_, timestamp=original_timestamp) time.sleep(1) update_success = adh.update_alarm(alarm_updated) self.assertEqual(update_success, True) self.assertNotEqual(alarm_updated.timestamp, original_timestamp) # Check the new data has replaced the old, retrieved_alarm = adh.get_alarm(alarm_test.id_) self.assertEqual(retrieved_alarm.hour, 21) self.assertEqual(retrieved_alarm.minute, 12) self.assertTrue(retrieved_alarm.monday) self.assertTrue(retrieved_alarm.tuesday) self.assertTrue(retrieved_alarm.wednesday) self.assertTrue(retrieved_alarm.thursday) self.assertTrue(retrieved_alarm.friday) self.assertTrue(retrieved_alarm.saturday) self.assertTrue(retrieved_alarm.sunday) self.assertFalse(retrieved_alarm.enabled) self.assertEqual(retrieved_alarm.label, 'new label') self.assertEqual(retrieved_alarm.timestamp, alarm_updated.timestamp) self.assertGreater(retrieved_alarm.timestamp, original_timestamp)