Exemple #1
0
    def test_cleanup(self):
        ids = [ObjectId() for x in range(3)]
        cleanup_ids = copy(ids)
        cleanup_ids.reverse()

        def insert_results(*args, **kwargs):
            return ids.pop(0)

        self.collection.insert = Mock(side_effect=insert_results)

        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "age": 32
        })
        factory.document('admin', {
            "first_name": 'Mick',
            "last_name": 'Jones',
            "age": 33
        })

        for x in range(2):
            factory.create()
        factory.create('admin')

        factory.cleanup()

        expected_calls = [call(oid) for oid in cleanup_ids]
        self.assertEqual(self.collection.remove.mock_calls, expected_calls)
        self.collection.reset_mock()
        factory.cleanup()
        self.assertFalse(self.collection.remove.called)
Exemple #2
0
    def test_create_with_overrides(self):
        to_return = {
            "_id": ObjectId(),
            "first_name": "Mike",
            "last_name": "Smith",
            "age": 32
        }

        self.collection.insert = Mock(return_value=to_return["_id"])
        self.collection.find_one = Mock(return_value=to_return)

        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "age": 32
        })

        created = factory.create(first_name='Mike')

        self.collection.insert.assert_called_with({
            "first_name": "Mike",
            "last_name": "Smith",
            "age": 32
        })
        self.collection.find_one.assert_called_with(to_return["_id"])
        self.assertDictEqual(created, to_return)
Exemple #3
0
    def test_create_with_additional_fields(self):
        to_return = {
            "_id": ObjectId(),
            "first_name": "John",
            "last_name": "Smith",
            "age": 32,
            "gender": "male"
        }

        self.collection.insert = Mock(return_value=to_return["_id"])
        self.collection.find_one = Mock(return_value=to_return)

        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "age": 32
        })

        created = factory.create(gender='male')

        self.collection.insert.assert_called_with({
            "first_name": "John",
            "last_name": "Smith",
            "age": 32,
            "gender": "male"
        })
        self.collection.find_one.assert_called_with(to_return["_id"])
        self.assertDictEqual(created, to_return)
Exemple #4
0
    def test_cleanup_nothing_to_do(self):
        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "age": 32
        })

        factory.cleanup()

        expected_calls = []
        self.assertEqual(self.collection.remove.mock_calls, expected_calls)
Exemple #5
0
 def test_create_with_keyword_overrides(self):
     scary_overrides = {
         "document": 1,
         "factory": 2,
         "name": 3,
         "number": 4
     }
     self.collection.find_one = Mock()
     factory = Factory(self.collection)
     factory.default({})
     factory.create(**scary_overrides)
     self.collection.insert.assert_called_with(scary_overrides)
Exemple #6
0
    def test_build_with_overrides(self):
        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "age": 32
        })

        self.assertDictEqual(factory.build(first_name='Mike', age=45), {
            "first_name": "Mike",
            "last_name": "Smith",
            "age": 45
        })
Exemple #7
0
    def test_build_default_document(self):
        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "age": 32
        })

        self.assertDictEqual(factory.build(), {
            "first_name": "John",
            "last_name": "Smith",
            "age": 32
        })
Exemple #8
0
 def test_build_with_keyword_overrides(self):
     # Make sure that if the user's override field names potentially
     # clash with internal variable names (document, name, factory
     # etc.) they don't break things.
     factory = Factory(self.collection)
     factory.default({})
     scary_overrides = {
         "document": 1,
         "factory": 2,
         "name": 3,
         "number": 4
     }
     self.assertDictEqual(factory.build(**scary_overrides),
                          scary_overrides)
Exemple #9
0
    def test_build_with_function_and_overrides(self):
        def full_name(doc, *args):
            return "%s %s" % (doc['first_name'], doc['last_name'])

        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "full_name": full_name,
            "age": 32
        })

        self.assertDictEqual(factory.build(first_name='Mike', age=45), {
            "first_name": "Mike",
            "last_name": "Smith",
            "full_name": "Mike Smith",
            "age": 45
        })
Exemple #10
0
    def test_build_with_function_attrs(self):
        def full_name(doc, *args):
            return "%s %s" % (doc['first_name'], doc['last_name'])

        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "full_name": full_name,
            "age": 32
        })

        self.assertDictEqual(factory.build(), {
            "first_name": "John",
            "last_name": "Smith",
            "full_name": "John Smith",
            "age": 32
        })
Exemple #11
0
    def test_successive_builds_with_different_overrides(self):
        factory = Factory(self.collection)
        factory.default({
            "first_name": 'John',
            "last_name": 'Smith',
            "age": 32
        })

        self.assertDictEqual(factory.build(first_name='Mike', age=45), {
            "first_name": "Mike",
            "last_name": "Smith",
            "age": 45
        })

        self.assertDictEqual(factory.build(last_name='Jones'), {
            "first_name": "John",
            "last_name": "Jones",
            "age": 32
        })
Exemple #12
0
    def test_build_with_inheritance(self):
        factory = Factory(self.collection)
        factory.default({
            "location": lambda doc: "pittsburgh"
        })

        factory.document("smith", {"last_name": "Smith"}, parent="default")
        factory.document("bob", {
            "first_name": lambda doc: "Bob"},
            parent="smith")
        factory.document("mike", {
            "first_name": "Mike"},
            parent="smith")

        self.assertDictEqual(factory.build(), {"location":"pittsburgh"})
        self.assertDictEqual(factory.build("smith"), {
            "location": "pittsburgh",
            "last_name": "Smith"
        })
        self.assertDictEqual(factory.build("bob"), {
            "location": "pittsburgh",
            "last_name": "Smith",
            "first_name": "Bob"
        })
        self.assertDictEqual(factory.build("mike"), {
            "location": "pittsburgh",
            "last_name": "Smith",
            "first_name": "Mike"
        })

        # Lets also test the overrides still work
        self.assertDictEqual(factory.build("bob", last_name="jones"), {
            "location": "pittsburgh",
            "last_name": "jones",
            "first_name": "Bob"
        })
        self.assertDictEqual(factory.build("mike", other="thing"), {
            "location": "pittsburgh",
            "last_name": "Smith",
            "first_name": "Mike",
            "other": "thing"
        })
Exemple #13
0
    def test_build_default_with_traits(self):
        factory = Factory(self.collection)
        factory.trait("timestamped", {
            "created": lambda doc: datetime(2001, 1, 1, 1, 1, 1)
        })
        factory.trait("versioned", {
            "v": 3
        })
        factory.default({
            "wheels": 4,
            "make": lambda doc: "Mazda"
        }, traits=["timestamped", "versioned"])

        expected = {
            "wheels": 4,
            "make": "Mazda",
            "created": datetime(2001, 1, 1, 1, 1, 1),
            "v": 3
        }

        self.assertDictEqual(expected, factory.build())
Exemple #14
0
    def test_build_default_with_global_traits(self):
        traits = {}
        factory = Factory(self.collection, global_traits=traits)
        traits["timestamped"] = Trait({
            "created": lambda doc: datetime(2001, 1, 1, 1, 1, 1)
        })
        traits["versioned"] = Trait({
            "v": 3
        }, parent="timestamped")

        factory.default({
            "wheels": 4,
            "make": lambda doc: "Mazda"
        }, traits=["versioned"])

        expected = {
            "wheels": 4,
            "make": "Mazda",
            "created": datetime(2001, 1, 1, 1, 1, 1),
            "v": 3
        }

        self.assertDictEqual(expected, factory.build())