class TestMongoBackend(TestCase): def setUp(self): self.mongo_patcher = patch('track.backends.mongodb.MongoClient') self.addCleanup(self.mongo_patcher.stop) self.mongo_patcher.start() self.backend = MongoBackend() def test_mongo_backend(self): events = [{'test': 1}, {'test': 2}] self.backend.send(events[0]) self.backend.send(events[1]) # Check if we inserted events into the database calls = self.backend.collection.insert.mock_calls self.assertEqual(len(calls), 2) # Unpack the arguments and check if the events were used # as the first argument to collection.insert def first_argument(call): _, args, _ = call return args[0] self.assertEqual(events[0], first_argument(calls[0])) self.assertEqual(events[1], first_argument(calls[1]))
class TestMongoBackend(TestCase): def setUp(self): self.mongo_patcher = patch("track.backends.mongodb.MongoClient") self.addCleanup(self.mongo_patcher.stop) self.mongo_patcher.start() self.backend = MongoBackend() def test_mongo_backend(self): events = [{"test": 1}, {"test": 2}] self.backend.send(events[0]) self.backend.send(events[1]) # Check if we inserted events into the database calls = self.backend.collection.insert.mock_calls self.assertEqual(len(calls), 2) # Unpack the arguments and check if the events were used # as the first argument to collection.insert def first_argument(call): _, args, _ = call return args[0] self.assertEqual(events[0], first_argument(calls[0])) self.assertEqual(events[1], first_argument(calls[1]))
class TestMongoBackend(TestCase): def setUp(self): # Use a random database name to prevent problems with tests running # simultenousely against the same mongo instance database = '_track_backends_mongodb_{0}'.format(uuid4().hex) collection = '_test' self.connection = pymongo.MongoClient() self.database = self.connection[database] self.collection = self.database[collection] # During tests, wait until mongo acknowledged the write write_concern = 1 self.backend = MongoBackend( database=database, collection=collection, w=write_concern ) def test_mongo_backend(self): self.backend.send({'test': 1}) self.backend.send({'test': 2}) # Get all the objects in the db ignoring _id results = list(self.collection.find({}, {'_id': False})) self.assertEqual(len(results), 2) self.assertEqual(results, [{'test': 1}, {'test': 2}]) def tearDown(self): self.connection.drop_database(self.database)