def test_do_reminder_simple(self, db):
        db.reminders.find_one.return_value = self.rec
        reminders._do_reminder(1, self.client)

        assert 1 not in reminders._scheduled
        db.reminders.remove.assert_called_with(1)
        self.client.msg.assert_called_with('#bots', 'some message')
 def test_handles_unicode(self, db):
     client = Mock()
     snowman = u'☃'
     reminder = {
         'channel': snowman,
         'message': snowman,
     }
     db.reminders.find_one.return_value = reminder
     reminders._do_reminder(1, client)
     client.msg.assert_called_with(snowman, snowman)
    def test_do_reminder_reschedules_next_week(self, reactor, db):
        self.rec['when'] = datetime.datetime(day=13, month=12, year=2013)
        self.rec['repeat'] = [0, 2, 4]  # M, W, F
        db.reminders.find_one.return_value = self.rec

        with freeze_time(self.rec['when']):
            reminders._do_reminder(1, self.client)

        rec_upd = self.rec.copy()
        rec_upd['when'] = datetime.datetime(day=16, month=12, year=2013)

        db.reminders.save.assert_called_with(rec_upd)
        reactor.callLater.assert_called_with(72 * 3600, reminders._do_reminder,
                                             1, self.client)
 def test_scheduled_discarded_with_no_record(self, db, scheduled):
     db.reminders.find_one.return_value = None
     reminders._do_reminder(1, Mock())
     scheduled.discard.assert_called_with(1)