Commit 08401959 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Fixed #7165 -- Added an assertNotContains() method to the test client. Thanks...

Fixed #7165 -- Added an assertNotContains() method to the test client. Thanks for the suggestion and implementation, J. Pablo Fernandez <pupeno@pupeno.com>.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@7578 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 46cd8bb5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ answer newbie questions, and generally made Django that much better:
    Bill Fenner <fenner@gmail.com>
    Stefane Fermgier <sf@fermigier.com>
    Afonso Fernández Nogueira <fonzzo.django@gmail.com>
	J. Pablo Fernandez <pupeno@pupeno.com>
    Matthew Flanagan <http://wadofstuff.blogspot.com>
    Eric Floehr <eric@intellovations.com>
    Vincent Foley <vfoleybourgon@yahoo.ca>
+12 −0
Original line number Diff line number Diff line
@@ -128,6 +128,18 @@ class TestCase(unittest.TestCase):
            self.failUnless(real_count != 0,
                            "Couldn't find '%s' in response" % text)

    def assertNotContains(self, response, text, status_code=200):
        """
        Asserts that a response indicates that a page was retrieved
        successfully, (i.e., the HTTP status code was as expected), and that
        ``text`` doesn't occurs in the content of the response.
        """
        self.assertEqual(response.status_code, status_code,
            "Couldn't retrieve page: Response code was %d (expected %d)'" %
                (response.status_code, status_code))
        self.assertEqual(response.content.count(text), 0,
                         "Response should not contain '%s'" % text)

    def assertFormError(self, response, form, field, errors):
        """
        Asserts that a form used to render the response has a specific field
+10 −6
Original line number Diff line number Diff line
@@ -822,6 +822,10 @@ useful for testing Web applications:
    that ``text`` appears in the content of the response. If ``count`` is
    provided, ``text`` must occur exactly ``count`` times in the response.

``assertNotContains(response, text, status_code=200)``
    Asserts that a ``Response`` instance produced the given ``status_code`` and
    that ``text`` does not appears in the content of the response.

``assertFormError(response, form, field, errors)``
    Asserts that a field on a form raises the provided list of errors when
    rendered on the form.
@@ -837,6 +841,12 @@ useful for testing Web applications:
    ``errors`` is an error string, or a list of error strings, that are
    expected as a result of form validation.

``assertTemplateUsed(response, template_name)``
    Asserts that the template with the given name was used in rendering the
    response.

    The name is a string such as ``'admin/index.html'``.

``assertTemplateNotUsed(response, template_name)``
    Asserts that the template with the given name was *not* used in rendering
    the response.
@@ -846,12 +856,6 @@ useful for testing Web applications:
    it redirected to ``expected_url`` (including any GET data), and the subsequent
    page was received with ``target_status_code``.

``assertTemplateUsed(response, template_name)``
    Asserts that the template with the given name was used in rendering the
    response.

    The name is a string such as ``'admin/index.html'``.

E-mail services
---------------

+6 −0
Original line number Diff line number Diff line
@@ -11,12 +11,18 @@ class AssertContainsTests(TestCase):
        "Responses can be inspected for content, including counting repeated substrings"
        response = self.client.get('/test_client_regress/no_template_view/')

        self.assertNotContains(response, 'never')
        self.assertContains(response, 'never', 0)
        self.assertContains(response, 'once')
        self.assertContains(response, 'once', 1)
        self.assertContains(response, 'twice')
        self.assertContains(response, 'twice', 2)

        try:
            self.assertNotContains(response, 'once')
        except AssertionError, e:
            self.assertEquals(str(e), "Response should not contain 'once'")
            
        try:
            self.assertContains(response, 'never', 1)
        except AssertionError, e: