Files
edx-platform/lms/static/js/spec/student_account/enrollment_spec.js
Eric Fischer 5bc6b31e29 eslint --fix
2017-12-08 14:38:41 -05:00

74 lines
2.9 KiB
JavaScript

define(['edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers', 'js/student_account/enrollment'],
function(AjaxHelpers, EnrollmentInterface) {
'use strict';
describe('EnrollmentInterface', function() {
var COURSE_KEY = 'edX/DemoX/Fall',
ENROLL_URL = '/api/commerce/v0/baskets/',
FORWARD_URL = '/course_modes/choose/edX/DemoX/Fall/',
EMBARGO_MSG_URL = '/embargo/blocked-message/enrollment/default/';
beforeEach(function() {
// Mock the redirect call
spyOn(EnrollmentInterface, 'redirect').and.callFake(function() {});
});
it('enrolls a user in a course', function() {
// Spy on Ajax requests
var requests = AjaxHelpers.requests(this);
// Attempt to enroll the user
EnrollmentInterface.enroll(COURSE_KEY, FORWARD_URL);
// Expect that the correct request was made to the server
AjaxHelpers.expectRequest(
requests,
'POST',
ENROLL_URL,
'{"course_id":"edX/DemoX/Fall"}'
);
// Simulate a successful response from the server
AjaxHelpers.respondWithJson(requests, {});
// Verify that the user was redirected correctly
expect(EnrollmentInterface.redirect).toHaveBeenCalledWith(FORWARD_URL);
});
it('redirects the user if enrollment fails', function() {
// Spy on Ajax requests
var requests = AjaxHelpers.requests(this);
// Attempt to enroll the user
EnrollmentInterface.enroll(COURSE_KEY, FORWARD_URL);
// Simulate an error response from the server
AjaxHelpers.respondWithError(requests);
// Verify that the user was still redirected
expect(EnrollmentInterface.redirect).toHaveBeenCalledWith(FORWARD_URL);
});
it('redirects the user if blocked by an embargo', function() {
// Spy on Ajax requests
var requests = AjaxHelpers.requests(this);
// Attempt to enroll the user
EnrollmentInterface.enroll(COURSE_KEY, FORWARD_URL);
// Simulate an error response (403) from the server
// with a "user_message_url" parameter for the redirect.
// This will redirect the user to a page with messaging
// explaining why he/she can't enroll.
AjaxHelpers.respondWithError(
requests, 403,
{user_message_url: EMBARGO_MSG_URL}
);
// Verify that the user was redirected
expect(EnrollmentInterface.redirect).toHaveBeenCalledWith(EMBARGO_MSG_URL);
});
});
}
);