Exemplo n.º 1
0
    def test_inherited_declaration_shadowing(self):
        lazy = declarations.LazyFunction(int)
        lazy2 = declarations.LazyAttribute(lambda _o: 2)
        postgen = declarations.PostGenerationDeclaration()
        postgen2 = declarations.PostGenerationDeclaration()

        class AbstractFactory(base.Factory):
            x = 1
            y = lazy
            z = postgen

        class OtherFactory(AbstractFactory):
            y = lazy2
            z = postgen2

        # Declarations aren't removed
        self.assertEqual(1, OtherFactory.x)
        self.assertEqual(lazy2, OtherFactory.y)
        self.assertEqual(postgen2, OtherFactory.z)

        # And are available in class Meta
        self.assertEqual(
            {
                'x': 1,
                'y': lazy2
            },
            OtherFactory._meta.pre_declarations.as_dict(),
        )
        self.assertEqual(
            {'z': postgen2},
            OtherFactory._meta.post_declarations.as_dict(),
        )
Exemplo n.º 2
0
    def test_inherited_declaration_collecting(self):
        lazy = declarations.LazyFunction(int)
        lazy2 = declarations.LazyAttribute(lambda _o: 2)
        postgen = declarations.PostGenerationDeclaration()
        postgen2 = declarations.PostGenerationDeclaration()

        class AbstractFactory(base.Factory):
            x = 1
            y = lazy
            z = postgen

        class OtherFactory(AbstractFactory):
            a = lazy2
            b = postgen2

        # Declarations aren't removed
        self.assertEqual(lazy2, OtherFactory.a)
        self.assertEqual(postgen2, OtherFactory.b)
        self.assertEqual(1, OtherFactory.x)
        self.assertEqual(lazy, OtherFactory.y)
        self.assertEqual(postgen, OtherFactory.z)

        # And are available in class Meta
        self.assertEqual({'x': 1, 'y': lazy, 'a': lazy2}, OtherFactory._meta.declarations)
        self.assertEqual({'z': postgen, 'b': postgen2}, OtherFactory._meta.postgen_declarations)
Exemplo n.º 3
0
    def test_declaration_collecting(self):
        lazy = declarations.LazyFunction(int)
        lazy2 = declarations.LazyAttribute(lambda _o: 1)
        postgen = declarations.PostGenerationDeclaration()

        class AbstractFactory(base.Factory):
            x = 1
            y = lazy
            y2 = lazy2
            z = postgen

        # Declarations aren't removed
        self.assertEqual(1, AbstractFactory.x)
        self.assertEqual(lazy, AbstractFactory.y)
        self.assertEqual(lazy2, AbstractFactory.y2)
        self.assertEqual(postgen, AbstractFactory.z)

        # And are available in class Meta
        self.assertEqual(
            {
                'x': 1,
                'y': lazy,
                'y2': lazy2
            },
            AbstractFactory._meta.pre_declarations.as_dict(),
        )
        self.assertEqual(
            {'z': postgen},
            AbstractFactory._meta.post_declarations.as_dict(),
        )
Exemplo n.º 4
0
    def test_extract_no_prefix(self):
        decl = declarations.PostGenerationDeclaration()

        context = decl.extract('foo', {'foo': 13, 'foo__bar': 42})
        self.assertTrue(context.did_extract)
        self.assertEqual(context.value, 13)
        self.assertEqual(context.extra, {'bar': 42})
Exemplo n.º 5
0
        class TestObjectFactory(base.Factory):
            class Meta:
                model = TestObject

            foo = declarations.PostGenerationDeclaration()
            foo__bar = 42
Exemplo n.º 6
0
        class TestObjectFactory(base.Factory):
            FACTORY_FOR = TestObject

            foo = declarations.PostGenerationDeclaration()
            foo__bar = 42
Exemplo n.º 7
0
    def test_extract_no_prefix(self):
        decl = declarations.PostGenerationDeclaration()

        extracted, kwargs = decl.extract('foo', {'foo': 13, 'foo__bar': 42})
        self.assertEqual(extracted, 13)
        self.assertEqual(kwargs, {'bar': 42})
Exemplo n.º 8
0
    def test_init(self):
        declarations.Maybe('foo', 1, 2)

        with self.assertRaisesRegex(TypeError, 'Inconsistent phases'):
            declarations.Maybe('foo', declarations.LazyAttribute(None),
                               declarations.PostGenerationDeclaration())