From dc16881ebf674295a3e855bfc4798a0ce8bd94d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Barrois?= Date: Fri, 24 Feb 2012 01:14:30 +0100 Subject: Improve the 'SelfAttribute' syntax. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Raphaƫl Barrois --- tests/test_declarations.py | 43 +++++++++++++++---------------------------- tests/test_using.py | 12 +++++++++++- 2 files changed, 26 insertions(+), 29 deletions(-) (limited to 'tests') 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): -- cgit v1.2.3