[billreminder: 3/17] Added some basic tests.
- From: Og B. Maciel <ogmaciel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [billreminder: 3/17] Added some basic tests.
- Date: Thu, 24 Feb 2011 01:55:38 +0000 (UTC)
commit 02109c90a802b07dca950b54e6da6f76270e17ae
Author: Luiz Armesto <luiz armesto gmail com>
Date: Mon Aug 16 00:37:06 2010 -0300
Added some basic tests.
src/tests/dal_test.py | 132 ++++++++++++++++++++++++++++++++++++++++++++++++
src/tests/db_test.py | 112 ++++++++++++++++++++++++++++++++++++++++
src/tests/run_tests.py | 38 ++++++++++++++
3 files changed, 282 insertions(+), 0 deletions(-)
---
diff --git a/src/tests/dal_test.py b/src/tests/dal_test.py
new file mode 100644
index 0000000..cad615a
--- /dev/null
+++ b/src/tests/dal_test.py
@@ -0,0 +1,132 @@
+import unittest
+import sys
+import os
+
+from decimal import Decimal
+
+sys.path += [os.path.abspath('..')]
+
+from lib import dal
+
+class DALTest(unittest.TestCase):
+ def setUp(self):
+ from datetime import date
+ from datetime import datetime
+
+ self.dal = dal.DAL(fake=True)
+
+ self.today = date.today()
+ self.today_t = datetime.today()
+
+ def test_add_category(self):
+ category_orig = dal.Category('Groceries', 'c0c0c0')
+
+ # Add category using DAL
+ category_orig_id = self.dal.add(category_orig)
+
+ session = self.dal.Session()
+ category = session.query(dal.Category).filter(dal.Category.name=='Groceries').first()
+
+ self.assertEqual(category.name, 'Groceries')
+ self.assertEqual(category.color, 'c0c0c0')
+ self.assertEqual(category.id, category_orig_id)
+
+ session.close()
+
+ def test_add_category_twice(self):
+ category_orig_A = dal.Category('Groceries', 'c0c0c0')
+ category_orig_A_id = self.dal.add(category_orig_A)
+
+ category_orig_B = dal.Category('Groceries', 'c0c0c0')
+ category_orig_B_id = self.dal.add(category_orig_A)
+
+ self.assertEqual(category_orig_A_id, category_orig_B_id)
+
+ session = self.dal.Session()
+ self.assertEqual(session.query(dal.Category).filter(dal.Category.name=='Groceries').count(), 1)
+ session.close()
+
+ def test_add_simple_bill(self):
+ bills_orig = dict()
+ bills = dict()
+
+ # Create a simple bill
+ bills_orig['Harris Teeter'] = dal.Bill('Harris Teeter', Decimal('123.94'), self.today)
+
+ # Add bill using DAL
+ self.dal.add(bills_orig['Harris Teeter'])
+
+ session = self.dal.Session()
+ bills['Harris Teeter'] = session.query(dal.Bill).filter(dal.Bill.payee=='Harris Teeter').first()
+
+ self.assertEqual(bills['Harris Teeter'].payee, 'Harris Teeter')
+ self.assertEqual(bills['Harris Teeter'].amount, Decimal('123.94'))
+ self.assertEqual(bills['Harris Teeter'].dueDate, self.today)
+ self.assertEqual(bills['Harris Teeter'].alarmDate, None)
+ self.assertEqual(bills['Harris Teeter'].notes, None)
+ self.assertFalse(bills['Harris Teeter'].paid)
+ self.assertEqual(bills['Harris Teeter'].repeats, None)
+ self.assertEqual(bills['Harris Teeter'].category, None)
+
+ session.close()
+
+ def test_add_bill_with_category(self):
+ bills_orig = dict()
+ bills = dict()
+
+ category_orig = dal.Category('Groceries', 'c0c0c0')
+
+ # Add category using DAL
+ category_orig_id = self.dal.add(category_orig)
+
+ session = self.dal.Session()
+ category = session.query(dal.Category).filter(dal.Category.name=='Groceries').first()
+
+ # Create a simple bill
+ bills_orig['Harris Teeter'] = dal.Bill('Harris Teeter', Decimal('123.94'), self.today, category=dal.Category('Groceries', 'c0c0c0'))
+
+ session.close()
+
+ # Add bill using DAL
+ self.assertEqual(self.dal.add(bills_orig['Harris Teeter']), 1)
+
+ session = self.dal.Session()
+ category = session.query(dal.Category).filter(dal.Category.name=='Groceries').first()
+ bills['Harris Teeter'] = session.query(dal.Bill).filter(dal.Bill.payee=='Harris Teeter').first()
+
+ self.assertEqual(bills['Harris Teeter'].payee, 'Harris Teeter')
+ self.assertEqual(bills['Harris Teeter'].amount, Decimal('123.94'))
+ self.assertEqual(bills['Harris Teeter'].dueDate, self.today)
+ self.assertEqual(bills['Harris Teeter'].alarmDate, None)
+ self.assertEqual(bills['Harris Teeter'].notes, None)
+ self.assertFalse(bills['Harris Teeter'].paid)
+ self.assertEqual(bills['Harris Teeter'].repeats, None)
+ self.assertEqual(bills['Harris Teeter'].category.id, category_orig_id)
+
+ session.close()
+
+ def test_add_bill_with_new_category(self):
+ bills_orig = dict()
+ bills = dict()
+ category_orig = dal.Category('Nothing', 'c0c0c0')
+
+ # Create a simple bill
+ bills_orig['Harris Teeter'] = dal.Bill('Harris Teeter', Decimal('123.94'), self.today, category=category_orig)
+
+ # Add bill using DAL
+ self.dal.add(bills_orig['Harris Teeter'])
+ session = self.dal.Session()
+
+ bills['Harris Teeter'] = session.query(dal.Bill).filter(dal.Bill.payee=='Harris Teeter').first()
+
+ self.assertEqual(bills['Harris Teeter'].payee, 'Harris Teeter')
+ self.assertEqual(bills['Harris Teeter'].amount, Decimal('123.94'))
+ self.assertEqual(bills['Harris Teeter'].dueDate, self.today)
+ self.assertEqual(bills['Harris Teeter'].alarmDate, None)
+ self.assertEqual(bills['Harris Teeter'].notes, None)
+ self.assertFalse(bills['Harris Teeter'].paid)
+ self.assertEqual(bills['Harris Teeter'].repeats, None)
+ self.assertEqual(bills['Harris Teeter'].category.id, 1)
+
+ session.close()
+
diff --git a/src/tests/db_test.py b/src/tests/db_test.py
new file mode 100644
index 0000000..f463cb8
--- /dev/null
+++ b/src/tests/db_test.py
@@ -0,0 +1,112 @@
+import unittest
+import sys
+import os
+
+from decimal import Decimal
+
+sys.path += [os.path.abspath('..')]
+
+from db import entities
+
+class EntitiesTest(unittest.TestCase):
+ def setUp(self):
+ from sqlalchemy.orm import sessionmaker
+ from sqlalchemy import create_engine
+ from sqlalchemy.orm import sessionmaker
+ from datetime import date
+ from datetime import datetime
+
+ # Create a temporary database
+ self.engine = create_engine('sqlite:///:memory:', echo=False)
+ self.Session = sessionmaker(bind=self.engine)
+
+ # Creates all database tables
+ entities.Bill.metadata.create_all(self.engine)
+ entities.Category.metadata.create_all(self.engine)
+
+ self.today = date.today()
+ self.today_t = datetime.today()
+
+ def test_create_a_new_category(self):
+ category_orig = entities.Category('Groceries', 'c0c0c0')
+
+ session = self.Session()
+ session.add(category_orig)
+ session.commit()
+
+ category = session.query(entities.Category).filter(entities.Category.name=='Groceries').first()
+
+ self.assertEqual(category.name, 'Groceries')
+ self.assertEqual(category.color, 'c0c0c0')
+
+ session.close()
+
+ def test_create_a_new_bill(self):
+ bills_orig = dict()
+ bills = dict()
+
+ # Create a simple bill
+ bills_orig['Harris Teeter'] = entities.Bill('Harris Teeter', 123.94, self.today)
+
+ session = self.Session()
+ session.add(bills_orig['Harris Teeter'])
+ session.commit()
+
+ bills['Harris Teeter'] = session.query(entities.Bill).filter(entities.Bill.payee=='Harris Teeter').first()
+
+ self.assertEqual(bills['Harris Teeter'].payee, 'Harris Teeter')
+ self.assertEqual(bills['Harris Teeter'].amount, Decimal('123.94'))
+ self.assertEqual(bills['Harris Teeter'].dueDate, self.today)
+ self.assertEqual(bills['Harris Teeter'].alarmDate, None)
+ self.assertEqual(bills['Harris Teeter'].notes, None)
+ self.assertFalse(bills['Harris Teeter'].paid)
+ self.assertEqual(bills['Harris Teeter'].repeats, None)
+ self.assertEqual(bills['Harris Teeter'].category, None)
+
+ # Create a complete bill
+ bills_orig['Toyota'] = entities.Bill('Toyota', 3900.00, self.today, self.today_t, 'My new car', True, True)
+
+ session = self.Session()
+ session.add(bills_orig['Toyota'])
+ session.commit()
+
+ bills['Toyota'] = session.query(entities.Bill).filter(entities.Bill.payee=='Toyota').first()
+
+ self.assertEqual(bills['Toyota'].payee, 'Toyota')
+ self.assertEqual(bills['Toyota'].amount, Decimal('3900.00'))
+ self.assertEqual(bills['Toyota'].dueDate, self.today)
+ self.assertEqual(bills['Toyota'].alarmDate, self.today_t)
+ self.assertEqual(bills['Toyota'].notes, 'My new car')
+ self.assertTrue(bills['Toyota'].paid)
+ self.assertTrue(bills['Toyota'].repeats)
+ self.assertEqual(bills['Toyota'].category, None)
+
+ session.close()
+
+ def test_add_category_to_bill(self):
+ categories = dict()
+ bills = dict()
+
+ # Create bills and category to be tested
+ bills['Harris Teeter'] = entities.Bill('Harris Teeter', 123.94, self.today)
+ bills['Toyota'] = entities.Bill('Toyota', 3900.00, self.today, self.today, 'My new car', True, True)
+ categories['Miscellaneous'] = entities.Category('Miscellaneous', 'c0c0c0')
+
+ # Verify that there is no relations between bills and category yet
+ self.assertEqual(categories['Miscellaneous'].bills, [])
+ self.assertEqual(bills['Harris Teeter'].category, None)
+ self.assertEqual(bills['Toyota'].category, None)
+
+ # Set cotegory for one bill
+ bills['Harris Teeter'].category = categories['Miscellaneous']
+ self.assertEqual(categories['Miscellaneous'].bills, [bills['Harris Teeter']])
+ self.assertEqual(bills['Harris Teeter'].category, categories['Miscellaneous'])
+
+ # Verify that the other bill remains with no category
+ self.assertEqual(bills['Toyota'].category, None)
+
+ # Append the other bill to the category using another method
+ categories['Miscellaneous'].bills.append(bills['Toyota'])
+ self.assertEqual(categories['Miscellaneous'].bills, [bills['Harris Teeter'], bills['Toyota']])
+ self.assertEqual(bills['Toyota'].category, categories['Miscellaneous'])
+
diff --git a/src/tests/run_tests.py b/src/tests/run_tests.py
new file mode 100644
index 0000000..2c20ea9
--- /dev/null
+++ b/src/tests/run_tests.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import unittest
+
+IGNORE_FILES = ['run_tests.py',]
+
+suite = unittest.TestSuite()
+debug = True
+
+try:
+ descriptions = sys.argv[1]
+ verbosity = sys.argv[1]
+except IndexError:
+ descriptions = 2
+ verbosity = 2
+
+try:
+ if sys.argv[2] == '1':
+ debug = True
+except IndexError:
+ pass
+
+for file in os.listdir(os.path.abspath('.')):
+ if file in IGNORE_FILES:
+ continue
+ if file[-3:] != '.py':
+ continue
+ if debug:
+ print 'Found test : %s' % file[:-3]
+ suite.addTest(unittest.defaultTestLoader.loadTestsFromName(file[:-3]))
+
+test_runner = unittest.TextTestRunner(descriptions=descriptions, verbosity=verbosity)
+result = test_runner.run(suite)
+if result.failures or result.errors:
+ sys.exit(1)
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]