summaryrefslogtreecommitdiff
path: root/tests/test_declarations.py
diff options
context:
space:
mode:
authorRaphaël Barrois <raphael.barrois@polytechnique.org>2012-02-24 00:07:53 +0100
committerRaphaël Barrois <raphael.barrois@polytechnique.org>2012-02-24 00:07:53 +0100
commit2a1138550b3220b6f8cd23bae5fed03f0fb448cf (patch)
tree38b6b352c3efead96a410dddb5b524af2d22a9e2 /tests/test_declarations.py
parentff9d0f536bc443b81e6c95cf31644b6e19236538 (diff)
downloadfactory-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/test_declarations.py')
-rw-r--r--tests/test_declarations.py41
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()