Exemple #1
0
 def test_resolve_anyurlfield(self):
     root = SimpleTextPage.objects.create(title="Home", slug="home", status=SimpleTextPage.PUBLISHED, author=self.user, override_url='/')
     RedirectNode.objects.create(
         title="Redirect", status=RedirectNode.PUBLISHED, author=self.user,
         parent=root, slug="redirect", new_url=AnyUrlValue('fluent_pages.urlnode', root.pk))
     response = self.client.get('/redirect/')
     self.assertRedirects(response, '/')
    def test_valid_db_id(self):
        """
        Make sure ID values are properly stored and serialized.
        """
        reg = UrlTypeRegistry()
        urltype = reg.register(PageModel)

        page = PageModel.objects.create(slug='foo')
        v = AnyUrlValue(urltype.prefix, page.id, reg)

        # Database state
        self.assertTrue(page.id)
        self.assertEqual(urltype.prefix,
                         'any_urlfield.pagemodel')  # app_label.modelname
        self.assertEqual(v.type_prefix, urltype.prefix)
        self.assertEqual(v.type_value, page.id)
        self.assertEqual(v.to_db_value(), 'any_urlfield.pagemodel://1')

        # Frontend
        self.assertEqual(
            unicode(v),
            "/foo/")  # fetches model and returns get_absolute_url()

        # Programmer API's
        self.assertIs(v.get_model(), PageModel)
        self.assertEqual(v.get_object(), page)
        self.assertTrue(v.exists())
    def test_resolve_values(self):
        """
        Make sure ID values are properly stored and serialized.
        """
        reg = UrlTypeRegistry()
        urltype = reg.register(PageModel)
        page = PageModel.objects.create(slug='foo')

        valid = AnyUrlValue(urltype.prefix, page.id, reg)
        invalid = AnyUrlValue(urltype.prefix, 999999, reg)

        with self.assertNumQueries(1):
            AnyUrlValue.resolve_values([valid, invalid])
        self.assertTrue(valid._resolved_objects)
        self.assertTrue(invalid._resolved_objects)

        with self.assertNumQueries(0):
            self.assertEqual(valid.get_object(), page)
            self.assertTrue(valid.exists())
            self.assertRaises(PageModel.DoesNotExist,
                              lambda: invalid.get_object())
            self.assertFalse(invalid.exists())
Exemple #4
0
    def test_pickle_registry(self):
        reg = UrlTypeRegistry()
        urltype = reg.register(PageModel)
        page = PageModel.objects.create(slug='foo')

        # See if custom registries can be pickled
        v1 = AnyUrlValue(urltype.prefix, page.id, reg)
        out = StringIO()
        pickle.dump(v1, out)

        # Unpickle.
        out.seek(0)
        v2 = pickle.load(out)
        self.assertEqual(v1, v2)  # Note that __eq__ is overridden for AnyUrlValue!
Exemple #5
0
    def test_invalid_db_id(self):
        reg = UrlTypeRegistry()
        urltype = reg.register(PageModel)
        v = AnyUrlValue(urltype.prefix, 999999, reg)

        # Database state
        self.assertEqual(v.type_value, 999999)
        self.assertEqual(v.to_db_value(), 'any_urlfield.pagemodel://999999')

        # Frontend
        self.assertEqual(unicode(v), "#DoesNotExist")  # Avoids frontend errors

        # Programmer API's
        self.assertIs(v.get_model(), PageModel)
        self.assertRaises(PageModel.DoesNotExist, lambda: v.get_object())
        self.assertFalse(v.exists())
Exemple #6
0
    def test_invalid_db_id(self):
        reg = UrlTypeRegistry()
        urltype = reg.register(PageModel)
        v = AnyUrlValue(urltype.prefix, 999999, reg)

        # Database state
        self.assertEqual(v.type_value, 999999)
        self.assertEqual(v.to_db_value(), 'any_urlfield.pagemodel://999999')

        # Frontend
        from any_urlfield.models.values import logger
        logger.warning("NOTE: The following statement will cause a log to output")
        self.assertEqual(unicode(v), "#DoesNotExist")       # Avoids frontend errors

        # Programmer API's
        self.assertIs(v.get_model(), PageModel)
        self.assertRaises(PageModel.DoesNotExist, lambda: v.get_object())
        self.assertFalse(v.exists())
    def test_pickle_registry(self):
        """
        Test pickle when the ``AnyUrlValue`` has a custom registry.
        """
        reg = UrlTypeRegistry()
        urltype = reg.register(PageModel)
        page = PageModel.objects.create(slug='foo')

        # See if custom registries can be pickled
        v1 = AnyUrlValue(urltype.prefix, page.id, reg)
        out = StringIO()
        pickle.dump(v1, out)

        # Unpickle.
        out.seek(0)
        v2 = pickle.load(out)
        self.assertEqual(v1,
                         v2)  # Note that __eq__ is overridden for AnyUrlValue!

        # See that the object still works properly
        self.assertEqual(v2.get_object(), page)
        self.assertEqual(str(v2), '/foo/')