diff --git a/openedx/core/djangoapps/user_api/accounts/tests/test_views.py b/openedx/core/djangoapps/user_api/accounts/tests/test_views.py index ca85a68805..29fc871b58 100644 --- a/openedx/core/djangoapps/user_api/accounts/tests/test_views.py +++ b/openedx/core/djangoapps/user_api/accounts/tests/test_views.py @@ -1257,7 +1257,7 @@ class TestAccountRetirementList(RetirementTestCase): except AttributeError: states_to_request = states_to_request - data = {'cool_off_days': cool_off_days, 'states': ','.join(states_to_request)} + data = {'cool_off_days': cool_off_days, 'states': states_to_request} response = self.client.get(self.url, data, **self.headers) self.assertEqual(response.status_code, expected_status) response_data = response.json() @@ -1285,6 +1285,18 @@ class TestAccountRetirementList(RetirementTestCase): self._create_retirement(state) self.assert_status_and_user_list([], states_to_request=self._get_non_dead_end_states()) + def test_users_retrieved_in_multiple_states(self): + """ + Verify that if multiple states are requested, learners in each state are returned. + """ + multiple_states = ['PENDING', 'FORUMS_COMPLETE'] + for state in multiple_states: + self._create_retirement(RetirementState.objects.get(state_name=state)) + data = {'cool_off_days': 0, 'states': multiple_states} + response = self.client.get(self.url, data, **self.headers) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(len(response.json()), 2) + def test_users_exist(self): """ Verify users in different states are returned with correct data or filtered out diff --git a/openedx/core/djangoapps/user_api/accounts/views.py b/openedx/core/djangoapps/user_api/accounts/views.py index aa068ae446..094f943114 100644 --- a/openedx/core/djangoapps/user_api/accounts/views.py +++ b/openedx/core/djangoapps/user_api/accounts/views.py @@ -442,11 +442,13 @@ class AccountRetirementView(ViewSet): """ try: cool_off_days = int(request.GET['cool_off_days']) - states = request.GET['states'].split(',') - if cool_off_days < 0: raise RetirementStateError('Invalid argument for cool_off_days, must be greater than 0.') + states = request.GET.getlist('states') + if not states: + raise RetirementStateError('Param "states" required with at least one state.') + state_objs = RetirementState.objects.filter(state_name__in=states) if state_objs.count() != len(states): found = [s.state_name for s in state_objs]