Files
edx-platform/cms/static/js/spec_helpers/validation_helpers.js
Se Won Jang 11d260910f Implemented Validation for Course Advanced Setting
This commit adds validation for course advanced settings. Currently when course
administrators make invalid changes in the Settings/Advanced Settings tab,
they're not notified through a new modal window of the list of invalid settings
changes.

* Extending CourseMetadata
    - Previously, we only had update_from_json method in CourseMetadata.py,
      and it was only validating one field every POST request.
    - Now we have validate_and_update_from_json method that encapsulates the
      functionality of update_from_json into a validation call
    - To avoid discrepancy of validation standards between modules, validation
      uses the from_json method implemented to each field in xblock.

* Different Response in advanced settings ajax requests
    - After receiving a POST ajax request, course.py calls
      validate_and_update_from_json, and sends a json object of either:
        1) valid course metadata model
        2) error objects

* Error Messages shown in validation-error-modal
    - error objects passed through ajax are shown in a separate modal.
2014-08-26 11:24:38 -07:00

34 lines
1.3 KiB
JavaScript

/**
* Provides helper methods for invoking Validation modal in Jasmine tests.
*/
define(['jquery', 'js/spec_helpers/modal_helpers', 'js/spec_helpers/view_helpers'],
function($, modal_helpers, view_helpers) {
var installValidationTemplates, checkErrorContents, undoChanges;
installValidationTemplates = function () {
modal_helpers.installModalTemplates();
view_helpers.installTemplate('validation-error-modal');
};
checkErrorContents = function(validationModal, errorObjects) {
var errorItems = validationModal.$('.error-item-message');
var i, item;
var num_items = errorItems.length;
expect(num_items).toBe(errorObjects.length);
for (i = 0; i < num_items; i++) {
item = errorItems[i];
expect(item.value).toBe(errorObjects[i].message);
}
};
undoChanges = function(validationModal) {
modal_helpers.pressModalButton('.action-undo', validationModal);
};
return $.extend(modal_helpers, {
'installValidationTemplates': installValidationTemplates,
'checkErrorContents': checkErrorContents,
'undoChanges': undoChanges,
});
});