コード例 #1
0
    def test_url_form_create_url_with_empty_relative_path(self):
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.default_site.id,
            "url_type": "relative_path",
            "relative_path": ""
        })

        self.assertFalse(form.is_valid())
        self.assertDictEqual(form.errors,
                             {"relative_path": ["Field is required"]})
コード例 #2
0
 def test_url_form_create_url_with_valid_phone(self):
     form = UrlForm(
         {
             "site": self.default_site.id,
             "url_type": "phone",
             "phone": "+44 20 7946 0916",
         }
     )
     self.assertTrue(form.is_valid())
     instance = form.save()
     self.assertEqual(instance.phone, "+44 20 7946 0916")
コード例 #3
0
    def test_url_form_create_url_with_invalid_manual_url(self):
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.default_site.id,
            "url_type": "manual_url",
            "manual_url": "google",
        })

        self.assertFalse(form.is_valid())
        self.assertDictEqual(form.errors,
                             {"manual_url": ["Enter a valid URL."]})
コード例 #4
0
 def test_url_form_create_url_with_valid_mailto(self):
     form = UrlForm(
         {
             "site": self.default_site.id,
             "url_type": "mailto",
             "mailto": "*****@*****.**",
         }
     )
     self.assertTrue(form.is_valid())
     instance = form.save()
     self.assertEqual(instance.mailto, "*****@*****.**")
コード例 #5
0
    def test_url_form_create_url_with_invalid_anchor(self):
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.default_site.id,
            "url_type": "anchor",
            "anchor": "#example"
        })

        self.assertFalse(form.is_valid())
        self.assertDictEqual(
            form.errors,
            {"anchor": ['Do not include a preceding "#" symbol.']})
コード例 #6
0
    def test_url_form_create_url_with_valid_anchor(self):
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.default_site.id,
            "url_type": "anchor",
            "anchor": "test"
        })

        self.assertTrue(form.is_valid())

        instance = form.save()

        self.assertEqual(instance.anchor, "test")
コード例 #7
0
 def test_create_url_for_content_object_that_already_have_url(self):
     form = UrlForm({
         'site': self.default_site.id,
         'url_type': self.page_contenttype_id,
         'content_object': self.page.pk,
         'manual_url': 'http://google.com/',
         'anchor': 'test',
         'mailto': '*****@*****.**',
         'phone': '112',
     })
     self.assertFalse(form.is_valid())
     self.assertDictEqual(
         form.errors,
         {'content_object': ['Url with this object already exists']})
コード例 #8
0
 def test_create_url_for_content_object_that_already_have_url(self):
     form = UrlForm({
         "site": self.default_site.id,
         "url_type": self.page_contenttype_id,
         "content_object": self.page.pk,
         "manual_url": "http://google.com/",
         "anchor": "test",
         "mailto": "*****@*****.**",
         "phone": "112",
     })
     self.assertFalse(form.is_valid())
     self.assertDictEqual(
         form.errors,
         {"content_object": ["Url with this object already exists"]})
コード例 #9
0
 def test_url_form_url_type_choices(self):
     form = UrlForm()
     self.assertListEqual(
         form.fields['url_type'].choices,
         [(self.page_contenttype_id, 'Page'),
          (self.poll_content_contenttype_id, 'Poll content'),
          ('manual_url', 'Manual URL'), ('anchor', 'Anchor'),
          ('mailto', 'Email address'), ('phone', 'Phone')])
コード例 #10
0
 def test_url_form_create_url_with_empty_content_object(self):
     form = UrlForm({
         "site": self.default_site.id,
         "url_type": self.page_contenttype_id,
         "content_object": None,
     })
     self.assertDictEqual(form.errors,
                          {"content_object": ["Field is required"]})
コード例 #11
0
 def test_url_form_create_url_with_empty_content_object(self):
     form = UrlForm({
         'site': self.default_site.id,
         'url_type': self.page_contenttype_id,
         'content_object': None,
     })
     self.assertDictEqual(form.errors,
                          {'content_object': ['Field is required']})
