def _GetNewRankings(self, mr): """Compute new issue reference rankings.""" missing = False if not (mr.target_id): logging.info('No target_id.') missing = True if not (mr.moved_ids): logging.info('No moved_ids.') missing = True if mr.split_above is None: logging.info('No split_above.') missing = True if missing: return untouched_items = [(item.issue_id, item.rank) for item in mr.hotlist.items if item.issue_id not in mr.moved_ids] # Note: The original reranking methods were written for reranking lists # sorted High to Low. Hotlist issues are reranked when they are sorted # Low to High so the mr.split_above must be flipped. lower, higher = features_bizobj.SplitHotlistIssueRanks( mr.target_id, not mr.split_above, untouched_items) return rerank_helpers.GetInsertRankings(lower, higher, mr.moved_ids)
def testGetInsertRankings_NoRoom(self): max_ranking, rerank_helpers.MAX_RANKING = rerank_helpers.MAX_RANKING, 1 lower = [(1, 0)] higher = [(2, 1)] moved_ids = [3] ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids) self.assertIsNone(ret) rerank_helpers.MAX_RANKING = max_ranking
def testGetInsertRankings_NoLower(self): lower = [] higher = [(1, 1)] moved_ids = [2] ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids) self.assertEqual(ret, [(2, 3), (1, 8)])
def testGetInsertRankings_SplitHigh(self): lower = [(1, 0), (2, 4)] higher = [(3, 5), (4, 10)] moved_ids = [5] ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids) self.assertEqual(ret, [(5, 6), (3, 9)])
def testGetInsertRankings_Multiple(self): lower = [(1, 0)] higher = [(2, 10)] moved_ids = [3, 4, 5] ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids) self.assertEqual(ret, [(3, 2), (4, 5), (5, 8)])
def testGetInsertRankings_Above(self): lower = [(1, 0)] higher = [] moved_ids = [2] ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids) self.assertEqual(ret, [(2, 5)])