def testPreprocessBlockingCond_WithMultipleProjectIDs_NoPrefix(self): blocking_field = BUILTIN_ISSUE_FIELDS['blocking'] self.services.project.TestAddProject('Project1', project_id=1) self.services.project.TestAddProject('Project2', project_id=2) issue1 = fake.MakeTestIssue(project_id=1, local_id=1, summary='sum', status='new', owner_id=2, issue_id=101) issue2 = fake.MakeTestIssue(project_id=2, local_id=2, summary='sum', status='new', owner_id=2, issue_id=102) self.services.issue.TestAddIssue(issue1) self.services.issue.TestAddIssue(issue2) for local_ids in (['1'], ['1', '2'], ['3']): cond = ast_pb2.MakeCond(ast_pb2.QueryOp.TEXT_HAS, [blocking_field], local_ids, []) with self.assertRaises(ValueError) as cm: ast2ast._PreprocessBlockingCond(self.cnxn, cond, [1, 2], self.services, None, True) self.assertEquals( 'Searching for issues accross multiple/all projects without ' 'project prefixes is ambiguous and is currently not supported.', cm.exception.message)
def testPreprocessBlockingCond_WithSingleProjectID(self): blocking_field = BUILTIN_ISSUE_FIELDS['blocking'] blocking_id_field = BUILTIN_ISSUE_FIELDS['blocking_id'] self.services.project.TestAddProject('Project1', project_id=1) issue1 = fake.MakeTestIssue(project_id=1, local_id=1, summary='sum', status='new', owner_id=2, issue_id=101) issue2 = fake.MakeTestIssue(project_id=1, local_id=2, summary='sum', status='new', owner_id=2, issue_id=102) self.services.issue.TestAddIssue(issue1) self.services.issue.TestAddIssue(issue2) for local_ids, expected in ( (['1'], [101]), # One existing issue. (['Project1:1'], [101]), # One existing issue with project prefix. (['1', '2'], [101, 102]), # Two existing issues. (['3'], [])): # Non-existant issue. cond = ast_pb2.MakeCond(ast_pb2.QueryOp.TEXT_HAS, [blocking_field], local_ids, []) new_cond = ast2ast._PreprocessBlockingCond(self.cnxn, cond, [1], self.services, None) self.assertEqual(ast_pb2.QueryOp.EQ, new_cond.op) self.assertEqual([blocking_id_field], new_cond.field_defs) self.assertEqual(expected, new_cond.int_values) self.assertEqual([], new_cond.str_values)
def testPreprocessBlockingCond_WithMultipleProjectIDs(self): blocking_field = BUILTIN_ISSUE_FIELDS['blocking'] blocking_id_field = BUILTIN_ISSUE_FIELDS['blocking_id'] self.services.project.TestAddProject('Project1', project_id=1) self.services.project.TestAddProject('Project2', project_id=2) issue1 = fake.MakeTestIssue(project_id=1, local_id=1, summary='sum', status='new', owner_id=2, issue_id=101) issue2 = fake.MakeTestIssue(project_id=2, local_id=2, summary='sum', status='new', owner_id=2, issue_id=102) self.services.issue.TestAddIssue(issue1) self.services.issue.TestAddIssue(issue2) for local_ids, expected in ((['Project1:1'], [101]), (['Project1:1', 'Project2:2'], [101, 102])): cond = ast_pb2.MakeCond(ast_pb2.QueryOp.TEXT_HAS, [blocking_field], local_ids, []) new_cond = ast2ast._PreprocessBlockingCond(self.cnxn, cond, [1, 2], self.services, None, True) self.assertEqual(ast_pb2.QueryOp.EQ, new_cond.op) self.assertEqual([blocking_id_field], new_cond.field_defs) self.assertEqual(expected, new_cond.int_values) self.assertEqual([], new_cond.str_values)
def testPreprocessHasBlockingCond(self): blocking_field = BUILTIN_ISSUE_FIELDS['blocking_id'] for op in (ast_pb2.QueryOp.IS_DEFINED, ast_pb2.QueryOp.IS_NOT_DEFINED): cond = ast_pb2.MakeCond(op, [blocking_field], [], []) new_cond = ast2ast._PreprocessBlockingCond(self.cnxn, cond, [100], self.services, None) self.assertEqual(op, op) self.assertEqual([blocking_field], new_cond.field_defs) self.assertEqual([], new_cond.int_values) self.assertEqual([], new_cond.str_values)