]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/tests/functional/test_transfer.py
fix tests and make them more resilient
[bluechips.git] / bluechips / tests / functional / test_transfer.py
index 773cfdd788e6c7d3d1dbe61020caf1cc4f5ed492..d9032a45401e83dc107d582b87e1f3349d81bdbd 100644 (file)
@@ -1,7 +1,77 @@
+from datetime import date
+from decimal import Decimal
 from bluechips.tests import *
 
+from bluechips import model
+from bluechips.model import meta
+
 class TestTransferController(TestController):
 
     def test_index(self):
         response = self.app.get(url_for(controller='transfer'))
         # Test response...
+        response.mustcontain('Add a New Transfer')
+        form = response.form
+
+        user_rich = meta.Session.query(model.User).\
+                filter_by(name=u'Rich Scheme').one()
+        user_ben = meta.Session.query(model.User).\
+                filter_by(name=u'Ben Bitdiddle').one()
+
+        form['debtor_id'] = user_rich.id
+        form['creditor_id'] = user_ben.id
+        form['amount'] = '123.45'
+        # Make sure date is today.
+        today = date.today()
+        assert form['date'].value == today.strftime('%m/%d/%Y')
+        form['description'] = 'A test transfer from Rich to Ben'
+
+        response = form.submit()
+        response = response.follow()
+        response.mustcontain('Transfer', 'created.')
+
+        t = meta.Session.query(model.Transfer).\
+                order_by(model.Transfer.id.desc()).first()
+        assert t.debtor.name == u'Rich Scheme'
+        assert t.creditor.name == u'Ben Bitdiddle'
+        assert t.amount == 12345
+        assert t.date == today
+        assert t.description == u'A test transfer from Rich to Ben'
+
+    def test_edit(self):
+        user_rich = meta.Session.query(model.User).\
+                filter_by(name=u'Rich Scheme').one()
+        user_ben = meta.Session.query(model.User).\
+                filter_by(name=u'Ben Bitdiddle').one()
+        t = model.Transfer(user_rich, user_ben, 12345)
+        t.description = u'Test transfer'
+        meta.Session.add(t)
+        meta.Session.commit()
+
+        response = self.app.get(url_for(controller='transfer',
+                                        action='edit',
+                                        id=t.id))
+        response.mustcontain('Edit a Transfer')
+        form = response.form
+
+        assert int(form['debtor_id'].value) == t.debtor_id
+        assert int(form['creditor_id'].value) == t.creditor_id
+        assert Decimal(form['amount'].value) * 100 == t.amount
+        assert form['date'].value == t.date.strftime('%m/%d/%Y')
+        assert form['description'].value == t.description
+
+        form['description'] = u'A new description'
+
+        response = form.submit()
+        response = response.follow()
+        response.mustcontain('Transfer', 'updated.')
+
+        t = meta.Session.query(model.Transfer).\
+                order_by(model.Transfer.id.desc()).first()
+        assert t.description == u'A new description'
+
+    def tearDown(self):
+        transfers = meta.Session.query(model.Transfer).all()
+        for t in transfers:
+            meta.Session.delete(t)
+        meta.Session.commit()