mirror of
https://github.com/bspeice/metrik
synced 2024-11-23 15:48:10 -05:00
Get some tests in place for the MongoDB stuff
This commit is contained in:
parent
4c1ab63118
commit
982b9dcb47
@ -5,7 +5,8 @@ python:
|
|||||||
- "3.4"
|
- "3.4"
|
||||||
- "3.5"
|
- "3.5"
|
||||||
|
|
||||||
before_install:
|
services:
|
||||||
- export TZ=America/New_York
|
- mongodb
|
||||||
|
|
||||||
install: pip install -r requirements.txt
|
install: pip install -r requirements.txt
|
||||||
script: python setup.py test
|
script: python setup.py test
|
7
conftest.py
Normal file
7
conftest.py
Normal 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
|
@ -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"
|
USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
|
||||||
MONGO_HOST = 'localhost'
|
MONGO_HOST = 'localhost'
|
||||||
MONGO_PORT = 27017
|
MONGO_PORT = 27017
|
||||||
MONGO_DATABASE = 'metrik'
|
|
||||||
|
if TEST:
|
||||||
|
MONGO_DATABASE = 'metrik'
|
||||||
|
else:
|
||||||
|
MONGO_DATABASE = 'metrik-test'
|
||||||
|
@ -19,7 +19,6 @@ class MongoTarget(Target):
|
|||||||
def persist(self, dict_object):
|
def persist(self, dict_object):
|
||||||
id_dict = dict_object
|
id_dict = dict_object
|
||||||
id_dict['_id'] = self.id
|
id_dict['_id'] = self.id
|
||||||
id_dict['_retrieved'] = datetime.now()
|
|
||||||
return self.collection.insert_one(id_dict).inserted_id
|
return self.collection.insert_one(id_dict).inserted_id
|
||||||
|
|
||||||
def retrieve(self):
|
def retrieve(self):
|
||||||
|
25
test/mongo_test.py
Normal file
25
test/mongo_test.py
Normal 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'})
|
34
test/targets/test_mongo_target.py
Normal file
34
test/targets/test_mongo_target.py
Normal 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
|
Loading…
Reference in New Issue
Block a user