Exemple #1
0
    def test_database(self):
        '''It should insert and get facts'''

        database = Database(self.temp_dir + '/test.db')

        self.assertFalse(database.get_last_timestamp())

        database.insert_fact(u'kittens')
        database.insert_fact(u'hi')
        database.insert_fact(u'hello')
        facts = database.get_facts()

        self.assertTrue(facts)
        self.assertEqual(facts[0][1], u'hello')
        self.assertEqual(facts[1][1], u'hi')
        self.assertEqual(facts[2][1], u'kittens')

        self.assertAlmostEqual(database.get_last_timestamp(), time.time(),
            delta=2.0)
        self.assertGreaterEqual(facts[0][0], facts[1][0])
Exemple #2
0
class TestPostScheduler(unittest.TestCase):
    def setUp(self):
        self.temp_dir = tempfile.mkdtemp()
        self.db = Database(self.temp_dir + '/test.db')

    def tearDown(self):
        shutil.rmtree(self.temp_dir)

    def test_post(self):
        event = threading.Event()
        api_service = MockAPIService()
        fact_builder = FactBuilder()

        api_service.texts = []
        api_service.tested_error = False

        def post_message(text):
            if len(api_service.texts) == 1 and not api_service.tested_error:
                api_service.tested_error = True
                raise Exception('testing')

            api_service.texts.append(text)

            if len(api_service.texts) > 4:
                event.set()
                post_sched.stop()

        api_service.post_message = post_message

        post_sched = PostScheduler(fact_builder, self.db, api_service,
            interval=0.2, deviation=0.01, retry_delay=0.1)

        event.wait(timeout=5)
        post_sched.stop()
        post_sched.join(timeout=1)

        self.assertEqual(len(api_service.texts), 5)
        self.assertEqual(len(self.db.get_facts()), 5)