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:
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user