]> asedeno.scripts.mit.edu Git - bluechips.git/blob - bluechips/tests/functional/test_transfer.py
b38f71cc65d96a4c6c532c7c2c646801d34d9fd0
[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', 'created.')
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
41     def test_edit(self):
42         user_rich = meta.Session.query(model.User).\
43                 filter_by(name=u'Rich Scheme').one()
44         user_ben = meta.Session.query(model.User).\
45                 filter_by(name=u'Ben Bitdiddle').one()
46         t = model.Transfer(user_rich, user_ben, 12345)
47         t.description = u'Test transfer'
48         meta.Session.add(t)
49         meta.Session.commit()
50
51         response = self.app.get(url_for(controller='transfer',
52                                         action='edit',
53                                         id=t.id))
54         response.mustcontain('Edit a Transfer')
55         form = response.form
56
57         assert int(form['debtor_id'].value) == t.debtor_id
58         assert int(form['creditor_id'].value) == t.creditor_id
59         assert Decimal(form['amount'].value) * 100 == t.amount
60         assert form['date'].value == t.date.strftime('%m/%d/%Y')
61         assert form['description'].value == t.description
62
63         form['description'] = u'A new description'
64
65         response = form.submit()
66         response = response.follow()
67         response.mustcontain('Transfer', 'updated.')
68
69         t = meta.Session.query(model.Transfer).\
70                 order_by(model.Transfer.id.desc()).first()
71         assert t.description == u'A new description'
72
73     def test_edit_nonexistent(self):
74         response = self.app.get(url_for(controller='transfer',
75                                         action='edit',
76                                         id=21424), status=404)
77
78     def tearDown(self):
79         transfers = meta.Session.query(model.Transfer).all()
80         for t in transfers:
81             meta.Session.delete(t)
82         meta.Session.commit()