def initialize_state():
    """
    HACK! For use with sqlite in memory db, sqlite in memory is not thread-safe, use a different db type next time
    :return:
    """

    global report
    if not report:
        report = Directory()
        report.load_sample_data()
class TestDirectory(unittest.TestCase):
    def setUp(self):
        self.report = Directory()

    def test_load_single(self):
        self.report.load_single(',', 'Jack,Knife,Male,Pink,2000-Sep-20')
        session = self.report.get_session()
        results = session.query(Person).all()
        self.assertEqual(len(results), 1)
        p = results[0]
        self.assertEqual(p.first_name, 'Jack')
        self.assertEqual(p.last_name, 'Knife')
        self.assertEqual(p.gender, 'Male')
        self.assertEqual(p.favorite_color, 'Pink')
        self.assertEqual(p.date_of_birth, datetime.date(2000, 9, 20))

    def test_report_data(self):
        self.report.load_single(',', 'Jack,Ham,Male,Pink,2000-Sep-20')
        self.report.load_single(',', 'Jack,Knife,Male,Pink,2000-Sep-20')

        unordered_results = self.report.report_data()
        self.assertEqual(len(unordered_results), 2)
        self.assertEqual(unordered_results[0].last_name, 'Ham')
        self.assertEqual(unordered_results[1].last_name, 'Knife')

        ordered_results = self.report.report_data([('last_name', 'DESC')])
        self.assertEqual(len(ordered_results), 2)
        self.assertEqual(ordered_results[0].last_name, 'Knife')
        self.assertEqual(ordered_results[1].last_name, 'Ham')
 def setUp(self):
     self.report = Directory()
__author__ = 'dqin2'

from reports.directory import Directory

if __name__ == '__main__':
    report = Directory()
    report.load_sample_data()

    print '-------------------REPORT 1---------------------'

    for p in report.report1_data():
        print '<Person First Name="%s", Last Name="%s", Gender="%s", Favorite Color="%s", Date of Birth="%d/%d/%d"' % (
            p.first_name,
            p.last_name,
            p.gender,
            p.favorite_color,
            p.date_of_birth.month,
            p.date_of_birth.day,
            p.date_of_birth.year
        )

    print '\n-------------------REPORT 2---------------------'

    for p in report.report2_data():
        print '<Person First Name="%s", Last Name="%s", Gender="%s", Favorite Color="%s", Date of Birth="%d/%d/%d"' % (
            p.first_name,
            p.last_name,
            p.gender,
            p.favorite_color,
            p.date_of_birth.month,
            p.date_of_birth.day,