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_empty_table_zero_alarms(self):
     """ Check that an empty table returns a 0 length list of items """
     adh = AlarmDb(self.db_name)
     adh.delete_all_alarms()
     number_of_alarms = adh.get_number_of_alarms()
     all_alarms = adh.get_all_alarms()
     self.assertEqual(number_of_alarms, 0)
     self.assertEqual(len(all_alarms), 0)
 def test_empty_table_zero_alarms(self):
     """ Check that an empty table returns a 0 length list of items """
     adh = AlarmDb(self.db_name)
     adh.delete_all_alarms()
     number_of_alarms = adh.get_number_of_alarms()
     all_alarms = adh.get_all_alarms()
     self.assertEqual(number_of_alarms, 0)
     self.assertEqual(len(all_alarms), 0)
    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_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_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)
 def test_get_alarm_and_delete(self):
     """
     Adds 5 alarms into the database, then it removes one, and then all the
     rest.
     """
     adh = AlarmDb(self.db_name)
     self.only_five_entries(adh)
     retrieved_alarm = adh.get_alarm(3)  # AlarmItem(15, 37) id=3
     self.assertEqual(retrieved_alarm.hour, 15)
     self.assertEqual(retrieved_alarm.minute, 37)
     delete_success = adh.delete_alarm(3)
     self.assertTrue(delete_success)
     retrieved_alarm = adh.get_alarm(3)  # AlarmItem(15, 37) id=3
     self.assertIsNone(retrieved_alarm)
     delete_success = adh.delete_all_alarms()
     self.assertTrue(delete_success)
 def test_get_alarm_and_delete(self):
     """
     Adds 5 alarms into the database, then it removes one, and then all the
     rest.
     """
     adh = AlarmDb(self.db_name)
     self.only_five_entries(adh)
     retrieved_alarm = adh.get_alarm(3)  # AlarmItem(15, 37) id=3
     self.assertEqual(retrieved_alarm.hour, 15)
     self.assertEqual(retrieved_alarm.minute, 37)
     delete_success = adh.delete_alarm(3)
     self.assertTrue(delete_success)
     retrieved_alarm = adh.get_alarm(3)  # AlarmItem(15, 37) id=3
     self.assertIsNone(retrieved_alarm)
     delete_success = adh.delete_all_alarms()
     self.assertTrue(delete_success)