diff options
| author | Boulder Sprinters <boulder-sprinters@djangoproject.com> | 2007-03-22 17:42:25 +0000 |
|---|---|---|
| committer | Boulder Sprinters <boulder-sprinters@djangoproject.com> | 2007-03-22 17:42:25 +0000 |
| commit | c4eb6bf708497d621e5bc0f731f26c800dee1d02 (patch) | |
| tree | 14986e18ef9a0bbd8d8d79b4180ab033af31d466 /tests | |
| parent | 4a4417787ba2d9bb90f70e441380f868198f860a (diff) | |
boulder-oracle-sprint: Merged to [4775] of trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@4777 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/modeltests/get_object_or_404/models.py | 6 | ||||
| -rw-r--r-- | tests/modeltests/test_client/models.py | 38 | ||||
| -rw-r--r-- | tests/modeltests/test_client/urls.py | 1 | ||||
| -rw-r--r-- | tests/modeltests/test_client/views.py | 34 |
4 files changed, 75 insertions, 4 deletions
diff --git a/tests/modeltests/get_object_or_404/models.py b/tests/modeltests/get_object_or_404/models.py index 79bcc6f52c..0aefd40fdf 100644 --- a/tests/modeltests/get_object_or_404/models.py +++ b/tests/modeltests/get_object_or_404/models.py @@ -44,7 +44,7 @@ __test__ = {'API_TESTS':""" >>> get_object_or_404(Article, title="Foo") Traceback (most recent call last): ... -Http404 +Http404: No Article matches the given query. # Create an Article. >>> article = Article.objects.create(title="Run away!") @@ -63,7 +63,7 @@ Http404 >>> get_object_or_404(a.article_set, title__contains="Camelot") Traceback (most recent call last): ... -Http404 +Http404: No Article matches the given query. # Custom managers can be used too. >>> get_object_or_404(Article.by_a_sir, title="Run away!") @@ -77,7 +77,7 @@ Http404 >>> get_list_or_404(a.article_set, title__icontains='Shrubbery') Traceback (most recent call last): ... -Http404 +Http404: No Article matches the given query. # Custom managers can be used too. >>> get_list_or_404(Article.by_a_sir, title__icontains="Run") diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py index a3a9749162..75f3c49908 100644 --- a/tests/modeltests/test_client/models.py +++ b/tests/modeltests/test_client/models.py @@ -81,7 +81,43 @@ class ClientTest(TestCase): # Check that the response was a 302 (redirect) self.assertEqual(response.status_code, 302) - + + def test_valid_form(self): + "POST valid data to a form" + post_data = { + 'text': 'Hello World', + 'email': 'foo@example.com', + 'value': 37, + 'single': 'b', + 'multi': ('b','c','e') + } + response = self.client.post('/test_client/form_view/', post_data) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.template.name, "Valid POST Template") + + def test_incomplete_data_form(self): + "POST incomplete data to a form" + post_data = { + 'text': 'Hello World', + 'value': 37 + } + response = self.client.post('/test_client/form_view/', post_data) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.template.name, "Invalid POST Template") + + def test_form_error(self): + "POST erroneous data to a form" + post_data = { + 'text': 'Hello World', + 'email': 'not an email address', + 'value': 37, + 'single': 'b', + 'multi': ('b','c','e') + } + response = self.client.post('/test_client/form_view/', post_data) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.template.name, "Invalid POST Template") + def test_unknown_page(self): "GET an invalid URL" response = self.client.get('/test_client/unknown_view/') diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py index 0bef1e9b71..707ecc186d 100644 --- a/tests/modeltests/test_client/urls.py +++ b/tests/modeltests/test_client/urls.py @@ -6,6 +6,7 @@ urlpatterns = patterns('', (r'^post_view/$', views.post_view), (r'^raw_post_view/$', views.raw_post_view), (r'^redirect_view/$', views.redirect_view), + (r'^form_view/$', views.form_view), (r'^login_protected_view/$', views.login_protected_view), (r'^session_view/$', views.session_view), (r'^broken_view/$', views.broken_view) diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py index 653e9a10e9..36ec144cf6 100644 --- a/tests/modeltests/test_client/views.py +++ b/tests/modeltests/test_client/views.py @@ -2,6 +2,8 @@ from xml.dom.minidom import parseString from django.template import Context, Template from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth.decorators import login_required +from django.newforms.forms import Form +from django.newforms import fields def get_view(request): "A simple view that expects a GET request, and returns a rendered template" @@ -45,7 +47,39 @@ def raw_post_view(request): def redirect_view(request): "A view that redirects all requests to the GET view" return HttpResponseRedirect('/test_client/get_view/') + +TestChoices = ( + ('a', 'First Choice'), + ('b', 'Second Choice'), + ('c', 'Third Choice'), + ('d', 'Fourth Choice'), + ('e', 'Fifth Choice') +) + +class TestForm(Form): + text = fields.CharField() + email = fields.EmailField() + value = fields.IntegerField() + single = fields.ChoiceField(choices=TestChoices) + multi = fields.MultipleChoiceField(choices=TestChoices) + +def form_view(request): + "A view that tests a simple form" + if request.method == 'POST': + form = TestForm(request.POST) + if form.is_valid(): + t = Template('Valid POST data.', name='Valid POST Template') + c = Context() + else: + t = Template('Invalid POST data. {{ form.errors }}', name='Invalid POST Template') + c = Context({'form': form}) + else: + form = TestForm() + t = Template('Viewing base form. {{ form }}.', name='Form GET Template') + c = Context({'form': form}) + return HttpResponse(t.render(c)) + def login_protected_view(request): "A simple view that is login protected." t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template') |
