def test_search(self): setRoles(self.portal, TEST_USER_ID, ('Manager',)) library_obj = self.portal['library'] criteria = library.get_criteria(library_obj) searchArgs = library.get_search_args(library_obj) fakeForm = {} searchArgs.update( library.get_form_fields_by_keys(fakeForm, criteria.keys())) catalog = getToolByName(self.portal, 'portal_catalog') indexContents = library.get_index_contents(catalog, criteria, searchArgs) availableValues = library.get_availible_values(criteria, indexContents) # TODO: assert brains = catalog(searchArgs) groupBy = 'rmMediaType' if not groupBy in criteria \ or not criteria[groupBy].get('groupable', False): groupBy = 'rmMediaType' groupVocabulary = criteria[groupBy].get('vocabulary', None) groupInfo = indexContents[groupBy] groupedResults = library.group_brains(brains, groupBy, groupInfo) groupedResults = library.index_content_sorter(groupedResults, groupVocabulary)
def test_search(self): setRoles(self.portal, TEST_USER_ID, ('Manager',)) self.portal.invokeFactory('LibrarySearch', 'library', title=u"Library") library_obj = self.portal['library'] library_obj.libraryExtraSearchArgs = { 'path': '/'.join(self.portal.getPhysicalPath()), } self.portal.invokeFactory('RichFile', 'file', rmMediaType='document', rmAuthor='Me', rmTags=['defcon'], ) self.portal.invokeFactory('RichLink', 'link', rmMediaType='video', rmAuthor='Someone Else', rmTags=['defcon', 'scientific'], ) criteria = library.get_criteria(library_obj) searchArgs = library.get_search_args(library_obj) fakeForm = {'rmTags': 'defcon', } searchArgs.update( library.get_form_fields_by_keys(fakeForm, criteria.keys())) self.assertIn('rmTags', searchArgs) self.assertEquals(searchArgs['rmTags'], [fakeForm['rmTags']]) catalog = getToolByName(self.portal, 'portal_catalog') indexContents = library.get_index_contents(catalog, criteria, searchArgs) availableValues = library.get_availible_values(criteria, indexContents) # TODO: assert brains = catalog(searchArgs) groupBy = 'rmMediaType' if not groupBy in criteria \ or not criteria[groupBy].get('groupable', False): groupBy = 'rmMediaType' groupVocabulary = criteria[groupBy].get('vocabulary', None) groupInfo = indexContents[groupBy] groupedResults = library.group_brains(brains, groupBy, groupInfo) groupedResults = library.index_content_sorter(groupedResults, groupVocabulary)
def test_search(self): setRoles(self.portal, TEST_USER_ID, ('Manager',)) library_obj = self.portal['library'] criteria = library.get_criteria(library_obj) searchArgs = library.get_search_args(library_obj) fakeForm = {} searchArgs.update( library.get_form_fields_by_keys(fakeForm, criteria.keys())) catalog = getToolByName(self.portal, 'portal_catalog') indexContents = library.get_index_contents(catalog, criteria, searchArgs) availableValues = library.get_availible_values(criteria, indexContents) self.assertIn('challengeIntIds', availableValues) self.assertIn('rmMediaType', availableValues) self.assertIn('rmTags', availableValues) self.assertIn('universityIntIds', availableValues) challengeIds = availableValues['challengeIntIds'] universityIds = availableValues['universityIntIds'] tags = availableValues['rmTags'] mediaTypes = availableValues['rmMediaType'] d_show_all = dict() d_show_all["count"] = 2 d_show_all["value"] = 'show-all' d_show_all["label"] = u'All' self.assertIn(d_show_all, challengeIds) self.assertIn(d_show_all, universityIds) self.assertIn(d_show_all, tags) self.assertIn(d_show_all, mediaTypes) d_media_type = dict() d_media_type["count"] = 2 d_media_type["value"] = 'images' d_media_type["label"] = u'Images' self.assertIn(d_media_type, mediaTypes) d_tag_bachelor = dict() d_tag_bachelor["count"] = 1 d_tag_bachelor["value"] = 'bachelor' d_tag_bachelor["label"] = u'Bachelor' d_tag_handout = dict() d_tag_handout["count"] = 1 d_tag_handout["value"] = 'handout' d_tag_handout["label"] = u'Handout' d_tag_scientific = dict() d_tag_scientific["count"] = 1 d_tag_scientific["value"] = 'scientific' d_tag_scientific["label"] = u'Scientific' d_tag_untagged = dict() d_tag_untagged["count"] = 0 d_tag_untagged["value"] = 'show-untagged' d_tag_untagged["label"] = u'Untagged' self.assertIn(d_tag_bachelor, tags) self.assertIn(d_tag_handout, tags) self.assertIn(d_tag_scientific, tags) self.assertIn(d_tag_untagged, tags) d_uni_unassigned = dict() d_uni_unassigned["count"] = 0 d_uni_unassigned["value"] = 'show-unassigned' d_uni_unassigned["label"] = u'Unassigned' self.assertIn(d_uni_unassigned, universityIds) ok = False for d in universityIds: if d["label"] == u'University of Helsinki' and d["count"] == 2: ok = True self.assertTrue(ok) ok = False for d in challengeIds: if d["label"] == u'Challenge 1' and d["count"] == 0: ok = True self.assertTrue(ok) ok = False for d in challengeIds: if d["label"] == u'Challenge 2' and d["count"] == 2: ok = True self.assertTrue(ok) brains = catalog(searchArgs) groupBy = 'rmMediaType' if not groupBy in criteria \ or not criteria[groupBy].get('groupable', False): groupBy = 'rmMediaType' groupVocabulary = criteria[groupBy].get('vocabulary', None) groupInfo = indexContents[groupBy] groupedResults = library.group_brains(brains, groupBy, groupInfo) groupedResults = library.index_content_sorter(groupedResults, groupVocabulary) groupedResult = groupedResults[0] result_brains = groupedResult['brains'] ok = True for b in result_brains: if b.id == 'file-with-meta-data' or b.id == 'another-file-with-meta-data': ok &= True else: ok &= False self.assertTrue(ok) self.assertEqual(groupedResult['count'], 2) self.assertEqual(groupedResult['value'], 'images') self.assertEqual(groupedResult['label'], u'Images')