Get some tests in place for the MongoDB stuff

master
Bradlee Speice 2016-08-16 17:21:09 -04:00
parent 4c1ab63118
commit 982b9dcb47
6 changed files with 82 additions and 4 deletions

View File

@ -5,7 +5,8 @@ python:
- "3.4"
- "3.5"
before_install:
- export TZ=America/New_York
services:
- mongodb
install: pip install -r requirements.txt
script: python setup.py test

7
conftest.py Normal file
View File

@ -0,0 +1,7 @@
def pytest_configure(config):
import sys
sys._called_from_test = True
def pytest_unconfigure(config):
del sys._called_from_test

View File

@ -1,4 +1,16 @@
import os
import sys
IS_TRAVIS = 'TRAVIS_BUILD_NUMBER' in os.environ
IS_PYTEST = hasattr(sys, '_called_from_test')
TEST = IS_PYTEST or IS_TRAVIS
USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
MONGO_HOST = 'localhost'
MONGO_PORT = 27017
MONGO_DATABASE = 'metrik'
if TEST:
MONGO_DATABASE = 'metrik'
else:
MONGO_DATABASE = 'metrik-test'

View File

@ -19,7 +19,6 @@ class MongoTarget(Target):
def persist(self, dict_object):
id_dict = dict_object
id_dict['_id'] = self.id
id_dict['_retrieved'] = datetime.now()
return self.collection.insert_one(id_dict).inserted_id
def retrieve(self):

25
test/mongo_test.py Normal file
View File

@ -0,0 +1,25 @@
from unittest import TestCase
from pymongo import MongoClient
from metrik.conf import MONGO_DATABASE, MONGO_PORT, MONGO_HOST
from metrik.targets.mongo_target import MongoTarget
class MongoTest(TestCase):
def tearDown(self):
super(MongoTest, self).tearDown()
client = MongoClient(MONGO_HOST, MONGO_PORT)
client.drop_database(MONGO_DATABASE)
class MongoTestTest(MongoTest):
# Test that the database is dropped correctly after each test
def test_round1(self):
t = MongoTarget('consistent_collection', 'consistent_id')
assert not t.exists()
t.persist({'a': 'b'})
def test_round2(self):
t = MongoTarget('consistent_collection', 'consistent_id')
assert not t.exists()
t.persist({'a': 'b'})

View File

@ -0,0 +1,34 @@
from pymongo import MongoClient
from random import randint
from metrik.targets.mongo_target import MongoTarget
from metrik.conf import MONGO_DATABASE, MONGO_HOST, MONGO_PORT
from test.mongo_test import MongoTest
class MongoTargetTest(MongoTest):
def test_exists(self):
collection = 'test_collection'
id = 1234
t = MongoTarget(collection, id)
assert not t.exists()
t.persist({'a': 'b'})
assert t.exists()
db = MongoClient(MONGO_HOST, MONGO_PORT)[MONGO_DATABASE]
db_collection = db[collection]
db_collection.remove(id)
assert not t.exists()
def test_persist_retrieve(self):
collection = 'test_collection'
id = 1234
t = MongoTarget(collection, id)
d = {str(k): randint(0, 9999) for k in range(20)}
t.persist(d)
u = MongoTarget(collection, id)
assert u.retrieve() == d