Beispiel #1
0
    def test_set_countdown(self):
        b = countdown.Countdown(db=None, config={}, dir='')
        b.db = Mock()
        b.db.delete = Mock()
        b.db.upsert = Mock()

        b.match = re.search(
            '^countdown ([0-9]{2}-[0-9]{2}-[0-9]{4}) ([ a-z]+)',
            'countdown 02-01-2017 my countdown message', re.IGNORECASE)

        b.db.find_one = Mock(return_value=None)
        b.db.find = Mock(
            return_value=[{
                'date': datetime.datetime(2017, 1, 2, 0, 0),
                'description': 'my countdown message'
            }])

        assert datetime.datetime.now() == datetime.datetime(2017, 1, 1, 11, 0)

        self.assertEqual(b.set_countdown(), '1 day until my countdown message')
        b.db.upsert.assert_called_with(
            'countdowns', {
                'date': datetime.datetime(2017, 1, 2, 0, 0),
                'description': 'my countdown message'
            })
        b.db.delete.assert_not_called()
Beispiel #2
0
    def test_routes(self):
        b = countdown.Countdown(db=None, config={}, dir='')
        act = Interaction()
        b.logging = Mock()
        b.logging.info = Mock(return_value=True)

        b.set_countdown = Mock()
        b.get_closest = Mock()
        b.get_all = Mock()

        response = b.handle(act)
        self.assertEqual(response, None)

        act.command = {'text': 'get countdowns'}
        b.handle(act)
        b.get_all.assert_called_once()

        act.command = {'text': 'get closest countdowns'}
        b.handle(act)
        b.get_closest.assert_called_once()

        act.command = {'text': 'countdown 12-05-2015 my countdown message'}
        b.handle(act)
        b.set_countdown.assert_called_once()
        self.assertEqual(b.match.group(1), '12-05-2015')
        self.assertEqual(b.match.group(2), 'my countdown message')

        b.set_countdown = Mock()
        act.command = {'text': "countdown 12-05-2015 Bob's Birthday"}
        b.handle(act)
        b.set_countdown.assert_called_once()
        self.assertEqual(b.match.group(1), '12-05-2015')
        self.assertEqual(b.match.group(2), "Bob's Birthday")
Beispiel #3
0
 def test_remove_old_countdowns(self):
     b = countdown.Countdown(db=None, config={}, dir='')
     b.db = Mock()
     b.db.delete = Mock()
     b.db.find = Mock(return_value=[
         {
             'date': datetime.datetime.now() + datetime.timedelta(days=-1),
             'description': 'my tomorrow countdown'
         },
     ])
     b.get_closest()
     b.db.delete.assert_called_once()
Beispiel #4
0
 def test_get_closest(self):
     b = countdown.Countdown(db=None, config={}, dir='')
     b.db = Mock()
     b.db.delete = Mock()
     b.db.find = Mock(return_value=[
         {
             'date': datetime.datetime.now() + datetime.timedelta(days=10),
             'description': 'my countdown'
         }, {
             'date': datetime.datetime.now() + datetime.timedelta(days=10),
             'description': 'my countdown'
         }, {
             'date': datetime.datetime.now() + datetime.timedelta(days=10),
             'description': 'my countdown'
         }
     ])
     self.assertEqual(
         b.get_closest(),
         '10 days until my countdown\n10 days until my countdown')
     b.db.delete.assert_not_called()
Beispiel #5
0
 def test_get_all(self):
     b = countdown.Countdown(db=None, config={}, dir='')
     b.db = Mock()
     b.db.find = Mock(return_value=[
         {
             'date': datetime.datetime.now(),
             'description': 'my today countdown'
         }, {
             'date': datetime.datetime.now() + datetime.timedelta(days=1),
             'description': 'my tomorrow countdown'
         }, {
             'date': datetime.datetime.now() + datetime.timedelta(days=10),
             'description': 'my next countdown'
         }
     ])
     self.assertEqual(
         b.get_all(),
         'Today is my today countdown!\n1 day until my tomorrow countdown\n10 days until my next countdown'
     )
     b.db.delete.assert_not_called()
Beispiel #6
0
 def test_get_all_none(self):
     b = countdown.Countdown(db=None, config={}, dir='')
     b.db = Mock()
     b.db.find = Mock(return_value=[])
     self.assertEqual(b.get_all(), 'You have no countdowns active')
     b.db.delete.assert_not_called()