]> asedeno.scripts.mit.edu Git - bluechips.git/blob - bluechips/tests/functional/test_spend.py
a few more tests
[bluechips.git] / bluechips / tests / functional / test_spend.py
1 from datetime import date
2 from bluechips.tests import *
3
4 from bluechips import model
5 from bluechips.model import meta
6
7 class TestSpendController(TestController):
8
9     def test_index(self):
10         response = self.app.get(url_for(controller='spend'))
11         # Test response...
12         response.mustcontain('Add a New Expenditure')
13         form = response.form
14
15         user = meta.Session.query(model.User).\
16                 filter_by(name=u'Charlie Root').one()
17         
18         form['spender_id'] = user.id
19         form['amount'] = '66.78'
20         # Make sure date is today.
21         today = date.today()
22         assert form['date'].value == today.strftime('%m/%d/%Y')
23         form['description'] = 'A test expenditure'
24         form['shares-0.amount'] = '1'
25         form['shares-1.amount'] = '2'
26         form['shares-2.amount'] = '3'
27         form['shares-3.amount'] = '4'
28
29         response = form.submit()
30         response = response.follow()
31         response.mustcontain('Expenditure', 'created.')
32
33         e = meta.Session.query(model.Expenditure).\
34                 order_by(model.Expenditure.id.desc()).first()
35         assert e.spender.name == u'Charlie Root'
36         assert e.amount == 6678
37         assert e.date == today
38         assert e.description == u'A test expenditure'
39
40         # Test the split.
41
42
43     def test_edit(self):
44         user = meta.Session.query(model.User).\
45                 filter_by(name=u'Charlie Root').one()
46         e = model.Expenditure(user, 53812, u'Lemon bundt cake', None)
47         e.even_split()
48         meta.Session.add(e)
49         meta.Session.commit()
50
51         response = self.app.get(url_for(controller='spend',
52                                         action='edit',
53                                         id=e.id))
54         response.mustcontain('Edit an Expenditure')
55         form = response.form
56
57         assert int(form['spender_id'].value) == user.id
58         assert form['amount'].value == '538.12'
59         assert form['date'].value == date.today().strftime('%m/%d/%Y')
60         assert form['description'].value == u'Lemon bundt cake'
61
62         form['description'] = u'Updated bundt cake'
63
64         # Update the split too.
65
66         response = form.submit()
67         response = response.follow()
68         response.mustcontain('Expenditure', 'updated.')
69
70         e = meta.Session.query(model.Expenditure).\
71                 order_by(model.Expenditure.id.desc()).first()
72         assert e.description == u'Updated bundt cake'
73
74     def test_edit_nonexistent(self):
75         response = self.app.get(url_for(controller='spend',
76                                         action='edit',
77                                         id=124234), status=404)
78
79     def tearDown(self):
80         expenditures = meta.Session.query(model.Expenditure).all()
81         for e in expenditures:
82             meta.Session.delete(e)
83         meta.Session.commit()