diff options
author | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-02-24 00:07:53 +0100 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-02-24 00:07:53 +0100 |
commit | 2a1138550b3220b6f8cd23bae5fed03f0fb448cf (patch) | |
tree | 38b6b352c3efead96a410dddb5b524af2d22a9e2 /tests | |
parent | ff9d0f536bc443b81e6c95cf31644b6e19236538 (diff) | |
download | factory-boy-2a1138550b3220b6f8cd23bae5fed03f0fb448cf.tar factory-boy-2a1138550b3220b6f8cd23bae5fed03f0fb448cf.tar.gz |
Allow using '__' in factory.SelfAttribute.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_declarations.py | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/tests/test_declarations.py b/tests/test_declarations.py index dcee38b..0fcdf10 100644 --- a/tests/test_declarations.py +++ b/tests/test_declarations.py @@ -22,12 +22,51 @@ import unittest -from factory.declarations import OrderedDeclaration, Sequence +from factory.declarations import dig, OrderedDeclaration, Sequence class OrderedDeclarationTestCase(unittest.TestCase): def test_errors(self): decl = OrderedDeclaration() self.assertRaises(NotImplementedError, decl.evaluate, None, {}) + +class DigTestCase(unittest.TestCase): + class MyObj(object): + def __init__(self, n): + self.n = n + + def test_parentattr(self): + obj = self.MyObj(1) + obj.a__b__c = self.MyObj(2) + obj.a = self.MyObj(3) + obj.a.b = self.MyObj(4) + obj.a.b.c = self.MyObj(5) + + self.assertEqual(2, dig(obj, 'a__b__c').n) + + def test_private(self): + obj = self.MyObj(1) + self.assertEqual(obj.__class__, dig(obj, '__class__')) + + def test_chaining(self): + obj = self.MyObj(1) + obj.a = self.MyObj(2) + obj.a__c = self.MyObj(3) + obj.a.b = self.MyObj(4) + obj.a.b.c = self.MyObj(5) + + self.assertEqual(2, dig(obj, 'a').n) + self.assertRaises(AttributeError, dig, obj, 'b') + self.assertEqual(2, dig(obj, 'a__n')) + self.assertEqual(3, dig(obj, 'a__c').n) + self.assertRaises(AttributeError, dig, obj, 'a__c__n') + self.assertRaises(AttributeError, dig, obj, 'a__d') + self.assertEqual(4, dig(obj, 'a__b').n) + self.assertEqual(4, dig(obj, 'a__b__n')) + self.assertEqual(5, dig(obj, 'a__b__c').n) + self.assertEqual(5, dig(obj, 'a__b__c__n')) + + + if __name__ == '__main__': unittest.main() |