コード例 #12
0
 def test_url_form_create_url_with_valid_manual_url(self):
     form = UrlForm({
         'site': self.default_site.id,
         'url_type': 'manual_url',
         'manual_url': 'https://google.com/',
         'anchor': 'test',
         'mailto': '*****@*****.**',
         'phone': '112',
         'content_object': self.page.id,
     })
     self.assertTrue(form.is_valid())
     instance = form.save()
     self.assertEqual(instance.site_id, self.default_site.id)
     self.assertEqual(instance.manual_url, 'https://google.com/')
     self.assertEqual(instance.anchor, '')
     self.assertEqual(instance.mailto, '')
     self.assertEqual(instance.phone, '')
     self.assertEqual(instance.content_type_id, None)
     self.assertEqual(instance.object_id, None)
コード例 #13
0
 def test_url_form_create_url_with_valid_page_content_and_content_object(
         self):
     form = UrlForm({
         "site": self.site2.id,
         "url_type": self.page_contenttype_id,
         "content_object": self.page2.pk,
         "manual_url": "http://google.com/",
         "anchor": "test",
         "mailto": "*****@*****.**",
         "phone": "112",
     })
     self.assertTrue(form.is_valid())
     instance = form.save()
     self.assertEqual(instance.site_id, self.site2.id)
     self.assertEqual(instance.content_type_id, self.page_contenttype_id)
     self.assertEqual(instance.object_id, self.page2.id)
     self.assertEqual(instance.manual_url, "")
     self.assertEqual(instance.relative_path, "")
     self.assertEqual(instance.anchor, "")
     self.assertEqual(instance.mailto, "")
     self.assertEqual(instance.phone, "")
コード例 #14
0
 def test_url_form_create_url_with_valid_manual_url(self):
     form = UrlForm({
         "site": self.default_site.id,
         "url_type": "manual_url",
         "manual_url": "https://google.com/",
         "relative_path": "/some/random/path",
         "anchor": "test",
         "mailto": "*****@*****.**",
         "phone": "112",
         "content_object": self.page.id,
     })
     self.assertTrue(form.is_valid())
     instance = form.save()
     self.assertEqual(instance.site_id, self.default_site.id)
     self.assertEqual(instance.manual_url, "https://google.com/")
     self.assertEqual(instance.relative_path, "")
     self.assertEqual(instance.anchor, "")
     self.assertEqual(instance.mailto, "")
     self.assertEqual(instance.phone, "")
     self.assertEqual(instance.content_type_id, None)
     self.assertEqual(instance.object_id, None)
コード例 #15
0
 def test_url_form_url_type_choices(self):
     form = UrlForm()
     self.assertListEqual(
         form.fields["url_type"].choices,
         [
             (self.page_contenttype_id, "Page"),
             (self.poll_content_contenttype_id, "Poll content"),
             ("manual_url", "Manual URL"),
             ("anchor", "Anchor"),
             ("mailto", "Email address"),
             ("phone", "Phone"),
         ],
     )
コード例 #16
0
 def test_url_form_create_url_with_invalid_content_type_and_content_object(self):
     form = UrlForm(
         {"site": self.default_site.id, "url_type": 99, "content_object": 99}
     )
     self.assertDictEqual(
         form.errors,
         {
             "url_type": [
                 "Select a valid choice. 99 is not one of the available choices."
             ],
             "content_object": [
                 "Object does not exist in a given content type id: {} and site: {}".format(
                     99, self.default_site
                 )
             ],
         },
     )
コード例 #17
0
    def test_get_url_change_content_type(self):
        """
        Ensure get_url returns the correct url when a content type is changed from one to another using URlForm
        The issue was present previously as the getter for URL would assume that the form was setting the Generic
        Foreign Key to None!
        """
        # Create a URL with content type page
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.site2.id,
            "url_type": self.page_contenttype_id,
            "content_object": self.page2.pk,
        })

        # Confirm the form is valid
        self.assertTrue(form.is_valid())

        # Save the form the create a model instance
        instance = form.save()

        # Ensure the correct url is being returned
        self.assertEqual(instance.get_url(instance.site),
                         "//foo.com/en/test2/")

        # Create a form to update the model with a new content type
        form = UrlForm({
            "internal_name": "Test Name",
            "url": instance.pk,
            "site": self.site2.id,
            "url_type": self.poll_content_contenttype_id,
            "content_object": self.poll_content.pk,
        })

        # Ensure form is valid
        self.assertTrue(form.is_valid())

        instance = form.save()

        self.assertEqual(instance.get_url(instance.site),
                         "//foo.com/en/admin/polls/pollcontent/")
