def test_mongo_using_endswith_filter(self): f = FilterConditionService() doc = {'field': 'headline', 'operator': 'endswith', 'value': 'Que'} query = f.get_mongo_query(doc) with self.app.app_context(): docs = superdesk.get_resource_service('archive').\ get_from_mongo(req=self.req, lookup=query) self.assertEqual(1, docs.count()) self.assertEqual('2', docs[0]['_id'])
def test_does_match_with_notlike_filter(self): f = FilterConditionService() doc = {'field': 'headline', 'operator': 'notlike', 'value': 'Que'} self.assertTrue(f.does_match(doc, self.articles[0])) self.assertFalse(f.does_match(doc, self.articles[1])) self.assertTrue(f.does_match(doc, self.articles[2])) self.assertTrue(f.does_match(doc, self.articles[3])) self.assertTrue(f.does_match(doc, self.articles[4])) self.assertTrue(f.does_match(doc, self.articles[5]))
def test_elastic_using_endswith_filter(self): f = FilterConditionService() doc = {'field': 'headline', 'operator': 'endswith', 'value': 'Que'} query = f.get_elastic_query(doc) with self.app.app_context(): self._setup_elastic_args(query, 'keyword') docs = superdesk.get_resource_service('archive').get(req=self.req, lookup=None) self.assertEqual(1, docs.count()) self.assertEqual('2', docs[0]['_id'])
def test_does_match_with_nin_filter(self): f = FilterConditionService() doc = {'field': 'urgency', 'operator': 'nin', 'value': '2,3,4'} self.assertTrue(f.does_match(doc, self.articles[0])) self.assertTrue(f.does_match(doc, self.articles[1])) self.assertFalse(f.does_match(doc, self.articles[2])) self.assertFalse(f.does_match(doc, self.articles[3])) self.assertFalse(f.does_match(doc, self.articles[4])) self.assertTrue(f.does_match(doc, self.articles[5]))
def test_mongo_using_genre_filter_complete_string(self): f = FilterConditionService() doc = {'field': 'genre', 'operator': 'in', 'value': 'Sidebar'} query = f.get_mongo_query(doc) with self.app.app_context(): docs = superdesk.get_resource_service('archive').\ get_from_mongo(req=self.req, lookup=query) self.assertEqual(1, docs.count()) self.assertEqual('7', docs[0]['_id'])
def test_elastic_using_notlike_filter(self): f = FilterConditionService() doc = {'field': 'headline', 'operator': 'notlike', 'value': 'que'} query = f.get_elastic_query(doc) with self.app.app_context(): self._setup_elastic_args(query, 'not') docs = superdesk.get_resource_service('archive').get(req=self.req, lookup=None) self.assertEqual(7, docs.count()) doc_ids = [d['_id'] for d in docs] self.assertTrue('2' not in doc_ids)
def test_elastic_using_subject_filter_complete_string(self): f = FilterConditionService() doc = {'field': 'subject', 'operator': 'in', 'value': '05005003'} query = f.get_elastic_query(doc) with self.app.app_context(): self._setup_elastic_args(query) docs = superdesk.get_resource_service('archive').get(req=self.req, lookup=None) doc_ids = [d['_id'] for d in docs] self.assertEqual(1, docs.count()) self.assertTrue('8' in doc_ids)
def test_mongo_using_in_filter(self): f = FilterConditionService() doc = {'field': 'urgency', 'operator': 'in', 'value': '3,4'} query = f.get_mongo_query(doc) with self.app.app_context(): docs = superdesk.get_resource_service('archive').\ get_from_mongo(req=self.req, lookup=query) self.assertEqual(2, docs.count()) self.assertEqual('3', docs[0]['_id']) self.assertEqual('4', docs[1]['_id'])
def test_mongo_using_notlike_filter(self): f = FilterConditionService() doc = {'field': 'headline', 'operator': 'notlike', 'value': 'Que'} query = f.get_mongo_query(doc) with self.app.app_context(): docs = superdesk.get_resource_service('archive').\ get_from_mongo(req=self.req, lookup=query) self.assertEqual(7, docs.count()) doc_ids = [d['_id'] for d in docs] self.assertTrue('2' not in doc_ids)
def test_elastic_using_in_filter(self): f = FilterConditionService() doc = {'field': 'urgency', 'operator': 'in', 'value': '3,4'} query = f.get_elastic_query(doc) with self.app.app_context(): self._setup_elastic_args(query) docs = superdesk.get_resource_service('archive').get(req=self.req, lookup=None) doc_ids = [d['_id'] for d in docs] self.assertEqual(2, docs.count()) self.assertTrue('4' in doc_ids) self.assertTrue('3' in doc_ids)
def test_get_mongo_operator(self): f = FilterConditionService() self.assertEqual(f._get_mongo_operator('in'), '$in') self.assertEqual(f._get_mongo_operator('nin'), '$nin') self.assertEqual(f._get_mongo_operator('like'), '$regex') self.assertEqual(f._get_mongo_operator('notlike'), '$not') self.assertEqual(f._get_mongo_operator('startswith'), '$regex') self.assertEqual(f._get_mongo_operator('endswith'), '$regex')
def test_get_mongo_value(self): f = FilterConditionService() self.assertEqual(f._get_mongo_value('in', '1,2', 'urgency'), [1, 2]) self.assertEqual(f._get_mongo_value('nin', '3', 'priority'), ['3']) self.assertEqual(f._get_mongo_value('like', 'test', 'headline'), re.compile('.*test.*', re.IGNORECASE)) self.assertEqual(f._get_mongo_value('notlike', 'test', 'headline'), re.compile('.*test.*', re.IGNORECASE)) self.assertEqual(f._get_mongo_value('startswith', 'test', 'headline'), re.compile('^test', re.IGNORECASE)) self.assertEqual(f._get_mongo_value('endswith', 'test', 'headline'), re.compile('.*test', re.IGNORECASE))
def test_does_match_with_genre_filter(self): f = FilterConditionService() doc = {'field': 'genre', 'operator': 'in', 'value': 'Sidebar'} self.assertFalse(f.does_match(doc, self.articles[0])) self.assertFalse(f.does_match(doc, self.articles[1])) self.assertFalse(f.does_match(doc, self.articles[2])) self.assertFalse(f.does_match(doc, self.articles[3])) self.assertFalse(f.does_match(doc, self.articles[4])) self.assertFalse(f.does_match(doc, self.articles[5])) self.assertTrue(f.does_match(doc, self.articles[6])) self.assertFalse(f.does_match(doc, self.articles[7]))
def test_does_match_with_subject_filter(self): f = FilterConditionService() doc = {'field': 'subject', 'operator': 'in', 'value': '05005003'} self.assertFalse(f.does_match(doc, self.articles[0])) self.assertFalse(f.does_match(doc, self.articles[1])) self.assertFalse(f.does_match(doc, self.articles[2])) self.assertFalse(f.does_match(doc, self.articles[3])) self.assertFalse(f.does_match(doc, self.articles[4])) self.assertFalse(f.does_match(doc, self.articles[5])) self.assertFalse(f.does_match(doc, self.articles[6])) self.assertTrue(f.does_match(doc, self.articles[7]))
def test_does_match_with_category_filter(self): f = FilterConditionService() doc = {'field': 'anpa_category', 'operator': 'in', 'value': 'a,i'} self.assertFalse(f.does_match(doc, self.articles[0])) self.assertFalse(f.does_match(doc, self.articles[1])) self.assertFalse(f.does_match(doc, self.articles[2])) self.assertFalse(f.does_match(doc, self.articles[3])) self.assertFalse(f.does_match(doc, self.articles[4])) self.assertFalse(f.does_match(doc, self.articles[5])) self.assertFalse(f.does_match(doc, self.articles[6])) self.assertFalse(f.does_match(doc, self.articles[7])) self.assertTrue(f.does_match(doc, self.articles[8]))
def test_if_fc_is_used(self): f = FilterConditionService() with self.app.app_context(): self.assertTrue(f._get_referenced_filter_conditions(1).count() == 1) self.assertTrue(f._get_referenced_filter_conditions(2).count() == 0)
def test_are_equal4(self): f = FilterConditionService() new_doc = {'name': 'A', 'field': 'urgency', 'operator': 'nin', 'value': '4,2,3'} doc = {'_id': 1, 'name': 'B', 'field': 'urgency', 'operator': 'nin', 'value': '2,3'} self.assertFalse(f._are_equal(new_doc, doc))
def test_are_equal3(self): f = FilterConditionService() new_doc = {'name': 'A', 'field': 'urgency', 'operator': 'nin', 'value': 'jump,track'} doc = {'_id': 1, 'name': 'B', 'field': 'urgency', 'operator': 'nin', 'value': 'tump,jrack'} self.assertTrue(f._are_equal(new_doc, doc))