1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
from jToolkit.data import indexer
import os
def clear_directory(directory):
if os.path.exists(directory):
for filename in os.listdir(directory):
filepath = os.path.join(directory, filename)
if os.path.isdir(filepath):
clear_directory(filepath)
else:
os.remove(filepath)
os.rmdir(directory)
class TestIndexer:
"""tests the standard Indexer"""
def setup_method(self, method):
self.indexdir = "%s.index" % method.__name__
clear_directory(self.indexdir)
self.indexer = indexer.Indexer(self)
self.searcher = indexer.Searcher(self.indexdir)
def teardown_method(self, method):
self.searcher.close()
clear_directory(self.indexdir)
def test_create_index(self):
self.indexer.startIndex()
self.indexer.commitIndex()
def test_delete_index(self):
assert self.indexer.deleteIndex() == True
def test_add_records(self):
self.indexer.startIndex()
records = [{"species": "bunny", "name": "Benjamin"}, {"species": "leopard", "name": "Standard"}, {"species": "complex creature", "names": "Bob Ann"}]
self.indexer.indexFields(records)
self.indexer.commitIndex()
assert self.searcher.searchField("species", "bunny", "name") == [{"name": "Benjamin"}]
assert self.searcher.searchField("name", "Standard", "species") == [{"species": "leopard"}]
def test_search_all(self):
self.test_add_records()
assert self.searcher.searchAllFields("bunny",["name"]) == [{'name':'Benjamin'}]
assert self.searcher.searchAllFields("bunny",(["name"],["species"])) == [{'name':'Benjamin'}]
assert self.searcher.searchAllFields("complex",(["name"],["names"])) == [{'names':'Bob Ann'}]
def test_delete_records(self):
self.test_add_records()
assert self.searcher.deleteDoc({"species": "bunny"}) == 1
assert self.searcher.searchField("species", "bunny", "name") == []
assert self.searcher.searchField("name", "Standard", "species") == [{"species": "leopard"}]
class TestIndexerProcess(TestIndexer):
"""tests the Indexer proxying through to another Indexer"""
def setup_class(self):
indexer.OldIndexer = indexer.Indexer
indexer.OldSearcher = indexer.Searcher
indexer.LaunchIndexProcess()
indexer.INSIDE_APACHE = True
def teardown_class(self):
indexer.Indexer = indexer.OldIndexer
indexer.Searcher = indexer.OldSearcher
|