from datetime import date
from formencode import Invalid
+from webhelpers.html.secure_form import token_key
+
from bluechips.tests import *
from bluechips import model
assert shares[4] == Currency('12.34')
- def test_edit(self):
+ def test_edit_and_delete(self):
user = meta.Session.query(model.User).\
filter_by(name=u'Charlie Root').one()
e = model.Expenditure(user, 53812, u'Lemon bundt cake', None)
order_by(model.Expenditure.id.desc()).first()
assert e.description == u'Updated bundt cake'
+ response = self.app.get(url_for(controller='spend',
+ action='delete',
+ id=e.id))
+ response = response.form.submit('delete').follow()
+ response.mustcontain('Expenditure', 'deleted')
+
+ def test_delete_nonexistent(self):
+ self.app.get(url_for(controller='spend',
+ action='delete',
+ id=124344),
+ status=404)
+
+ def test_destroy_nonexistent(self):
+ response = self.app.get(url_for(controller='spend',
+ action='edit'))
+ params = self.sample_params.copy()
+ params[token_key] = response.form[token_key].value
+ self.app.post(url_for(controller='spend',
+ action='destroy',
+ id=124344),
+ params=params,
+ status=404)
+
+ def test_delete_xsrf_protection(self):
+ self.app.post(url_for(controller='spend',
+ action='destroy',
+ id=1),
+ params={'delete': 'Delete'},
+ status=403)
+
+ def test_edit_zero_value(self):
+ user = meta.Session.query(model.User).\
+ filter_by(name=u'Charlie Root').one()
+ e = model.Expenditure(user, 0, u'A zero value expenditure', None)
+ e.even_split()
+ meta.Session.add(e)
+ meta.Session.commit()
+
+ response = self.app.get(url_for(controller='spend',
+ action='edit',
+ id=e.id))
+ response.mustcontain('Edit an Expenditure')
+ form = response.form
+
+ assert int(form['spender_id'].value) == user.id
+ assert form['amount'].value == '0.00'
+ assert form['date'].value == date.today().strftime('%m/%d/%Y')
+ assert form['description'].value == u'A zero value expenditure'
+ for ii in range(4):
+ assert form['shares-%d.amount' % ii].value == '0'
+
def test_edit_nonexistent(self):
response = self.app.get(url_for(controller='spend',
action='edit',
id=124234), status=404)
def test_update_nonexistent(self):
- response = self.app.post(url_for(controller='spend',
- action='update',
- id=14234),
- params=self.sample_post,
- status=404)
+ response = self.app.get(url_for(controller='spend',
+ action='edit'))
+ params = self.sample_params.copy()
+ params[token_key] = response.form[token_key].value
+ self.app.post(url_for(controller='spend',
+ action='update',
+ id=14234),
+ params=params,
+ status=404)
+
+ def test_xsrf_protection(self):
+ self.app.post(url_for(controller='spend',
+ action='update'),
+ params=self.sample_params,
+ status=403)
def test_all_zero_shares_fails(self):
- params = self.sample_post.copy()
+ params = self.sample_params.copy()
for ii in range(4):
params['shares-%d.amount' % ii] = '0'
v = ExpenditureSchema()
pass
def setUp(self):
- self.sample_post = {
+ self.sample_params = {
'spender_id': '1',
'amount': '44.12',
'date': '10/5/2008',