| Current File : /home/jvzmxxx/wiki/extensions/EventLogging/server/tests/test_handlers.py |
# -*- coding: utf-8 -*-
"""
eventlogging unit tests
~~~~~~~~~~~~~~~~~~~~~~~
This module contains tests for :module:`eventlogging.handlers`.
"""
from __future__ import unicode_literals
import os
import unittest
import eventlogging
import eventlogging.handlers
import eventlogging.factory
def echo_writer(uri, **kwargs):
values = []
while 1:
value = (yield values)
values.append(value)
def repeater(uri, value, **kwargs):
while 1:
yield value
class HandlerFactoryTestCase(unittest.TestCase):
"""Test case for URI-based reader/writer factories."""
def setUp(self):
"""Register test handlers."""
eventlogging.writes('test')(echo_writer)
eventlogging.reads('test')(repeater)
def tearDown(self):
"""Unregister test handlers."""
eventlogging.factory._writers.pop('test')
eventlogging.factory._readers.pop('test')
def test_get_writer(self):
"""``get_writer`` returns a scheme-appropriate primed coroutine."""
writer = eventlogging.get_writer('test://localhost')
self.assertEqual(writer.send(123), [123])
def test_get_reader(self):
"""``get_reader`` returns the right generator for the URI scheme."""
reader = eventlogging.get_reader('test://localhost/?value=secret')
self.assertEqual(next(reader), 'secret')
class PluginTestCase(unittest.TestCase):
"""Test case for the plug-in loader."""
def setUp(self):
"""Determine path to mock plugin directory."""
script_path = os.path.dirname(os.path.abspath(__file__))
self.plugin_path = os.path.join(script_path, 'plugins')
def test_load_plugins(self):
"""`get_plugins` loads plug-ins from an arbitrary path."""
eventlogging.handlers.load_plugins(self.plugin_path)
reader = eventlogging.get_reader('mock://localhost')
self.assertEqual(next(reader), 'value generated by plug-in')