74 lines
2.9 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
}
|
|
);
|