def test_get_completed_programs(self, mock_get_completed_courses): """ Verify that completed programs are found, using the cache when possible. """ course_id = 'org/course/run' data = [ factories.Program(organizations=[factories.Organization()], course_codes=[ factories.CourseCode(run_modes=[ factories.RunMode(course_key=course_id), ]), ]), ] self._mock_programs_api(data) mock_get_completed_courses.return_value = [{ 'course_id': course_id, 'mode': MODES.verified }] for _ in range(2): result = tasks.get_completed_programs(self.user) self.assertEqual(result, [data[0]['id']]) # Verify that only one request to programs was made (i.e., the cache was hit). self._assert_num_requests(1)
def test_get_completed_programs(self, mock_get_completed_courses): """ Verify that completed programs are found, using the cache when possible. """ course_id = 'org/course/run' data = [ factories.Program( organizations=[factories.Organization()], course_codes=[ factories.CourseCode(run_modes=[ factories.RunMode(course_key=course_id), ]), ] ), ] self._mock_programs_api(data) mock_get_completed_courses.return_value = [ {'course_id': course_id, 'mode': MODES.verified} ] for _ in range(2): result = tasks.get_completed_programs(self.user) self.assertEqual(result, [data[0]['id']]) # Verify that only one request to programs was made (i.e., the cache was hit). self._assert_num_requests(1)
def test_get_completed_programs(self): """ Ensure the correct API call gets made """ test_client = EdxRestApiClient('http://test-server', jwt='test-token') httpretty.register_uri( httpretty.POST, 'http://test-server/programs/complete/', body='{"program_ids": [1, 2, 3]}', content_type='application/json', ) payload = [ { 'course_id': 'test-course-1', 'mode': 'verified' }, { 'course_id': 'test-course-2', 'mode': 'prof-ed' }, ] result = tasks.get_completed_programs(test_client, payload) self.assertEqual(json.loads(httpretty.last_request().body), {'completed_courses': payload}) self.assertEqual(result, [1, 2, 3])
def test_get_completed_programs(self): """ Ensure the correct API call gets made """ test_client = EdxRestApiClient('http://test-server', jwt='test-token') httpretty.register_uri( httpretty.POST, 'http://test-server/programs/complete/', body='{"program_ids": [1, 2, 3]}', content_type='application/json', ) payload = [ {'course_id': 'test-course-1', 'mode': 'verified'}, {'course_id': 'test-course-2', 'mode': 'prof-ed'}, ] result = tasks.get_completed_programs(test_client, payload) self.assertEqual(json.loads(httpretty.last_request().body), {'completed_courses': payload}) self.assertEqual(result, [1, 2, 3])
def test_get_completed_programs(self, mock_get_completed_courses): """ Verify that completed programs are found, using the cache when possible. """ data = [ factories.Program(), ] self._mock_programs_api(data) munged_program = munge_catalog_program(data[0]) course_codes = munged_program['course_codes'] mock_get_completed_courses.return_value = [{ 'course_id': run_mode['course_key'], 'mode': run_mode['mode_slug'] } for run_mode in course_codes[0]['run_modes']] for _ in range(2): result = tasks.get_completed_programs(self.user) self.assertEqual(result[0], munged_program['id']) # Verify that only one request to the catalog was made (i.e., the cache was hit). self._assert_num_requests(1)