Пример #1
0
    def test_instance_default_manager(self):
        def default_manager(instance):
            return (
                type(instance.__class__._default_manager),
                instance.__class__._default_manager.model,
            )

        plain_a = PlainA(field1="C1")
        plain_b = PlainB(field2="C1")
        plain_c = PlainC(field3="C1")

        model_2a = Model2A(field1="C1")
        model_2b = Model2B(field2="C1")
        model_2c = Model2C(field3="C1")

        self.assertEqual(default_manager(plain_a), (models.Manager, PlainA))
        self.assertEqual(default_manager(plain_b), (models.Manager, PlainB))
        self.assertEqual(default_manager(plain_c), (models.Manager, PlainC))

        self.assertEqual(default_manager(model_2a),
                         (PolymorphicManager, Model2A))
        self.assertEqual(default_manager(model_2b),
                         (PolymorphicManager, Model2B))
        self.assertEqual(default_manager(model_2c),
                         (PolymorphicManager, Model2C))
Пример #2
0
    def test_contrib_guardian(self):
        # Regular Django inheritance should return the child model content type.
        obj = PlainC()
        ctype = get_polymorphic_base_content_type(obj)
        self.assertEqual(ctype.name, 'plain c')

        ctype = get_polymorphic_base_content_type(PlainC)
        self.assertEqual(ctype.name, 'plain c')

        # Polymorphic inheritance should return the parent model content type.
        obj = Model2D()
        ctype = get_polymorphic_base_content_type(obj)
        self.assertEqual(ctype.name, 'model2a')

        ctype = get_polymorphic_base_content_type(Model2D)
        self.assertEqual(ctype.name, 'model2a')