def test_input_empty_and_none(self): """ If input parameter is empty or None, the function should return an empty dictionary. """ result_for_none = get_badge_info_for_users() result_for_empty_list = get_badge_info_for_users([]) self.assertDictEqual(result_for_none, {}) self.assertDictEqual(result_for_empty_list, {})
def test_db_error_raises_exception(self, mock_person): """ If Person lookup fails due to database issue, the function will raise the exception up the stack. """ mock_person.return_value.values_list.side_effect = Exception with self.assertRaises(Exception): result = get_badge_info_for_users(self.user_id_input_list)
def test_matching_input(self, mock_person, mock_logger_warn): """ If input list contains one-to-one matches for Person lookup, the function should return a comprehensive mapping of input IDs to badge labels. """ mock_person.return_value.values_list.return_value = self.person_object_values result = get_badge_info_for_users(self.user_id_input_list) self.assertDictEqual(result, self.expected_results) self.assertFalse(mock_logger_warn.called)
def test_non_matching_input(self, mock_person, mock_logger_warn): """ If input list contains info that doesn't match the Person lookup, the function should return all user_ids in the input list, returning a default badge label for any user_ids that do not have a role_type_cd, and log a warning. """ mock_person.return_value.values_list.return_value = self.person_object_values result = get_badge_info_for_users(self.bad_input) self.assertDictEqual(result, self.expected_results_for_bad_input) self.assertTrue(mock_logger_warn.called)