import logging import os.path import shutil import unittest import ruamel.yaml import lesana class testCollectionLoading(unittest.TestCase): def tearDown(self): shutil.rmtree(os.path.join(self.collection.basedir, '.lesana')) def test_empty(self): self.collection = lesana.Collection('tests/data/empty') self.assertEqual(self.collection.settings, {}) self.collection.update_cache() self.assertIsNotNone(self.collection.cache) self.assertIsNotNone(self.collection.stemmer) def test_simple(self): self.collection = lesana.Collection('tests/data/simple') self.assertIsNotNone(self.collection.settings) self.assertEqual(self.collection.settings['name'], "Simple lesana collection") self.assertEqual(len(self.collection.settings['fields']), 3) self.collection.update_cache() self.assertIsNotNone(self.collection.cache) self.assertIsNotNone(self.collection.stemmer) def test_wrong_language(self): # This loads a collection with an invalid value in lang with self.assertLogs(level=logging.WARNING) as cm: self.collection = lesana.Collection('tests/data/wrong') self.assertEqual(len(cm.output), 1) self.assertIn("Invalid language", cm.output[0]) # The collection will default to english, but should still work. self.collection.update_cache() self.assertIsNotNone(self.collection.settings) self.assertIsNotNone(self.collection.cache) self.assertIsNotNone(self.collection.stemmer) def test_unsafe(self): self.collection = lesana.Collection('tests/data/simple') self.collection.safe = False self.collection.update_cache() class testEntries(unittest.TestCase): def setUp(self): self.collection = lesana.Collection('tests/data/simple') self.basepath = 'tests/data/simple/items' def test_simple(self): fname = '085682ed-6792-499d-a3ab-9aebd683c011.yaml' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.load(fp) entry = lesana.Entry(self.collection, data=data, fname=fname) self.assertEqual(entry.idterm, 'Q'+data['uid']) self.assertEqual(len(entry.indexed_fields), 3) fname = '11189ee47ddf4796b718a483b379f976.yaml' uid = '11189ee47ddf4796b718a483b379f976' with open(os.path.join(self.basepath, fname)) as fp: data = ruamel.yaml.load(fp) entry = lesana.Entry(self.collection, data=data, fname=fname) self.assertEqual(entry.idterm, 'Q'+uid) self.assertEqual(len(entry.indexed_fields), 3)