diff options
author | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-01-12 08:50:29 +0100 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-01-12 08:50:49 +0100 |
commit | 363fa7b470286f2b38ab33a7e986bfd000f25d86 (patch) | |
tree | 3f1d9a8d654bdcb31eb483874dcb156f61b1f03c /tests/test_base.py | |
parent | 4964327f517202ecc99a0bf1f90d548eb9f9f5a1 (diff) | |
download | factory-boy-363fa7b470286f2b38ab33a7e986bfd000f25d86.tar factory-boy-363fa7b470286f2b38ab33a7e986bfd000f25d86.tar.gz |
Rearrange tests.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Diffstat (limited to 'tests/test_base.py')
-rw-r--r-- | tests/test_base.py | 418 |
1 files changed, 0 insertions, 418 deletions
diff --git a/tests/test_base.py b/tests/test_base.py index 9e61378..97749f6 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -55,211 +55,13 @@ class SafetyTestCase(unittest.TestCase): self.assertRaises(RuntimeError, base.BaseFactory) -class SimpleBuildTestCase(unittest.TestCase): - """Tests the minimalist 'factory.build/create' functions.""" - - def test_build(self): - obj = base.build(TestObject, two=2) - self.assertEqual(obj.one, None) - self.assertEqual(obj.two, 2) - self.assertEqual(obj.three, None) - self.assertEqual(obj.four, None) - - def test_complex(self): - obj = base.build(TestObject, two=2, three=declarations.LazyAttribute(lambda o: o.two + 1)) - self.assertEqual(obj.one, None) - self.assertEqual(obj.two, 2) - self.assertEqual(obj.three, 3) - self.assertEqual(obj.four, None) - - def test_create(self): - obj = base.create(FakeDjangoModel, foo='bar') - self.assertEqual(obj.id, 1) - self.assertEqual(obj.foo, 'bar') - - def test_stub(self): - obj = base.stub(TestObject, three=3) - self.assertEqual(obj.three, 3) - self.assertFalse(hasattr(obj, 'two')) - - def test_make_factory(self): - fact = base.make_factory(TestObject, two=2, three=declarations.LazyAttribute(lambda o: o.two + 1)) - - obj = fact.build() - self.assertEqual(obj.one, None) - self.assertEqual(obj.two, 2) - self.assertEqual(obj.three, 3) - self.assertEqual(obj.four, None) - - obj = fact.build(two=4) - self.assertEqual(obj.one, None) - self.assertEqual(obj.two, 4) - self.assertEqual(obj.three, 5) - self.assertEqual(obj.four, None) - - class FactoryTestCase(unittest.TestCase): - def testAttribute(self): - class TestObjectFactory(base.Factory): - one = 'one' - - test_object = TestObjectFactory.build() - self.assertEqual(test_object.one, 'one') - - def testSequence(self): - class TestObjectFactory(base.Factory): - one = declarations.Sequence(lambda n: 'one' + n) - two = declarations.Sequence(lambda n: 'two' + n) - - test_object0 = TestObjectFactory.build() - self.assertEqual(test_object0.one, 'one0') - self.assertEqual(test_object0.two, 'two0') - - test_object1 = TestObjectFactory.build() - self.assertEqual(test_object1.one, 'one1') - self.assertEqual(test_object1.two, 'two1') - - def testSequenceCustomBegin(self): - class TestObjectFactory(base.Factory): - @classmethod - def _setup_next_sequence(cls): - return 42 - - one = declarations.Sequence(lambda n: 'one' + n) - two = declarations.Sequence(lambda n: 'two' + n) - - test_object0 = TestObjectFactory.build() - self.assertEqual('one42', test_object0.one) - self.assertEqual('two42', test_object0.two) - - test_object1 = TestObjectFactory.build() - self.assertEqual('one43', test_object1.one) - self.assertEqual('two43', test_object1.two) - - def testLazyAttribute(self): - class TestObjectFactory(base.Factory): - one = declarations.LazyAttribute(lambda a: 'abc' ) - two = declarations.LazyAttribute(lambda a: a.one + ' xyz') - - test_object = TestObjectFactory.build() - self.assertEqual(test_object.one, 'abc') - self.assertEqual(test_object.two, 'abc xyz') - def testLazyAttributeNonExistentParam(self): class TestObjectFactory(base.Factory): one = declarations.LazyAttribute(lambda a: a.does_not_exist ) self.assertRaises(AttributeError, TestObjectFactory) - def testLazyAttributeSequence(self): - class TestObjectFactory(base.Factory): - one = declarations.LazyAttributeSequence(lambda a, n: 'abc' + n) - two = declarations.LazyAttributeSequence(lambda a, n: a.one + ' xyz' + n) - - test_object0 = TestObjectFactory.build() - self.assertEqual(test_object0.one, 'abc0') - self.assertEqual(test_object0.two, 'abc0 xyz0') - - test_object1 = TestObjectFactory.build() - self.assertEqual(test_object1.one, 'abc1') - self.assertEqual(test_object1.two, 'abc1 xyz1') - - def testLazyAttributeDecorator(self): - class TestObjectFactory(base.Factory): - @declarations.lazy_attribute - def one(a): - return 'one' - - test_object = TestObjectFactory.build() - self.assertEqual(test_object.one, 'one') - - def testSelfAttribute(self): - class TestObjectFactory(base.Factory): - one = 'xx' - two = declarations.SelfAttribute('one') - - test_object = TestObjectFactory.build(one=1) - self.assertEqual(1, test_object.two) - - def testSequenceDecorator(self): - class TestObjectFactory(base.Factory): - @declarations.sequence - def one(n): - return 'one' + n - - test_object = TestObjectFactory.build() - self.assertEqual(test_object.one, 'one0') - - def testLazyAttributeSequenceDecorator(self): - class TestObjectFactory(base.Factory): - @declarations.lazy_attribute_sequence - def one(a, n): - return 'one' + n - @declarations.lazy_attribute_sequence - def two(a, n): - return a.one + ' two' + n - - test_object = TestObjectFactory.build() - self.assertEqual(test_object.one, 'one0') - self.assertEqual(test_object.two, 'one0 two0') - - def testBuildWithParameters(self): - class TestObjectFactory(base.Factory): - one = declarations.Sequence(lambda n: 'one' + n) - two = declarations.Sequence(lambda n: 'two' + n) - - test_object0 = TestObjectFactory.build(three='three') - self.assertEqual(test_object0.one, 'one0') - self.assertEqual(test_object0.two, 'two0') - self.assertEqual(test_object0.three, 'three') - - test_object1 = TestObjectFactory.build(one='other') - self.assertEqual(test_object1.one, 'other') - self.assertEqual(test_object1.two, 'two1') - - def testCreate(self): - class TestModelFactory(base.Factory): - one = 'one' - - test_model = TestModelFactory.create() - self.assertEqual(test_model.one, 'one') - self.assertTrue(test_model.id) - - def testInheritance(self): - class TestObjectFactory(base.Factory): - one = 'one' - two = declarations.LazyAttribute(lambda a: a.one + ' two') - - class TestObjectFactory2(TestObjectFactory): - FACTORY_FOR = TestObject - - three = 'three' - four = declarations.LazyAttribute(lambda a: a.three + ' four') - - test_object = TestObjectFactory2.build() - self.assertEqual(test_object.one, 'one') - self.assertEqual(test_object.two, 'one two') - self.assertEqual(test_object.three, 'three') - self.assertEqual(test_object.four, 'three four') - - test_object_alt = TestObjectFactory.build() - self.assertEqual(None, test_object_alt.three) - - def testInheritanceWithInheritedClass(self): - class TestObjectFactory(base.Factory): - one = 'one' - two = declarations.LazyAttribute(lambda a: a.one + ' two') - - class TestFactory(TestObjectFactory): - three = 'three' - four = declarations.LazyAttribute(lambda a: a.three + ' four') - - test_object = TestFactory.build() - self.assertEqual(test_object.one, 'one') - self.assertEqual(test_object.two, 'one two') - self.assertEqual(test_object.three, 'three') - self.assertEqual(test_object.four, 'three four') - def testInheritanceWithSequence(self): """Tests that sequence IDs are shared between parent and son.""" class TestObjectFactory(base.Factory): @@ -275,36 +77,6 @@ class FactoryTestCase(unittest.TestCase): ones = set([x.one for x in (parent, alt_parent, sub, alt_sub)]) self.assertEqual(4, len(ones)) - def testDualInheritance(self): - class TestObjectFactory(base.Factory): - one = 'one' - - class TestOtherFactory(base.Factory): - FACTORY_FOR = TestObject - two = 'two' - four = 'four' - - class TestFactory(TestObjectFactory, TestOtherFactory): - three = 'three' - - obj = TestFactory.build(two=2) - self.assertEqual('one', obj.one) - self.assertEqual(2, obj.two) - self.assertEqual('three', obj.three) - self.assertEqual('four', obj.four) - - def testSetCreationFunction(self): - def creation_function(class_to_create, **kwargs): - return "This doesn't even return an instance of {0}".format(class_to_create.__name__) - - class TestModelFactory(base.Factory): - pass - - TestModelFactory.set_creation_function(creation_function) - - test_object = TestModelFactory.create() - self.assertEqual(test_object, "This doesn't even return an instance of TestModel") - class FactoryDefaultStrategyTestCase(unittest.TestCase): def setUp(self): self.default_strategy = base.Factory.default_strategy @@ -332,196 +104,6 @@ class FactoryDefaultStrategyTestCase(unittest.TestCase): self.assertEqual(test_model.one, 'one') self.assertTrue(test_model.id) - def testSubFactory(self): - class TestModel2(FakeDjangoModel): - pass - - class TestModelFactory(base.Factory): - FACTORY_FOR = TestModel - one = 3 - - class TestModel2Factory(base.Factory): - FACTORY_FOR = TestModel2 - two = declarations.SubFactory(TestModelFactory, one=1) - - test_model = TestModel2Factory(two__one=4) - self.assertEqual(4, test_model.two.one) - self.assertEqual(1, test_model.id) - self.assertEqual(1, test_model.two.id) - - def testSubFactoryWithLazyFields(self): - class TestModel2(FakeDjangoModel): - pass - - class TestModelFactory(base.Factory): - FACTORY_FOR = TestModel - - class TestModel2Factory(base.Factory): - FACTORY_FOR = TestModel2 - two = declarations.SubFactory(TestModelFactory, - one=declarations.Sequence(lambda n: 'x%sx' % n), - two=declarations.LazyAttribute( - lambda o: '%s%s' % (o.one, o.one))) - - test_model = TestModel2Factory(one=42) - self.assertEqual('x0x', test_model.two.one) - self.assertEqual('x0xx0x', test_model.two.two) - - def testSubFactoryOverriding(self): - class TestObject(object): - def __init__(self, **kwargs): - for k, v in kwargs.iteritems(): - setattr(self, k, v) - - class TestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - class WrappingTestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - wrapped = declarations.SubFactory(TestObjectFactory, two=2, four=4) - wrapped__two = 4 - wrapped__three = 3 - - wrapping = WrappingTestObjectFactory.build() - self.assertEqual(wrapping.wrapped.two, 4) - self.assertEqual(wrapping.wrapped.three, 3) - self.assertEqual(wrapping.wrapped.four, 4) - - - def testNestedSubFactory(self): - """Test nested sub-factories.""" - - class TestObject(object): - def __init__(self, **kwargs): - for k, v in kwargs.iteritems(): - setattr(self, k, v) - - class TestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - class WrappingTestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - wrapped = declarations.SubFactory(TestObjectFactory) - wrapped_bis = declarations.SubFactory(TestObjectFactory, one=1) - - class OuterWrappingTestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - wrap = declarations.SubFactory(WrappingTestObjectFactory, wrapped__two=2) - - outer = OuterWrappingTestObjectFactory.build() - self.assertEqual(outer.wrap.wrapped.two, 2) - self.assertEqual(outer.wrap.wrapped_bis.one, 1) - - def testNestedSubFactoryWithOverriddenSubFactories(self): - """Test nested sub-factories, with attributes overridden with subfactories.""" - - class TestObject(object): - def __init__(self, **kwargs): - for k, v in kwargs.iteritems(): - setattr(self, k, v) - - class TestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - two = 'two' - - class WrappingTestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - wrapped = declarations.SubFactory(TestObjectFactory) - friend = declarations.LazyAttribute(lambda o: o.wrapped.two.four + 1) - - class OuterWrappingTestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - wrap = declarations.SubFactory(WrappingTestObjectFactory, - wrapped__two=declarations.SubFactory(TestObjectFactory, four=4)) - - outer = OuterWrappingTestObjectFactory.build() - self.assertEqual(outer.wrap.wrapped.two.four, 4) - self.assertEqual(outer.wrap.friend, 5) - - def testSubFactoryAndInheritance(self): - """Test inheriting from a factory with subfactories, overriding.""" - class TestObject(object): - def __init__(self, **kwargs): - for k, v in kwargs.iteritems(): - setattr(self, k, v) - - class TestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - two = 'two' - - class WrappingTestObjectFactory(base.Factory): - FACTORY_FOR = TestObject - - wrapped = declarations.SubFactory(TestObjectFactory) - friend = declarations.LazyAttribute(lambda o: o.wrapped.two + 1) - - class ExtendedWrappingTestObjectFactory(WrappingTestObjectFactory): - wrapped__two = 4 - - wrapping = ExtendedWrappingTestObjectFactory.build() - self.assertEqual(wrapping.wrapped.two, 4) - self.assertEqual(wrapping.friend, 5) - - def testDiamondSubFactory(self): - """Tests the case where an object has two fields with a common field.""" - class InnerMost(object): - def __init__(self, a, b): - self.a = a - self.b = b - - class SideA(object): - def __init__(self, inner_from_a): - self.inner_from_a = inner_from_a - - class SideB(object): - def __init__(self, inner_from_b): - self.inner_from_b = inner_from_b - - class OuterMost(object): - def __init__(self, foo, side_a, side_b): - self.foo = foo - self.side_a = side_a - self.side_b = side_b - - class InnerMostFactory(base.Factory): - FACTORY_FOR = InnerMost - a = 15 - b = 20 - - class SideAFactory(base.Factory): - FACTORY_FOR = SideA - inner_from_a = declarations.SubFactory(InnerMostFactory, a=20) - - class SideBFactory(base.Factory): - FACTORY_FOR = SideB - inner_from_b = declarations.SubFactory(InnerMostFactory, b=15) - - class OuterMostFactory(base.Factory): - FACTORY_FOR = OuterMost - - foo = 30 - side_a = declarations.SubFactory(SideAFactory, - inner_from_a__a=declarations.LazyContainerAttribute(lambda obj, containers: containers[1].foo * 2)) - side_b = declarations.SubFactory(SideBFactory, - inner_from_b=declarations.LazyContainerAttribute(lambda obj, containers: containers[0].side_a.inner_from_a)) - - outer = OuterMostFactory.build() - self.assertEqual(outer.foo, 30) - self.assertEqual(outer.side_a.inner_from_a, outer.side_b.inner_from_b) - self.assertEqual(outer.side_a.inner_from_a.a, outer.foo * 2) - self.assertEqual(outer.side_a.inner_from_a.b, 20) - - outer = OuterMostFactory.build(side_a__inner_from_a__b = 4) - self.assertEqual(outer.foo, 30) - self.assertEqual(outer.side_a.inner_from_a, outer.side_b.inner_from_b) - self.assertEqual(outer.side_a.inner_from_a.a, outer.foo * 2) - self.assertEqual(outer.side_a.inner_from_a.b, 4) - def testStubStrategy(self): base.Factory.default_strategy = base.STUB_STRATEGY |