1 from datetime import date
2 from decimal import Decimal
4 from webhelpers.html.secure_form import token_key
6 from bluechips.tests import *
7 from bluechips import model
8 from bluechips.model import meta
10 class TestTransferController(TestController):
13 response = self.app.get(url_for(controller='transfer'))
15 response.mustcontain('Add a New Transfer')
18 user_rich = meta.Session.query(model.User).\
19 filter_by(name=u'Rich Scheme').one()
20 user_ben = meta.Session.query(model.User).\
21 filter_by(name=u'Ben Bitdiddle').one()
23 form['debtor_id'] = user_rich.id
24 form['creditor_id'] = user_ben.id
25 form['amount'] = '123.45'
26 # Make sure date is today.
28 assert form['date'].value == today.strftime('%m/%d/%Y')
29 form['description'] = 'A test transfer from Rich to Ben'
31 response = form.submit()
32 response = response.follow()
33 response.mustcontain('Transfer', 'created.')
35 t = meta.Session.query(model.Transfer).\
36 order_by(model.Transfer.id.desc()).first()
37 assert t.debtor.name == u'Rich Scheme'
38 assert t.creditor.name == u'Ben Bitdiddle'
39 assert t.amount == 12345
40 assert t.date == today
41 assert t.description == u'A test transfer from Rich to Ben'
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'
53 response = self.app.get(url_for(controller='transfer',
56 response.mustcontain('Edit a Transfer')
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
65 form['description'] = u'A new description'
67 response = form.submit()
68 response = response.follow()
69 response.mustcontain('Transfer', 'updated.')
71 t = meta.Session.query(model.Transfer).\
72 order_by(model.Transfer.id.desc()).first()
73 assert t.description == u'A new description'
75 def test_edit_nonexistent(self):
76 response = self.app.get(url_for(controller='transfer',
78 id=21424), status=404)
80 def test_update_nonexistent(self):
81 response = self.app.get(url_for(controller='transfer',
83 params = self.sample_params.copy()
84 params[token_key] = response.form[token_key].value
85 self.app.post(url_for(controller='transfer',
91 def test_xsrf_protection(self):
92 self.app.post(url_for(controller='transfer',
94 params=self.sample_params,
98 def test_update_get_redirects(self):
99 response = self.app.get(url_for(controller='transfer',
102 assert (dict(response.headers)['location'] ==
103 url_for(controller='transfer', action='edit', qualified=True))
106 self.sample_params = {
111 'description': 'Example transfer params.'}
114 transfers = meta.Session.query(model.Transfer).all()
116 meta.Session.delete(t)
117 meta.Session.commit()