You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senpy/tests/test_plugins.py

102 lines
2.9 KiB
Python

#!/bin/env python
import os
import logging
import pickle
import shutil
import tempfile
import json
import os
from unittest import TestCase
from flask import Flask
from senpy.models import Results, Entry
from senpy.plugins import SentimentPlugin, ShelfMixin
class ShelfDummyPlugin(SentimentPlugin, ShelfMixin):
def activate(self, *args, **kwargs):
if 'counter' not in self.sh:
self.sh['counter'] = 0
self.save()
9 years ago
def deactivate(self, *args, **kwargs):
self.save()
9 years ago
def analyse(self, *args, **kwargs):
self.sh['counter'] = self.sh['counter']+1
e = Entry()
e.nif__isString = self.sh['counter']
r = Results()
r.entries.append(e)
return r
9 years ago
class PluginsTest(TestCase):
9 years ago
def tearDown(self):
if os.path.exists(self.shelf_dir):
shutil.rmtree(self.shelf_dir)
9 years ago
if os.path.isfile(self.shelf_file):
os.remove(self.shelf_file)
def setUp(self):
self.shelf_dir = tempfile.mkdtemp()
self.shelf_file = os.path.join(self.shelf_dir, "shelf")
def test_shelf_file(self):
a = ShelfDummyPlugin(info={'name': 'default_shelve_file',
'version': 'test'})
assert os.path.dirname(a.shelf_file) == tempfile.gettempdir()
a.activate()
assert os.path.isfile(a.shelf_file)
os.remove(a.shelf_file)
def test_shelf(self):
9 years ago
''' A shelf is created and the value is stored '''
a = ShelfDummyPlugin(info={'name': 'shelve',
9 years ago
'version': 'test',
'shelf_file': self.shelf_file})
assert a.sh == {}
a.activate()
assert a.sh == {'counter': 0}
9 years ago
assert a.shelf_file == self.shelf_file
a.sh['a'] = 'fromA'
assert a.sh['a'] == 'fromA'
a.save()
sh = pickle.load(open(self.shelf_file, 'rb'))
9 years ago
assert sh['a'] == 'fromA'
def test_dummy_shelf(self):
a = ShelfDummyPlugin(info={'name': 'DummyShelf',
'shelf_file': self.shelf_file,
'version': 'test'})
a.activate()
res1 = a.analyse(input=1)
assert res1.entries[0].nif__isString == 1
res2 = a.analyse(input=1)
assert res2.entries[0].nif__isString == 2
9 years ago
def test_two(self):
''' Reusing the values of a previous shelf '''
a = ShelfDummyPlugin(info={'name': 'shelve',
9 years ago
'version': 'test',
'shelf_file': self.shelf_file})
a.activate()
9 years ago
print('Shelf file: %s' % a.shelf_file)
a.sh['a'] = 'fromA'
a.save()
9 years ago
b = ShelfDummyPlugin(info={'name': 'shelve',
9 years ago
'version': 'test',
'shelf_file': self.shelf_file})
b.activate()
assert b.sh['a'] == 'fromA'
9 years ago
b.sh['a'] = 'fromB'
assert b.sh['a'] == 'fromB'