]> asedeno.scripts.mit.edu Git - bluechips.git/blob - bluechips/tests/functional/test_transfer.py
fleshed out functional tests more
[bluechips.git] / bluechips / tests / functional / test_transfer.py
1 from datetime import date
2 from decimal import Decimal
3 from bluechips.tests import *
4
5 from bluechips import model
6 from bluechips.model import meta
7
8 class TestTransferController(TestController):
9
10     def test_index(self):
11         response = self.app.get(url_for(controller='transfer'))
12         # Test response...
13         response.mustcontain('Add a New Transfer')
14         form = response.form
15
16         user_rich = meta.Session.query(model.User).\
17                 filter_by(name=u'Rich Scheme').one()
18         user_ben = meta.Session.query(model.User).\
19                 filter_by(name=u'Ben Bitdiddle').one()
20
21         form['debtor_id'] = user_rich.id
22         form['creditor_id'] = user_ben.id
23         form['amount'] = '123.45'
24         # Make sure date is today.
25         today = date.today()
26         assert form['date'].value == today.strftime('%m/%d/%Y')
27         form['description'] = 'A test transfer from Rich to Ben'
28
29         response = form.submit()
30         response = response.follow()
31         response.mustcontain('Transfer updated.')
32
33         t = meta.Session.query(model.Transfer).\
34                 order_by(model.Transfer.id.desc()).first()
35         assert t.debtor.name == u'Rich Scheme'
36         assert t.creditor.name == u'Ben Bitdiddle'
37         assert t.amount == 12345
38         assert t.date == today
39         assert t.description == u'A test transfer from Rich to Ben'
40         meta.Session.delete(t)
41         meta.Session.commit()
42
43     def test_edit(self):
44         user_rich = meta.Session.query(model.User).\
45                 filter_by(name=u'Rich Scheme').one()
46         user_ben = meta.Session.query(model.User).\
47                 filter_by(name=u'Ben Bitdiddle').one()
48         t = model.Transfer(user_rich, user_ben, 12345)
49         t.description = u'Test transfer'
50         meta.Session.add(t)
51         meta.Session.commit()
52
53         response = self.app.get(url_for(controller='transfer',
54                                         action='edit',
55                                         id=t.id))
56         response.mustcontain('Edit a Transfer')
57         form = response.form
58
59         assert int(form['debtor_id'].value) == t.debtor_id
60         assert int(form['creditor_id'].value) == t.creditor_id
61         assert Decimal(form['amount'].value) * 100 == t.amount
62         assert form['date'].value == t.date.strftime('%m/%d/%Y')
63         assert form['description'].value == t.description
64
65         form['description'] = u'A new description'
66
67         response = form.submit()
68         response = response.follow()
69         response.mustcontain('Transfer updated.')
70
71         t = meta.Session.query(model.Transfer).\
72                 order_by(model.Transfer.id.desc()).first()
73         assert t.description == u'A new description'
74         meta.Session.delete(t)
75         meta.Session.commit()