class TestReportWriter(unittest.TestCase):
    def setUp(self):
        self.cm = ConnectionManager(default_db)
        self.cm.connect()

    def tearDown(self):
        self.cm.close()

    def test_create_workbook(self):
        writer = ReportWriter("Test Report")
        writer.build_file()
        writer.close_workbook()
        self.assertIsNotNone(writer.workbook_builder)
        self.assertTrue(os.path.isfile(writer.report_file))
        os.unlink(writer.report_file)

    def test_create_worksheet(self):
        writer = ReportWriter("Test Report 2")
        writer.build_file()
        self.assertEqual(writer.record_count, 0)
        test_query = TEST_QUERY.format(self.cm.schema)
        writer.create_worksheet_from_query(self.cm, "sheet1", sql=test_query)
        writer.close_workbook()
        self.assertTrue(writer.record_count > 0)
        self.assertTrue(writer.logger.error_buffer.empty)

    def test_invalid_sheet_name_raises_error(self):
        """Should log an error if attempt to add worksheet with invalid name"""
        writer = ReportWriter("Test Report 3")
        writer.build_file()
        test_query = TEST_QUERY.format(self.cm.schema)
        writer.create_worksheet_from_query(self.cm, "sheet/1", sql=test_query)
        writer.close_workbook()
        self.assertFalse(writer.logger.error_buffer.empty)
class TestDBLogger(unittest.TestCase):

    def setUp(self):
        self.cm = ConnectionManager(default_db)
        self.cm.connect()

    def tearDown(self):
        self.cm.close()

    def test_create_and_finalize(self):
        db_logger = DatabaseLogger(cm=self.cm, report_name="TestDBLogger")
        db_logger.create_record()
        self.assertIsInstance(db_logger.report_log.primary_key, int)
        self.assertTrue(db_logger.report_log.inserted)
        self.assertFalse(db_logger.report_log.updated)
        db_logger.finalize_record()
        self.assertTrue(db_logger.report_log.updated)

    def test_log_recipients(self):
        test_recipients = ["*****@*****.**", "*****@*****.**"]
        db_logger = DatabaseLogger(cm=self.cm, report_name="TestDBLogger")
        db_logger.create_record()
        db_logger.finalize_record(test_recipients)
        sql = f"select recipients from {self.cm.schema}.report_logs where id = {db_logger.report_log.primary_key}"
        with QueryExecutor(default_db) as qe:
            result = qe.execute_query(sql=sql)
        self.assertEqual(result.result_data[0]['recipients'], "; ".join(test_recipients))
class TestReportActiveChecker(unittest.TestCase):

    def setUp(self):
        self.cm = ConnectionManager(default_db)
        self.cm.connect()

    def tearDown(self):
        self.cm.close()

    def test_active(self):
        active_checker = ReportActiveChecker(self.cm, 'test_report_active')
        inactive_checker = ReportActiveChecker(self.cm, 'test_report_inactive')
        self.assertTrue(active_checker)
        self.assertFalse(inactive_checker)
Beispiel #4
0
def setup_test_db():
    db = config['Default']['database']
    if config[db]['rdbms'] == 'sqlite':
        cm = ConnectionManager(db)
        cm.connect()
        metadata.create_all(cm.engine)
        test_metadata.create_all(cm.engine)
        create_fixtures(cm)
        cm.close()
    if config[db]['rdbms'] == 'mysql':
        with ConnectionManager(db) as cm:
            metadata.create_all(cm.engine)
            test_metadata.create_all(cm.engine)
            create_fixtures(cm)
class TestRecipientsChecker(unittest.TestCase):

    def setUp(self):
        self.cm = ConnectionManager(default_db)
        self.cm.connect()

    def tearDown(self):
        self.cm.close()

    def test_get_recipients(self):
        checker = RecipientsChecker(cm=self.cm, report_name='test_report_active')
        checker.assertFalse(checker.to_recipients)
        checker.assertFalse(checker.cc_recipients)
        checker.get_recipients()
        checker.assertTrue(checker.to_recipients)
        checker.assertTrue(checker.cc_recipients)