summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_declarations.py43
-rw-r--r--tests/test_using.py12
2 files changed, 26 insertions, 29 deletions
diff --git a/tests/test_declarations.py b/tests/test_declarations.py
index 0fcdf10..7215a54 100644
--- a/tests/test_declarations.py
+++ b/tests/test_declarations.py
@@ -22,7 +22,7 @@
import unittest
-from factory.declarations import dig, OrderedDeclaration, Sequence
+from factory.declarations import deepgetattr, OrderedDeclaration, Sequence
class OrderedDeclarationTestCase(unittest.TestCase):
def test_errors(self):
@@ -35,36 +35,23 @@ class DigTestCase(unittest.TestCase):
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'))
+ obj.a.b = self.MyObj(3)
+ obj.a.b.c = self.MyObj(4)
+
+ self.assertEqual(2, deepgetattr(obj, 'a').n)
+ self.assertRaises(AttributeError, deepgetattr, obj, 'b')
+ self.assertEqual(2, deepgetattr(obj, 'a.n'))
+ self.assertEqual(3, deepgetattr(obj, 'a.c', 3))
+ self.assertRaises(AttributeError, deepgetattr, obj, 'a.c.n')
+ self.assertRaises(AttributeError, deepgetattr, obj, 'a.d')
+ self.assertEqual(3, deepgetattr(obj, 'a.b').n)
+ self.assertEqual(3, deepgetattr(obj, 'a.b.n'))
+ self.assertEqual(4, deepgetattr(obj, 'a.b.c').n)
+ self.assertEqual(4, deepgetattr(obj, 'a.b.c.n'))
+ self.assertEqual(42, deepgetattr(obj, 'a.b.c.n.x', 42))
diff --git a/tests/test_using.py b/tests/test_using.py
index a93c968..85a12ca 100644
--- a/tests/test_using.py
+++ b/tests/test_using.py
@@ -27,11 +27,12 @@ import factory
class TestObject(object):
- def __init__(self, one=None, two=None, three=None, four=None):
+ def __init__(self, one=None, two=None, three=None, four=None, five=None):
self.one = one
self.two = two
self.three = three
self.four = four
+ self.five = five
class FakeDjangoModel(object):
class FakeDjangoManager(object):
@@ -164,12 +165,21 @@ class FactoryTestCase(unittest.TestCase):
self.assertEqual(test_object.one, 'one')
def testSelfAttribute(self):
+ class TmpObj(object):
+ n = 3
+
class TestObjectFactory(factory.Factory):
one = 'xx'
two = factory.SelfAttribute('one')
+ three = TmpObj()
+ four = factory.SelfAttribute('three.n')
+ five = factory.SelfAttribute('three.nnn', 5)
test_object = TestObjectFactory.build(one=1)
self.assertEqual(1, test_object.two)
+ self.assertEqual(3, test_object.three.n)
+ self.assertEqual(3, test_object.four)
+ self.assertEqual(5, test_object.five)
def testSequenceDecorator(self):
class TestObjectFactory(factory.Factory):