Showing posts with label view. Show all posts
Showing posts with label view. Show all posts
May 12, 2012
Apr 13, 2012
Testing models, forms
Form
Django Forms Deep Dive - Nathan R. Yergler
Fast test, slow test by Gary Bernhardt
Django Forms Deep Dive - Nathan R. Yergler
import unittest
class FormTests(unittest.TestCase):
def test_validation(self):
form_data = {
'name': 'X' * 300,
}
form = ContactForm(data=form_data)
self.assertFalse(form.is_valid())
Eventbrite just released a library on GitHub called rebar – https://github.com/eventbrite/rebarfrom rebar.testing import flatten_to_dict
form_data = flatten_to_dict(ContactForm())
form_data.update({
'name': 'X' * 300,
})
form = ContactForm(data=form_data)
assert(not form.is_valid())
ModelFormclass ModelFormTests(unittest.TestCase):
def test_validation(self):
form_data = {
'name': 'Test Name',
}
form = ContactForm(data=form_data)
self.assert_(form.is_valid())
self.assertEqual(form.instance.name, 'Test Name')
form.save()
self.assertEqual(
Contact.objects.get(id=form.instance.id).name,
'Test Name'
)
FormSetfrom rebar.testing import flatten_to_dict, empty_form_data
formset = ContactFormSet()
form_data = flatten_to_dict(formset)
form_data.update(
empty_form_data(formset, len(formset))
)
ModelFast test, slow test by Gary Bernhardt
def test_that_spam_posts_are_hidden(self):
post = Post(mark_post_as_spam=True)
discussion = Discussion(posts=[post])
assert discussion.visible_posts == []
Jun 20, 2011
Class-based views
class SomeFormView(TemplateResponseMixin, View):
template_name = 'some_form.html'
def get(self, request):
form = SomeForm()
return self.render_to_response({
'form': form,
})
def post(self, request):
form = SomeForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Your form has been saved!')
return self.render_to_response({
'form': form,
})
class AjaxThingView(View):
# Note that I don't subclass the TemplateResponseMixin here!
def get(self, request):
return HttpResponse(status=404)
def post(self, request):
id = request.POST.get('id')
# Do something with the id
return HttpResponse('some data')
Subscribe to:
Posts (Atom)