def test_queryset_method_returns_eligible_programs(self): """ Verify that one click purchase eligible programs pass the filter. """ verified_seat_type, __ = SeatType.objects.get_or_create( name=Seat.VERIFIED) program_type = factories.ProgramTypeFactory( applicable_seat_types=[verified_seat_type]) program_filter = ProgramEligibilityFilter(None, {self.parameter_name: 1}, None, None) course_run = factories.CourseRunFactory( end=None, enrollment_end=None, ) factories.SeatFactory(course_run=course_run, type='verified', upgrade_deadline=None) one_click_purchase_eligible_program = factories.ProgramFactory( type=program_type, courses=[course_run.course], one_click_purchase_enabled=True, ) with self.assertNumQueries(12): self.assertEqual( list(program_filter.queryset({}, Program.objects.all())), [one_click_purchase_eligible_program])
def test_queryset_method_returns_ineligible_programs(self): """ Verify programs ineligible for one-click purchase do not pass the filter. """ program_filter = ProgramEligibilityFilter(None, {self.parameter_name: 0}, None, None) one_click_purchase_ineligible_program = factories.ProgramFactory(one_click_purchase_enabled=False) with self.assertNumQueries(4): self.assertEqual( list(program_filter.queryset({}, Program.objects.all())), [one_click_purchase_ineligible_program] )
def test_queryset_method_returns_all_programs(self): """ Verify that all programs pass the filter. """ verified_seat_type = factories.SeatTypeFactory.verified() program_type = factories.ProgramTypeFactory(applicable_seat_types=[verified_seat_type]) program_filter = ProgramEligibilityFilter(None, {}, None, None) course_run = factories.CourseRunFactory() factories.SeatFactory(course_run=course_run, type=verified_seat_type, upgrade_deadline=None) one_click_purchase_eligible_program = factories.ProgramFactory( type=program_type, courses=[course_run.course], one_click_purchase_enabled=True ) one_click_purchase_ineligible_program = factories.ProgramFactory(courses=[course_run.course]) with self.assertNumQueries(1): assert list(program_filter.queryset({}, Program.objects.all())) == \ [one_click_purchase_eligible_program, one_click_purchase_ineligible_program]