diff options
author | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2016-02-09 23:57:31 +0100 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2016-02-09 23:57:31 +0100 |
commit | 229d43874723f36b380eb49e53538bf21511fa5a (patch) | |
tree | 2f12ee3eaf241cd05e73a0cff3a85ea519c06a54 /tests | |
parent | 4172dd686ce483191b33e3189d716f11b3da921e (diff) | |
download | factory-boy-229d43874723f36b380eb49e53538bf21511fa5a.tar factory-boy-229d43874723f36b380eb49e53538bf21511fa5a.tar.gz |
Clarify the use of SelfAttribute in RelatedFactory (Closes #264)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_using.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/test_using.py b/tests/test_using.py index c7d2b85..0a893c1 100644 --- a/tests/test_using.py +++ b/tests/test_using.py @@ -1924,6 +1924,36 @@ class PostGenerationTestCase(unittest.TestCase): self.assertEqual(3, related.one) self.assertEqual(4, related.two) + def test_related_factory_selfattribute(self): + class TestRelatedObject(object): + def __init__(self, obj=None, one=None, two=None): + obj.related = self + self.one = one + self.two = two + self.three = obj + + class TestRelatedObjectFactory(factory.Factory): + class Meta: + model = TestRelatedObject + one = 1 + two = factory.LazyAttribute(lambda o: o.one + 1) + + class TestObjectFactory(factory.Factory): + class Meta: + model = TestObject + one = 3 + two = 2 + three = factory.RelatedFactory(TestRelatedObjectFactory, 'obj', + two=factory.SelfAttribute('obj.two'), + ) + + obj = TestObjectFactory.build(two=4) + self.assertEqual(3, obj.one) + self.assertEqual(4, obj.two) + self.assertEqual(1, obj.related.one) + self.assertEqual(4, obj.related.two) + + class RelatedFactoryExtractionTestCase(unittest.TestCase): def setUp(self): |