diff options
author | Raphaël Barrois <raphael.barrois@polyconseil.fr> | 2014-06-23 11:09:53 +0200 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polyconseil.fr> | 2014-06-23 11:09:53 +0200 |
commit | e2ef7c96ed74b35b9dec75a7f222b6ffa9214c10 (patch) | |
tree | 864605e4587bc41c6814cf1013f960c261a624ed | |
parent | 6269fef31787aba4956612febfa3f4944fda947b (diff) | |
download | factory-boy-e2ef7c96ed74b35b9dec75a7f222b6ffa9214c10.tar factory-boy-e2ef7c96ed74b35b9dec75a7f222b6ffa9214c10.tar.gz |
Fix declaration inheritance.
-rw-r--r-- | factory/base.py | 2 | ||||
-rw-r--r-- | tests/test_using.py | 31 |
2 files changed, 32 insertions, 1 deletions
diff --git a/factory/base.py b/factory/base.py index 923c56b..9e07899 100644 --- a/factory/base.py +++ b/factory/base.py @@ -231,7 +231,7 @@ class FactoryOptions(object): self.counter_reference = self._get_counter_reference() - for parent in self.factory.__mro__[1:]: + for parent in reversed(self.factory.__mro__[1:]): if not hasattr(parent, '_meta'): continue self.declarations.update(parent._meta.declarations) diff --git a/tests/test_using.py b/tests/test_using.py index e20f949..f18df4d 100644 --- a/tests/test_using.py +++ b/tests/test_using.py @@ -766,6 +766,37 @@ class UsingFactoryTestCase(unittest.TestCase): test_object_alt = TestObjectFactory.build() self.assertEqual(None, test_object_alt.three) + def test_override_inherited(self): + """Overriding inherited declarations""" + class TestObjectFactory(factory.Factory): + class Meta: + model = TestObject + + one = 'one' + + class TestObjectFactory2(TestObjectFactory): + one = 'two' + + test_object = TestObjectFactory2.build() + self.assertEqual('two', test_object.one) + + def test_override_inherited_deep(self): + """Overriding inherited declarations""" + class TestObjectFactory(factory.Factory): + class Meta: + model = TestObject + + one = 'one' + + class TestObjectFactory2(TestObjectFactory): + one = 'two' + + class TestObjectFactory3(TestObjectFactory2): + pass + + test_object = TestObjectFactory3.build() + self.assertEqual('two', test_object.one) + def test_inheritance_and_sequences(self): """Sequence counters should be kept within an inheritance chain.""" class TestObjectFactory(factory.Factory): |