def index(request):
    if request.method == 'POST':
        form = ExpenseForm(request.POST)
        if form.is_valid():
            form.save()
            return render_to_response(
                'index.html',
                {'message': True, 'form': ExpenseForm()},
                context_instance=RequestContext(request)
            )
    else:
        form = ExpenseForm()

    return render_to_response(
        'index.html',
        {'form': form},
        context_instance=RequestContext(request)
    )
class ControlFormTestCase(TestCase):

    def setUp(self):
        self.form = ExpenseForm()

    def test_it_has_a_form(self):
        self.form.instance |should| be_instance_of(Expense)

    def test_it_has_value_and_category_and_description_and_date(self):
        self.form.fields.keys() |should| equal_to(['value', 'category', 'description', 'date'])
        self.form.fields.keys() |should| have(4).fields

    def test_it_can_save_an_expense(self):
         self.form = ExpenseForm({'value': 1, 'category': 'food', 'description': 'Rice', 'date': '01/01/2011'})
         self.form.save()
         self.form.data['value'] |should| equal_to(1)

    def test_it_cannot_save_an_expense_without_value(self):
        parameters = {'category': 'food', 'description': 'Rice', 'date': '01/01/2011'}
        self.form = ExpenseForm(parameters)
        self.form.is_valid() |should| be(False)
        self.form.save |should| throw(ValueError)

    def test_it_can_save_without_description(self):
        parameters = {'value': 100.0, 'category': 'gym', 'date': '20/06/2011'}
        self.form = ExpenseForm(parameters)
        self.form.is_valid() |should| be(True)
        self.form.save |should_not| throw(ValueError)
 def test_it_can_save_without_description(self):
     parameters = {'value': 100.0, 'category': 'gym', 'date': '20/06/2011'}
     self.form = ExpenseForm(parameters)
     self.form.is_valid() |should| be(True)
     self.form.save |should_not| throw(ValueError)
 def test_it_cannot_save_an_expense_without_value(self):
     parameters = {'category': 'food', 'description': 'Rice', 'date': '01/01/2011'}
     self.form = ExpenseForm(parameters)
     self.form.is_valid() |should| be(False)
     self.form.save |should| throw(ValueError)
 def test_it_can_save_an_expense(self):
      self.form = ExpenseForm({'value': 1, 'category': 'food', 'description': 'Rice', 'date': '01/01/2011'})
      self.form.save()
      self.form.data['value'] |should| equal_to(1)
 def setUp(self):
     self.form = ExpenseForm()