Merge pull request #18090 from edx/jeskew/fix_retirement_queue_method

Process states param to gather all passed-in states.
This commit is contained in:
J Eskew
2018-04-30 15:01:34 -04:00
committed by GitHub
2 changed files with 17 additions and 3 deletions

View File

@@ -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

View File

@@ -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]