def testBuildFTSCondition_NegatedQuickOR(self): query_cond = ast_pb2.MakeCond(NOT_TEXT_HAS, [self.summary_fd], ['needle', 'pin'], []) fulltext_query_clause = fulltext_helpers._BuildFTSCondition( query_cond, self.fulltext_fields) self.assertEqual('NOT (summary:"needle" OR summary:"pin")', fulltext_query_clause)
def testBuildFTSCondition_NonStringField(self): est_days_fd = tracker_pb2.FieldDef( field_name='EstDays', field_id=123, field_type=tracker_pb2.FieldTypes.INT_TYPE) query_cond = ast_pb2.MakeCond(TEXT_HAS, [est_days_fd], ['needle'], []) fulltext_query_clause = fulltext_helpers._BuildFTSCondition( query_cond, self.fulltext_fields) # Ignore in FTS, this search condition is done in SQL. self.assertEqual('', fulltext_query_clause)
def testBuildFTSCondition_CrossProjectWithMultipleFieldDescriptors(self): other_milestone_fd = tracker_pb2.FieldDef( field_name='milestone', field_type=tracker_pb2.FieldTypes.STR_TYPE, field_id=456) query_cond = ast_pb2.MakeCond(TEXT_HAS, [self.milestone_fd, other_milestone_fd], ['needle'], []) fulltext_query_clause = fulltext_helpers._BuildFTSCondition( query_cond, self.fulltext_fields) self.assertEqual('(custom_123:"needle" OR custom_456:"needle")', fulltext_query_clause)
def testBuildFTSCondition_NegatedAnyField(self): query_cond = ast_pb2.MakeCond(NOT_TEXT_HAS, [self.any_field_fd], ['needle'], []) fulltext_query_clause = fulltext_helpers._BuildFTSCondition( query_cond, self.fulltext_fields) self.assertEqual('NOT ("needle")', fulltext_query_clause)
def testBuildFTSCondition_BuiltinField(self): query_cond = ast_pb2.MakeCond(TEXT_HAS, [self.summary_fd], ['needle'], []) fulltext_query_clause = fulltext_helpers._BuildFTSCondition( query_cond, self.fulltext_fields) self.assertEqual('(summary:"needle")', fulltext_query_clause)
def testBuildFTSCondition_IgnoredOperator(self): query_cond = ast_pb2.MakeCond(GE, [self.summary_fd], ['needle'], []) fulltext_query_clause = fulltext_helpers._BuildFTSCondition( query_cond, self.fulltext_fields) self.assertEqual('', fulltext_query_clause)