コード例 #18
0
 def test_url_form_create_url_with_invalid_content_type_and_content_object(
         self):
     form = UrlForm({
         'site': self.default_site.id,
         'url_type': 99,
         'content_object': 99,
     })
     self.assertDictEqual(
         form.errors, {
             'url_type': [
                 'Select a valid choice. 99 is not one of the available choices.'
             ],
             'content_object': [
                 'Object does not exist in a given content type id: {} and site: {}'
                 .format(
                     99,
                     self.default_site,
                 )
             ]
         })
コード例 #19
0
    def test_plugin_returns_correct_url_for_type_on_update(self):
        """
        Get URL returns based on a series of if statements meaning without proper validation the incorrect value
        is returned if the content type was previously populated but has since been changed to a charfield url type
        - Create a url pointing to a page
        - Ensure get_url returns the correct url
        - Change it to a manual_url
        - Ensure that get_url returns the updated url
        """
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.site2.id,
            "url_type": self.page_contenttype_id,
            "content_object": self.page2.pk,
        })

        self.assertTrue(form.is_valid())

        instance = form.save()

        self.assertEqual(instance.get_url(instance.site),
                         "//foo.com/en/test2/")

        form = UrlForm({
            "internal_name": "Test Name",
            "url": self.url.id,
            "site": self.site2.id,
            "url_type": "manual_url",
            "manual_url": "https://www.github.com"
        })

        self.assertTrue(form.is_valid())

        instance = form.save()

        self.assertEqual(instance.get_url(instance.site),
                         "https://www.github.com")
コード例 #20
0
 def test_url_form_empty_data(self):
     form = UrlForm({"site": self.default_site})
     self.assertFalse(form.is_valid())
コード例 #21
0
    def test_url_basic_type_change(self):
        """
        Test that get_url returns the correct url when a content type is change from a basic type to a content object,
        and vice-versa
        """
        # Create a URL form targeting a manual url
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.site2.id,
            "url_type": "manual_url",
            "manual_url": "https://www.example.com",
            "content_object": None,
        })

        # Confirm the form is valid
        self.assertTrue(form.is_valid())

        # Save the form the create a model instance
        instance = form.save()

        # Ensure the correct url is being returned
        self.assertEqual(instance.get_url(instance.site),
                         "https://www.example.com")

        # Create a new form to set the URL to use a Generic FK
        form = UrlForm({
            "internal_name": "Test Name",
            "url": instance.pk,
            "site": self.site2.id,
            "url_type": self.poll_content_contenttype_id,
            "content_object": self.poll_content.pk,
        })

        # Ensure form is valid
        self.assertTrue(form.is_valid())

        # Save the form
        instance = form.save()

        self.assertEqual(instance.get_url(instance.site),
                         "//foo.com/en/admin/polls/pollcontent/")

        # Create a URL form targeting a manual url again
        form = UrlForm({
            "internal_name": "Test Name",
            "site": self.site2.id,
            "url_type": "manual_url",
            "manual_url": "https://www.example.com",
            "content_object": None,
        })

        # Ensure form is valid
        self.assertTrue(form.is_valid())

        # Save the form the create a model instance
        instance = form.save()

        # Ensure the correct url is being returned after change
        self.assertEqual(instance.get_url(instance.site),
                         "https://www.example.com")
コード例 #22
0
 def test_url_form_create_url_with_empty_phone(self):
     form = UrlForm({"site": self.default_site.id, "url_type": "phone", "phone": ""})
     self.assertFalse(form.is_valid())
     self.assertDictEqual(form.errors, {"phone": ["Field is required"]})
コード例 #23
0
 def test_url_form_create_url_with_invalid_mailto(self):
     form = UrlForm(
         {"site": self.default_site.id, "url_type": "mailto", "mailto": "norman"}
     )
     self.assertFalse(form.is_valid())
     self.assertDictEqual(form.errors, {"mailto": ["Enter a valid email address."]})