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(), )
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)
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(), )
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})
class TestObjectFactory(base.Factory): class Meta: model = TestObject foo = declarations.PostGenerationDeclaration() foo__bar = 42
class TestObjectFactory(base.Factory): FACTORY_FOR = TestObject foo = declarations.PostGenerationDeclaration() foo__bar = 42
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})
def test_init(self): declarations.Maybe('foo', 1, 2) with self.assertRaisesRegex(TypeError, 'Inconsistent phases'): declarations.Maybe('foo', declarations.LazyAttribute(None), declarations.PostGenerationDeclaration())