summaryrefslogtreecommitdiff
path: root/tests.py
diff options
context:
space:
mode:
authorRaphaël Barrois <raphael.barrois@polyconseil.fr>2011-05-16 11:32:05 +0200
committerRaphaël Barrois <raphael.barrois@polyconseil.fr>2011-05-16 11:32:05 +0200
commitefeba1bae0a04e384d49ba9081a013559e9dee82 (patch)
tree932ce7f4dfe7b3f64353bff67b65535fa87354fe /tests.py
parent869e18ea58b7853ba20a8fdc388337ca27f006d6 (diff)
downloadfactory-boy-efeba1bae0a04e384d49ba9081a013559e9dee82.tar
factory-boy-efeba1bae0a04e384d49ba9081a013559e9dee82.tar.gz
Move tests.
Signed-off-by: Raphaël Barrois <raphael.barrois@polyconseil.fr>
Diffstat (limited to 'tests.py')
-rw-r--r--tests.py311
1 files changed, 0 insertions, 311 deletions
diff --git a/tests.py b/tests.py
deleted file mode 100644
index bc534a6..0000000
--- a/tests.py
+++ /dev/null
@@ -1,311 +0,0 @@
-import unittest
-
-from factory import Factory, StubFactory, LazyAttribute, Sequence, LazyAttributeSequence, lazy_attribute, sequence, lazy_attribute_sequence
-from factory import CREATE_STRATEGY, BUILD_STRATEGY, STUB_STRATEGY
-
-class TestObject(object):
- def __init__(self, one=None, two=None, three=None, four=None):
- self.one = one
- self.two = two
- self.three = three
- self.four = four
-
-class FakeDjangoModel(object):
- class FakeDjangoManager(object):
- def create(self, **kwargs):
- fake_model = FakeDjangoModel(**kwargs)
- fake_model.id = 1
- return fake_model
-
- objects = FakeDjangoManager()
-
- def __init__(self, **kwargs):
- for name, value in kwargs.iteritems():
- setattr(self, name, value)
- self.id = None
-
-class TestModel(FakeDjangoModel):
- pass
-
-class FactoryTestCase(unittest.TestCase):
- def testAttribute(self):
- class TestObjectFactory(Factory):
- one = 'one'
-
- test_object = TestObjectFactory.build()
- self.assertEqual(test_object.one, 'one')
-
- def testSequence(self):
- class TestObjectFactory(Factory):
- one = Sequence(lambda n: 'one' + n)
- two = 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 testLazyAttribute(self):
- class TestObjectFactory(Factory):
- one = LazyAttribute(lambda a: 'abc' )
- two = 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(Factory):
- one = LazyAttribute(lambda a: a.does_not_exist )
-
- try:
- TestObjectFactory()
- self.fail()
- except AttributeError as e:
- self.assertTrue('does not exist' in str(e))
-
- def testLazyAttributeSequence(self):
- class TestObjectFactory(Factory):
- one = LazyAttributeSequence(lambda a, n: 'abc' + n)
- two = 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(Factory):
- @lazy_attribute
- def one(a):
- return 'one'
-
- test_object = TestObjectFactory.build()
- self.assertEqual(test_object.one, 'one')
-
- def testSequenceDecorator(self):
- class TestObjectFactory(Factory):
- @sequence
- def one(n):
- return 'one' + n
-
- test_object = TestObjectFactory.build()
- self.assertEqual(test_object.one, 'one0')
-
- def testLazyAttributeSequenceDecorator(self):
- class TestObjectFactory(Factory):
- @lazy_attribute_sequence
- def one(a, n):
- return 'one' + n
- @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(Factory):
- one = Sequence(lambda n: 'one' + n)
- two = 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(Factory):
- one = 'one'
-
- test_model = TestModelFactory.create()
- self.assertEqual(test_model.one, 'one')
- self.assertTrue(test_model.id)
-
- def testInheritance(self):
- class TestObjectFactory(Factory):
- one = 'one'
- two = LazyAttribute(lambda a: a.one + ' two')
-
- class TestObjectFactory2(TestObjectFactory):
- FACTORY_FOR = TestObject
-
- three = 'three'
- four = 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')
-
- def testInheritanceWithInheritedClass(self):
- class TestObjectFactory(Factory):
- one = 'one'
- two = LazyAttribute(lambda a: a.one + ' two')
-
- class TestFactory(TestObjectFactory):
- three = 'three'
- four = 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 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(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 = Factory.default_strategy
-
- def tearDown(self):
- Factory.default_strategy = self.default_strategy
-
- def testBuildStrategy(self):
- Factory.default_strategy = BUILD_STRATEGY
-
- class TestModelFactory(Factory):
- one = 'one'
-
- test_model = TestModelFactory()
- self.assertEqual(test_model.one, 'one')
- self.assertFalse(test_model.id)
-
- def testCreateStrategy(self):
- # Default default_strategy
-
- class TestModelFactory(Factory):
- one = 'one'
-
- test_model = TestModelFactory()
- self.assertEqual(test_model.one, 'one')
- self.assertTrue(test_model.id)
-
- def testStubStrategy(self):
- Factory.default_strategy = STUB_STRATEGY
-
- class TestModelFactory(Factory):
- one = 'one'
-
- test_model = TestModelFactory()
- self.assertEqual(test_model.one, 'one')
- self.assertFalse(hasattr(test_model, 'id')) # We should have a plain old object
-
- def testUnknownStrategy(self):
- Factory.default_strategy = 'unknown'
-
- class TestModelFactory(Factory):
- one = 'one'
-
- self.assertRaises(Factory.UnknownStrategy, TestModelFactory)
-
- def testStubWithNonStubStrategy(self):
- class TestModelFactory(StubFactory):
- one = 'one'
-
- TestModelFactory.default_strategy = CREATE_STRATEGY
-
- self.assertRaises(StubFactory.UnsupportedStrategy, TestModelFactory)
-
-class FactoryCreationTestCase(unittest.TestCase):
- def testFactoryFor(self):
- class TestFactory(Factory):
- FACTORY_FOR = TestObject
-
- self.assertTrue(isinstance(TestFactory.build(), TestObject))
-
- def testAutomaticAssociatedClassDiscovery(self):
- class TestObjectFactory(Factory):
- pass
-
- self.assertTrue(isinstance(TestObjectFactory.build(), TestObject))
-
- def testStub(self):
- class TestFactory(StubFactory):
- pass
-
- self.assertEqual(TestFactory.default_strategy, STUB_STRATEGY)
-
- def testInheritanceWithStub(self):
- class TestObjectFactory(StubFactory):
- pass
-
- class TestFactory(TestObjectFactory):
- pass
-
- self.assertEqual(TestFactory.default_strategy, STUB_STRATEGY)
-
- def testCustomCreation(self):
- class TestModelFactory(Factory):
- @classmethod
- def _prepare(cls, create, **kwargs):
- kwargs['four'] = 4
- return super(TestModelFactory, cls)._prepare(create, **kwargs)
-
- b = TestModelFactory.build(one=1)
- self.assertEqual(1, b.one)
- self.assertEqual(4, b.four)
- self.assertEqual(None, b.id)
-
- c = TestModelFactory(one=1)
- self.assertEqual(1, c.one)
- self.assertEqual(4, c.four)
- self.assertEqual(1, c.id)
-
- # Errors
-
- def testNoAssociatedClassWithAutodiscovery(self):
- try:
- class TestFactory(Factory):
- pass
- self.fail()
- except Factory.AssociatedClassError as e:
- self.assertTrue('autodiscovery' in str(e))
-
- def testNoAssociatedClassWithoutAutodiscovery(self):
- try:
- class Test(Factory):
- pass
- self.fail()
- except Factory.AssociatedClassError as e:
- self.assertTrue('autodiscovery' not in str(e))
-
- def testInheritanceFromMoreThanOneFactory(self):
- class TestObjectFactory(StubFactory):
- pass
-
- class TestModelFactory(TestObjectFactory):
- pass
-
- try:
- class TestFactory(TestObjectFactory, TestModelFactory):
- pass
- self.fail()
- except RuntimeError as e:
- self.assertTrue('one Factory' in str(e))
-
-if __name__ == '__main__':
- unittest.main()