diff options
author | Carl Meyer <carl@oddbird.net> | 2012-01-12 08:48:34 -0700 |
---|---|---|
committer | Carl Meyer <carl@oddbird.net> | 2012-01-12 08:48:34 -0700 |
commit | 24b6a6b83cfb7cd5bab304bb8cc22383cf461d85 (patch) | |
tree | 3b3939aa09d32089fd8077c8eece8193642b262d /tests/test_containers.py | |
parent | 86393d4d1117426bc2aafbfb9f11f96c463f05f1 (diff) | |
parent | 363fa7b470286f2b38ab33a7e986bfd000f25d86 (diff) | |
download | factory-boy-24b6a6b83cfb7cd5bab304bb8cc22383cf461d85.tar factory-boy-24b6a6b83cfb7cd5bab304bb8cc22383cf461d85.tar.gz |
Merge branch 'master' into allow-public-classmethods
Diffstat (limited to 'tests/test_containers.py')
-rw-r--r-- | tests/test_containers.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/tests/test_containers.py b/tests/test_containers.py index b9eaab6..b4c5c52 100644 --- a/tests/test_containers.py +++ b/tests/test_containers.py @@ -43,12 +43,37 @@ class LazyStubTestCase(unittest.TestCase): self.assertRaises(AttributeError, getattr, stub, 'three') + def test_accessing_container(self): + class LazyAttr(containers.LazyValue): + def __init__(self, obj_attr, container_attr): + self.obj_attr = obj_attr + self.container_attr = container_attr + + def evaluate(self, obj, containers=()): + if containers: + add = getattr(containers[0], self.container_attr) + else: + add = 0 + return getattr(obj, self.obj_attr) + add + + class DummyContainer(object): + three = 3 + + stub = containers.LazyStub({'one': LazyAttr('two', 'three'), 'two': 2, 'three': 42}, + containers=(DummyContainer(),)) + + self.assertEqual(5, stub.one) + + stub = containers.LazyStub({'one': LazyAttr('two', 'three'), 'two': 2, 'three': 42}, + containers=()) + self.assertEqual(2, stub.one) + def test_cyclic_definition(self): class LazyAttr(containers.LazyValue): def __init__(self, attrname): self.attrname = attrname - def evaluate(self, obj): + def evaluate(self, obj, container=None): return 1 + getattr(obj, self.attrname) stub = containers.LazyStub({'one': LazyAttr('two'), 'two': LazyAttr('one')}) |