This is an addition to TNL-394: https://openedx.atlassian.net/browse/TNL-394 Fixed the confirmation messages that didn't appear when an escapable character is in the location name of the problem.
142 lines
6.8 KiB
JavaScript
142 lines
6.8 KiB
JavaScript
define([
|
|
'backbone',
|
|
'jquery',
|
|
'js/staff_debug_actions',
|
|
'common/js/spec_helpers/ajax_helpers'
|
|
],
|
|
function (Backbone, $, tmp, AjaxHelpers) {
|
|
|
|
describe('StaffDebugActions', function () {
|
|
var location = 'i4x://edX/Open_DemoX/edx_demo_course/problem/test_loc';
|
|
var locationName = 'test_loc';
|
|
var fixture_id = 'sd_fu_' + locationName;
|
|
var fixture = $('<input>', { id: fixture_id, placeholder: "userman" });
|
|
var escapableLocationName = 'test\.\*\+\?\^\:\$\{\}\(\)\|\]\[loc';
|
|
var escapableFixture_id = 'sd_fu_' + escapableLocationName;
|
|
var escapableFixture = $('<input>', {id: escapableFixture_id, placeholder: "userman"});
|
|
var esclocationName = 'P2:problem_1';
|
|
var escapableId = 'result_' + esclocationName;
|
|
var escapableResultArea = $('<div>', {id: escapableId});
|
|
|
|
describe('get_url ', function () {
|
|
it('defines url to courseware ajax entry point', function () {
|
|
spyOn(StaffDebug, "get_current_url").andReturn("/courses/edX/Open_DemoX/edx_demo_course/courseware/stuff");
|
|
expect(StaffDebug.get_url('rescore_problem')).toBe('/courses/edX/Open_DemoX/edx_demo_course/instructor/api/rescore_problem');
|
|
});
|
|
});
|
|
|
|
describe('sanitize_string', function () {
|
|
it('escapes escapable characters in a string', function () {
|
|
expect(StaffDebug.sanitized_string('.*+?^:${}()|][')).toBe('\\.\\*\\+\\?\\^\\:\\$\\{\\}\\(\\)\\|\\]\\[');
|
|
});
|
|
});
|
|
|
|
describe('get_user', function () {
|
|
|
|
it('gets the placeholder username if input field is empty', function () {
|
|
$('body').append(fixture);
|
|
expect(StaffDebug.get_user(locationName)).toBe('userman');
|
|
$('#' + fixture_id).remove();
|
|
});
|
|
it('gets a filled in name if there is one', function () {
|
|
$('body').append(fixture);
|
|
$('#' + fixture_id).val('notuserman');
|
|
expect(StaffDebug.get_user(locationName)).toBe('notuserman');
|
|
|
|
$('#' + fixture_id).val('');
|
|
$('#' + fixture_id).remove();
|
|
});
|
|
it('gets the placeholder name if the id has escapable characters', function() {
|
|
$('body').append(escapableFixture);
|
|
expect(StaffDebug.get_user('test.*+?^:${}()|][loc')).toBe('userman');
|
|
$("input[id^='sd_fu_']").remove();
|
|
});
|
|
});
|
|
describe('do_idash_action success', function () {
|
|
it('adds a success message to the results element after using an action', function () {
|
|
$('body').append(escapableResultArea);
|
|
var requests = AjaxHelpers.requests(this);
|
|
var action = {
|
|
locationName: esclocationName,
|
|
success_msg: 'Successfully reset the attempts for user userman',
|
|
};
|
|
StaffDebug.do_idash_action(action);
|
|
AjaxHelpers.respondWithJson(requests, action);
|
|
expect($('#idash_msg').text()).toBe('Successfully reset the attempts for user userman');
|
|
$('#result_' + locationName).remove();
|
|
});
|
|
});
|
|
describe('do_idash_action error', function () {
|
|
it('adds a failure message to the results element after using an action', function () {
|
|
$('body').append(escapableResultArea);
|
|
var requests = AjaxHelpers.requests(this);
|
|
var action = {
|
|
locationName: esclocationName,
|
|
error_msg: 'Failed to reset attempts.',
|
|
};
|
|
StaffDebug.do_idash_action(action);
|
|
AjaxHelpers.respondWithError(requests);
|
|
expect($('#idash_msg').text()).toBe('Failed to reset attempts. ');
|
|
$('#result_' + locationName).remove();
|
|
});
|
|
});
|
|
describe('reset', function () {
|
|
it('makes an ajax call with the expected parameters', function () {
|
|
$('body').append(fixture);
|
|
|
|
spyOn($, 'ajax');
|
|
StaffDebug.reset(locationName, location);
|
|
|
|
expect($.ajax.mostRecentCall.args[0]['type']).toEqual('GET');
|
|
expect($.ajax.mostRecentCall.args[0]['data']).toEqual({
|
|
'problem_to_reset': location,
|
|
'unique_student_identifier': 'userman',
|
|
'delete_module': false
|
|
});
|
|
expect($.ajax.mostRecentCall.args[0]['url']).toEqual(
|
|
'/instructor/api/reset_student_attempts'
|
|
);
|
|
$('#' + fixture_id).remove();
|
|
});
|
|
});
|
|
describe('sdelete', function () {
|
|
it('makes an ajax call with the expected parameters', function () {
|
|
$('body').append(fixture);
|
|
|
|
spyOn($, 'ajax');
|
|
StaffDebug.sdelete(locationName, location);
|
|
|
|
expect($.ajax.mostRecentCall.args[0]['type']).toEqual('GET');
|
|
expect($.ajax.mostRecentCall.args[0]['data']).toEqual({
|
|
'problem_to_reset': location,
|
|
'unique_student_identifier': 'userman',
|
|
'delete_module': true
|
|
});
|
|
expect($.ajax.mostRecentCall.args[0]['url']).toEqual(
|
|
'/instructor/api/reset_student_attempts'
|
|
);
|
|
|
|
$('#' + fixture_id).remove();
|
|
});
|
|
});
|
|
describe('rescore', function () {
|
|
it('makes an ajax call with the expected parameters', function () {
|
|
$('body').append(fixture);
|
|
|
|
spyOn($, 'ajax');
|
|
StaffDebug.rescore(locationName, location);
|
|
|
|
expect($.ajax.mostRecentCall.args[0]['type']).toEqual('GET');
|
|
expect($.ajax.mostRecentCall.args[0]['data']).toEqual({
|
|
'problem_to_reset': location,
|
|
'unique_student_identifier': 'userman',
|
|
'delete_module': false
|
|
});
|
|
expect($.ajax.mostRecentCall.args[0]['url']).toEqual(
|
|
'/instructor/api/rescore_problem'
|
|
);
|
|
$('#' + fixture_id).remove();
|
|
});
|
|
});
|
|
});
|
|
}); |