def test_search_respects_groups(self): other_group = Group(org=self.factory.org, name="Other Group") db.session.add(other_group) ds = self.factory.create_data_source(group=other_group) q1 = self.factory.create_query(description="Testing search", data_source=ds) q2 = self.factory.create_query(description="Testing searching") q3 = self.factory.create_query(description="Testing sea rch") queries = list(Query.search("Testing", [self.factory.default_group.id])) self.assertNotIn(q1, queries) self.assertIn(q2, queries) self.assertIn(q3, queries) queries = list( Query.search("Testing", [other_group.id, self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertIn(q3, queries) queries = list(Query.search("Testing", [other_group.id])) self.assertIn(q1, queries) self.assertNotIn(q2, queries) self.assertNotIn(q3, queries)
def test_search_query_parser_emails(self): q1 = self.factory.create_query(name="*****@*****.**") q2 = self.factory.create_query(name="*****@*****.**") queries = list(Query.search('example', [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) queries = list(Query.search('com', [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) queries = list(Query.search('johndoe', [self.factory.default_group.id])) self.assertNotIn(q1, queries) self.assertIn(q2, queries)
def test_search_query_parser_hyphen(self): q1 = self.factory.create_query(name="Testing search") q2 = self.factory.create_query(name="Testing-search") queries = list(Query.search('testing search', [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries)
def test_search_query_parser_negation(self): q1 = self.factory.create_query(name="Testing") q2 = self.factory.create_query(name="search") queries = list( Query.search("testing -search", [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertNotIn(q2, queries)
def test_search_finds_in_name(self): q1 = self.factory.create_query(name="Testing seåřċħ") q2 = self.factory.create_query(name="Testing seåřċħing") q3 = self.factory.create_query(name="Testing seå řċħ") queries = list(Query.search("seåřċħ", [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertNotIn(q3, queries)
def test_search_query_parser_parenthesis(self): q1 = self.factory.create_query(name="Testing search") q2 = self.factory.create_query(name="Testing searching") q3 = self.factory.create_query(name="Testing finding") queries = list(Query.search('(testing search) or finding', [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertIn(q3, queries)
def test_search_finds_in_name(self): q1 = self.factory.create_query(name=u"Testing seåřċħ") q2 = self.factory.create_query(name=u"Testing seåřċħing") q3 = self.factory.create_query(name=u"Testing seå řċħ") queries = list(Query.search(u"seåřċħ", [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertNotIn(q3, queries)
def test_search_by_id_returns_query(self): q1 = self.factory.create_query(description="Testing search") q2 = self.factory.create_query(description="Testing searching") q3 = self.factory.create_query(description="Testing sea rch") db.session.flush() queries = Query.search(str(q3.id), [self.factory.default_group.id]) self.assertIn(q3, queries) self.assertNotIn(q1, queries) self.assertNotIn(q2, queries)
def test_search_finds_in_description(self): q1 = self.factory.create_query(description=u"Testing seåřċħ") q2 = self.factory.create_query(description=u"Testing seåřċħing") q3 = self.factory.create_query(description=u"Testing seå řċħ") queries = Query.search(u"seåřċħ", [self.factory.default_group.id]) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertNotIn(q3, queries)
def test_search_finds_in_multi_byte_name_and_description(self): q1 = self.factory.create_query(name="日本語の名前テスト") q2 = self.factory.create_query(description=u"日本語の説明文テスト") q3 = self.factory.create_query(description=u"Testing search") queries = Query.search(u"テスト", [self.factory.default_group.id], multi_byte_search=True) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertNotIn(q3, queries)
def test_returns_each_query_only_once(self): other_group = self.factory.create_group() second_group = self.factory.create_group() ds = self.factory.create_data_source(group=other_group) ds.add_group(second_group, False) q1 = self.factory.create_query(description="Testing search", data_source=ds) db.session.flush() queries = list(Query.search("Testing", [self.factory.default_group.id, other_group.id, second_group.id])) self.assertEqual(1, len(queries))
def test_search_respects_groups(self): other_group = Group(org=self.factory.org, name="Other Group") db.session.add(other_group) ds = self.factory.create_data_source(group=other_group) q1 = self.factory.create_query(description="Testing search", data_source=ds) q2 = self.factory.create_query(description="Testing searching") q3 = self.factory.create_query(description="Testing sea rch") queries = list(Query.search("Testing", [self.factory.default_group.id])) self.assertNotIn(q1, queries) self.assertIn(q2, queries) self.assertIn(q3, queries) queries = list(Query.search("Testing", [other_group.id, self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertIn(q3, queries) queries = list(Query.search("Testing", [other_group.id])) self.assertIn(q1, queries) self.assertNotIn(q2, queries) self.assertNotIn(q3, queries)
def test_search_is_case_insensitive(self): q = self.factory.create_query(name="Testing search") self.assertIn(q, Query.search('testing', [self.factory.default_group.id]))
def test_search_by_number(self): q = self.factory.create_query(description="Testing search 12345") db.session.flush() queries = Query.search('12345', [self.factory.default_group.id]) self.assertIn(q, queries)