+from datetime import date
from bluechips.tests import *
+from bluechips import model
+from bluechips.model import meta
+
class TestSpendController(TestController):
def test_index(self):
response = self.app.get(url_for(controller='spend'))
# Test response...
+ response.mustcontain('Add a New Expenditure')
+ form = response.form
+
+ user = meta.Session.query(model.User).\
+ filter_by(name=u'Charlie Root').one()
+
+ form['spender_id'] = user.id
+ form['amount'] = '66.78'
+ # Make sure date is today.
+ today = date.today()
+ assert form['date'].value == today.strftime('%m/%d/%Y')
+ form['description'] = 'A test expenditure'
+ form['shares-0.amount'] = '1'
+ form['shares-1.amount'] = '2'
+ form['shares-2.amount'] = '3'
+ form['shares-3.amount'] = '4'
+
+ response = form.submit()
+ response = response.follow()
+ response.mustcontain('Expenditure updated.')
+
+ e = meta.Session.query(model.Expenditure).\
+ order_by(model.Expenditure.id.desc()).first()
+ assert e.spender.name == u'Charlie Root'
+ assert e.amount == 6678
+ assert e.date == today
+ assert e.description == u'A test expenditure'
+ meta.Session.delete(e)
+ meta.Session.commit()
+
+ # Test the split.
+
+
+ def test_edit(self):
+ user = meta.Session.query(model.User).\
+ filter_by(name=u'Charlie Root').one()
+ e = model.Expenditure(user, 53812, u'Lemon bundt cake', 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 == '538.12'
+ assert form['date'].value == date.today().strftime('%m/%d/%Y')
+ assert form['description'].value == u'Lemon bundt cake'
+
+ form['description'] = u'Updated bundt cake'
+
+ # Update the split too.
+
+ response = form.submit()
+ response = response.follow()
+ response.mustcontain('Expenditure updated.')
+
+ e = meta.Session.query(model.Expenditure).\
+ order_by(model.Expenditure.id.desc()).first()
+ assert e.description == u'Updated bundt cake'
+ meta.Session.delete(e)
+ meta.Session.commit()
response = response.follow()
response.mustcontain('Transfer updated.')
- transfer = meta.Session.query(model.Transfer).\
+ t = meta.Session.query(model.Transfer).\
order_by(model.Transfer.id.desc()).first()
- assert transfer.debtor.name == u'Rich Scheme'
- assert transfer.creditor.name == u'Ben Bitdiddle'
- assert transfer.amount == 12345
- assert transfer.date == today
- assert transfer.description == u'A test transfer from Rich to Ben'
+ assert t.debtor.name == u'Rich Scheme'
+ assert t.creditor.name == u'Ben Bitdiddle'
+ assert t.amount == 12345
+ assert t.date == today
+ assert t.description == u'A test transfer from Rich to Ben'
+ meta.Session.delete(t)
+ meta.Session.commit()
def test_edit(self):
user_rich = meta.Session.query(model.User).\
filter_by(name=u'Rich Scheme').one()
user_ben = meta.Session.query(model.User).\
filter_by(name=u'Ben Bitdiddle').one()
- transfer = model.Transfer(user_rich, user_ben, 12345)
- transfer.description = u'Test transfer'
- meta.Session.add(transfer)
+ t = model.Transfer(user_rich, user_ben, 12345)
+ t.description = u'Test transfer'
+ meta.Session.add(t)
meta.Session.commit()
response = self.app.get(url_for(controller='transfer',
action='edit',
- id=transfer.id))
+ id=t.id))
response.mustcontain('Edit a Transfer')
form = response.form
- assert int(form['debtor_id'].value) == transfer.debtor_id
- assert int(form['creditor_id'].value) == transfer.creditor_id
- assert Decimal(form['amount'].value) * 100 == transfer.amount
- assert form['date'].value == transfer.date.strftime('%m/%d/%Y')
- assert form['description'].value == transfer.description
+ assert int(form['debtor_id'].value) == t.debtor_id
+ assert int(form['creditor_id'].value) == t.creditor_id
+ assert Decimal(form['amount'].value) * 100 == t.amount
+ assert form['date'].value == t.date.strftime('%m/%d/%Y')
+ assert form['description'].value == t.description
form['description'] = u'A new description'
response = response.follow()
response.mustcontain('Transfer updated.')
- transfer = meta.Session.query(model.Transfer).\
+ t = meta.Session.query(model.Transfer).\
order_by(model.Transfer.id.desc()).first()
- assert transfer.description == u'A new description'
+ assert t.description == u'A new description'
+ meta.Session.delete(t)
+ meta.Session.commit()