Exemplo n.º 1
0
 def test_get_wrong_entry(self):
     """ Loads 5 alarms and then tries to access an invalid alarm. """
     adh = AlarmDb(self.db_name)
     self.only_five_entries(adh)
     # ID 7 does not exists
     alarm = adh.get_alarm(7)
     self.assertIsNone(alarm)
Exemplo n.º 2
0
    def edit_alarm(self, alarm_id, hour=None, minute=None, days=None,
                   enabled=None, label=None):
        """
        Edits an alarm from the database with the input data.
        A new timestamp is set by the AlarmDb class if the edit is successful.
        :param alarm_id: Integer to indicate the ID of the alarm to be edited.
        :param hour: Integer to indicate the alarm hour.
        :param minute: Integer to indicate the alarm minute.
        :param days: 7-item list of booleans to indicate repeat weekdays.
        :param enabled: Boolean to indicate alarm enabled state.
        :param label: Strong to contain the alarm label.
        :return: Boolean indicating the success of the 'edit' operation.
        """
        db = AlarmDb()
        # As the default values for AlarmDb.edit_alarm are all None as well we
        # can send all through as is.
        success = db.edit_alarm(
            alarm_id,  hour=hour, minute=minute, days=days, enabled=enabled,
            label=label)

        # If a successful edit was carried, then make sure the alarm is launched
        if success is True:
            self.__set_alarm_thread(AlarmManager.get_alarm(alarm_id))

        return success
Exemplo n.º 3
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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 def test_create_instance(self):
     """
     Simply creates an instance with an input file and checks the database
     file has been created.
     """
     db_file = '%s.db' % self.db_name
     # Ensure the file is not there
     if os.path.isfile(db_file):
         os.remove(db_file)
     self.assertFalse(os.path.isfile(db_file))
     adh = AlarmDb(self.db_name)
     adh._AlarmDb__connect_alarms()
     self.assertTrue(os.path.isfile(db_file))
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 def test_get_all_alarms(self):
     """
     Adds 5 alarms to the db, then checks all are retrieved.
     Also test the get_number_of_alarms method.
     """
     adh = AlarmDb(self.db_name)
     self.only_five_entries(adh)
     number_of_alarms = adh.get_number_of_alarms()
     all_alarms = adh.get_all_alarms()
     self.assertEqual(number_of_alarms, 5)
     self.assertEqual(number_of_alarms, len(all_alarms))
     hour = 13
     minute = 35
     for alarm in all_alarms:
         self.assertEqual(hour, alarm.hour)
         self.assertEqual(minute, alarm.minute)
         hour += 1
         minute += 1
Exemplo n.º 8
0
    def test_reset_settings(self):
        """ Test reset settings. """
        adh = AlarmDb(self.db_name)
        success = adh.set_snooze_time(321)
        self.assertTrue(success)
        success = adh.set_offset_alert_time(123)
        self.assertTrue(success)
        self.assertEquals(adh.get_snooze_time(), 321)
        self.assertEquals(adh.get_offset_alert_time(), 123)

        success = adh.reset_settings()
        self.assertTrue(success)
        self.assertNotEquals(adh.get_snooze_time(), 321)
        self.assertNotEquals(adh.get_offset_alert_time(), 123)
Exemplo n.º 9
0
    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')
Exemplo n.º 10
0
    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')
Exemplo n.º 11
0
    def test_export_alarms_json(self):
        """
        Tests that the test_export_alarms_json creates a correct json string
        for all the 5 alarms inputted into the database.
        """
        adh = AlarmDb(self.db_name)
        self.only_five_entries(adh)
        json_str = adh.export_alarms_json()
        alarms_parsed = json.loads(json_str)

        def test_alarm(test, alarm, hour, minute, monday, tuesday, wednesday,
                       thursday, friday, saturday, sunday, enabled, label):
            test.assertEqual(alarm.hour, hour)
            test.assertEqual(alarm.minute, minute)
            test.assertEqual(alarm.monday, monday)
            test.assertEqual(alarm.tuesday, tuesday)
            test.assertEqual(alarm.wednesday, wednesday)
            test.assertEqual(alarm.thursday, thursday)
            test.assertEqual(alarm.friday, friday)
            test.assertEqual(alarm.saturday, saturday)
            test.assertEqual(alarm.sunday, sunday)
            test.assertEqual(alarm.enabled, enabled)
            test.assertEqual(alarm.label, label)

        for i in range(0, 5):
            test_alarm(self, adh.get_alarm(i+1),
                       alarms_parsed['alarms'][i]['hour'],
                       alarms_parsed['alarms'][i]['minute'],
                       alarms_parsed['alarms'][i]['monday'],
                       alarms_parsed['alarms'][i]['tuesday'],
                       alarms_parsed['alarms'][i]['wednesday'],
                       alarms_parsed['alarms'][i]['thursday'],
                       alarms_parsed['alarms'][i]['friday'],
                       alarms_parsed['alarms'][i]['saturday'],
                       alarms_parsed['alarms'][i]['sunday'],
                       alarms_parsed['alarms'][i]['enabled'],
                       alarms_parsed['alarms'][i]['label'])
Exemplo n.º 12
0
    def test_snooze_time(self):
        """ Test the accessor for the db snooze time setting. """
        adh = AlarmDb(self.db_name)
        # Valid data
        success = adh.set_snooze_time(5)
        self.assertTrue(success)
        self.assertEquals(adh.get_snooze_time(), 5)

        # Invalid data should maintain old value
        success = adh.set_snooze_time(-1)
        self.assertFalse(success)
        self.assertEquals(adh.get_snooze_time(), 5)

        success = adh.set_snooze_time(2.5)
        self.assertFalse(success)
        self.assertEquals(adh.get_snooze_time(), 5)

        success = adh.set_snooze_time('3')
        self.assertFalse(success)
        self.assertEquals(adh.get_snooze_time(), 5)
Exemplo n.º 13
0
    def test_offset_alert_time(self):
        """ Test the accessor for the db offset_alert time setting. """
        adh = AlarmDb(self.db_name)

        # Valid negative data
        success = adh.set_offset_alert_time(-1)
        self.assertTrue(success)
        self.assertEquals(adh.get_offset_alert_time(), -1)

        # Valid positive data
        success = adh.set_offset_alert_time(5)
        self.assertTrue(success)
        self.assertEquals(adh.get_offset_alert_time(), 5)

        # Invalid data should maintain old value
        success = adh.set_offset_alert_time(2.5)
        self.assertFalse(success)
        self.assertEquals(adh.get_offset_alert_time(), 5)

        success = adh.set_offset_alert_time('3')
        self.assertFalse(success)
        self.assertEquals(adh.get_offset_alert_time(), 5)
Exemplo n.º 14
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)
Exemplo n.º 15
0
 def get_snooze_time():
     """
     Static method, gets the current set snooze time interval.
     :return: Integer with the snooze time interval in minutes.
     """
     return AlarmDb().get_snooze_time()
Exemplo n.º 16
0
 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)
Exemplo n.º 17
0
 def test_entry_error(self):
     """ Tries to add an entry with an incorrect number of arguments. """
     adh = AlarmDb(self.db_name)
     self.assertRaises(TypeError, adh.add_alarm, AlarmItem(0, 0), 0)
     self.assertRaises(TypeError, adh.add_alarm)
Exemplo n.º 18
0
 def get_number_of_alarms():
     """
     Gets the number of alarms stored in the database.
     :return: Integer indicating the number of alarms in the db.
     """
     return AlarmDb().get_number_of_alarms()