def test_read_command_should_save_url_with_title(self):
     handler = MessageHandler(self.connection)
     resp = yield handler.handle('read http://www.mnot.net/cache_docs/ '
                                 'Web Caching Docs')
     urls = yield self.documents.find({'url': 'http://www.mnot.net/cache_docs/',
                                       'title': 'Web Caching Docs'})
     self.assertEqual('Saved', resp)
     self.assertEqual(1, len(urls))
    def test_read_command_should_save_new_url(self):
        handler = MessageHandler(self.connection)
        resp = yield handler.handle('read http://twistedmatrix.com/trac/wiki')
        urls = yield self.documents.find({'url': 'http://twistedmatrix.com/trac/wiki'})
        def format(d):
            return d.strftime('d/m/Y')

        self.assertEqual('Saved', resp)
        self.assertEqual(1, len(urls))
        self.assertEqual(format(urls[0]['date']), format(datetime.now()))
    def test_unread_command_shouldnt_remove_anything_if_not_found(self):
        handler = MessageHandler(self.connection)
        resp1 = yield handler.handle('read http://twistedmatrix.com/trac/wiki')
        resp2 = yield handler.handle('read http://www.mnot.net/cache_docs/ '
                                     'Web Caching Docs')
        count = yield self.documents.count()
        self.assertEqual(2, count)
        
        resp = yield handler.handle('unread nothing')
        self.assertEqual('0 documents removed', resp)

        count = yield self.documents.count()
        self.assertEqual(2, count)
    def test_unread_command_should_remove_by_url(self):
        handler = MessageHandler(self.connection)
        resp = yield handler.handle('read http://twistedmatrix.com/trac/wiki')
        self.assertEqual('Saved', resp)

        count = yield self.documents.count()
        self.assertEqual(1, count)

        resp = yield handler.handle('unread http://twistedmatrix.com/trac/wiki')
        self.assertEqual('1 document removed', resp)

        count = yield self.documents.count()
        self.assertEqual(0, count)
    def test_unread_command_should_remove_all_docs_found(self):
        handler = MessageHandler(self.connection)
        resp1 = yield handler.handle('read http://twistedmatrix.com/trac/wiki '
                                     'Good doc')
        resp2 = yield handler.handle('read http://www.mnot.net/cache_docs/ '
                                     'Good doc')
        count = yield self.documents.count()
        self.assertEqual(2, count)
        
        resp = yield handler.handle('unread Good doc')
        self.assertEqual('2 documents removed', resp)

        count = yield self.documents.count()
        self.assertEqual(0, count)
    def test_read_yesterday_show_read_commands_from_yesterday_only(self):
        handler = MessageHandler(self.connection)
        resp1 = yield handler.handle('read http://document.com/yesterday')
        resp2 = yield handler.handle('read http://document.com/today')
        resp3 = yield handler.handle('read http://document.com/few-days-later')

        yield self.documents.update({'url': 'http://document.com/yesterday'},
                                    {'$set': {'date': datetime.now()-timedelta(days=1)}})
        yield self.documents.update({'url': 'http://document.com/few-days-later'},
                                    {'$set': {'date': datetime.now()-timedelta(days=5)}})

        resp = yield handler.handle('read yesterday')

        self.assertIn("Yesterday's read documents", resp)
        self.assertIn('http://document.com/yesterday', resp)
        self.assertNotIn('http://document.com/today', resp)
        self.assertNotIn('http://document.com/few-days-later', resp)
    def test_empty_read_command_should_show_todays_read_documents(self):
        handler = MessageHandler(self.connection)
        resp1 = yield handler.handle('read http://twistedmatrix.com/trac/wiki')
        resp2 = yield handler.handle('read http://www.mnot.net/cache_docs/ '
                                     'Web Caching Docs')
        resp3 = yield handler.handle('read http://old-document.com/doesnt-appear')

        self.assertEqual(('Saved', 'Saved', 'Saved'),
                         (resp1, resp2, resp3))
        
        # third document is actually old
        yield self.documents.update({'url': 'http://old-document.com/doesnt-appear'},
                                    {'$set': {'date': datetime.now()-timedelta(days=3)}})

        resp1 = yield handler.handle('read')
        resp2 = yield handler.handle(' read  ')

        self.assertEqual(resp1, resp2)
        self.assertIn("Today's read documents", resp1)
        self.assertIn('http://twistedmatrix.com/trac/wiki', resp1)
        self.assertIn('http://www.mnot.net/cache_docs/', resp1)
        self.assertIn('Web Caching Docs', resp1)
        self.assertNotIn('http://old-document.com/doesnt-appear', resp1)
 def test_unkown_command(self):
     handler = MessageHandler(self.connection)
     resp = yield handler.handle('foo bar')
     self.assertEqual(handler.messages['unkown_command'], resp)
 def test_help_command(self):
     handler = MessageHandler(self.connection)
     resp = yield handler.handle('help')
     self.assertIn('Available commands:', resp)
     self.assertIn(' - read', resp)
     self.assertIn(' - help', resp)
 def test_empty_read_command_shows_message_when_no_documents_found(self):
     handler = MessageHandler(self.connection)
     resp = yield handler.handle('read')
     self.assertIn(u'Your read list is still empty', resp)