def testTagsView(self): db = new_test_database() tags = TagsView(db) alltags = tags.list_all_tags() self.assertEqual(set(t.name for t in alltags), set(TAGS.keys())) alltags = tags.list_all_tags_by_n_pages() self.assertEqual(set(t.name for t in alltags), set(TAGS.keys())) self.assertEqual(tags.n_list_all_tags(), len(TAGS)) for name in TAGS: indextag = tags.lookup_by_tagname(name) self.assertEqual(indextag.name, name) pages = tags.list_pages(name) self.assertEqual([p.name for p in pages], TAGS[name]) self.assertEqual(tags.n_list_pages(name), len(TAGS[name])) mytags = tags.list_tags(Path('Bar')) self.assertEqual([t.name for t in mytags], ['tag1', 'tag2']) self.assertEqual(tags.n_list_tags(Path('Bar')), 2) mytag = tags.lookup_by_tagname('tag1') mytags = tags.list_intersecting_tags([mytag]) self.assertEqual([t.name for t in mytags], ['tag1', 'tag2']) with self.assertRaises(IndexNotFoundError): tags.list_pages('foooo')
def testTagsTreePathMethods(self): db = new_test_database() mockindex = tests.MockObject() mockindex._db = db mockindex.update_iter = tests.MockObject() mockindex.update_iter.pages = tests.MockObject() mockindex.update_iter.tags = tests.MockObject() model = TagsTreeModelMixin(mockindex, tags=('tag1', 'tag2')) tags = TagsView(db) # Test all pages for name, treepath in TREEPATHS_TAGS_12: myiter = model.get_mytreeiter(treepath) self.assertEqual(myiter.row['name'], name) self.assertEqual(myiter.treepath, treepath) if len(treepath) == 1: tag = tags.lookup_by_tagname(name) my_treepaths = model.find_all(tag) else: my_treepaths = model.find_all(Path(name)) self.assertIn(treepath, my_treepaths) for treepath in my_treepaths: myiter = model.get_mytreeiter(treepath) self.assertEqual(myiter.row['name'], name) # Test no more data than above treepaths = list(self.walk_treepaths(model)) self.assertEqual(treepaths, list(TREEPATHS_TAGS_12)) # Test non-existing p = model.get_mytreeiter((1, 2, 3, 4, 5)) self.assertIsNone(p) self.assertRaises(IndexNotFoundError, model.find_all, Path('non-existing-page'))