def test_filter_and_sorting(self, staff_client, program_data, fin_aid_status, sort_param):
"""
Tests ReviewFinancialAidView correctly applies sort and filter parameters, or
uses defaults for those parameters
"""
FinancialAidFactory.create_batch(
10,
tier_program=program_data.tier_programs["0k"],
status=factory.Iterator([
ReviewFinancialAidView.default_status,
FinancialAidStatus.AUTO_APPROVED
])
)
url = self.review_url(program_data.program.id, status=fin_aid_status, sort_param=sort_param)
resp = staff_client.get(url)
assert resp.status_code == status.HTTP_200_OK
financial_aid_objects = resp.context_data["financial_aid_objects"]
# View should filter FinancialAid objects by the provided status or a default status
expected_status = fin_aid_status or ReviewFinancialAidView.default_status
assert all(fin_aid.status == expected_status for fin_aid in financial_aid_objects)
# View should sort by the given parameter, or sort by ascending last name by default
should_reverse_sort = sort_param == '-last_name'
assert (
list(financial_aid_objects) ==
sorted(financial_aid_objects, key=lambda f: f.user.last_name, reverse=should_reverse_sort)
)
评论列表
文章目录