Files
edx-platform/cms/static/js/spec_helpers/modal_helpers.js
2014-10-01 09:22:31 -04:00

70 lines
2.4 KiB
JavaScript

/**
* Provides helper methods for invoking Studio modal windows in Jasmine tests.
*/
define(["jquery", "js/common_helpers/template_helpers", "js/spec_helpers/view_helpers"],
function($, TemplateHelpers, ViewHelpers) {
var installModalTemplates, getModalElement, getModalTitle, isShowingModal, hideModalIfShowing,
pressModalButton, cancelModal, cancelModalIfShowing;
installModalTemplates = function(append) {
ViewHelpers.installViewTemplates(append);
TemplateHelpers.installTemplate('basic-modal');
TemplateHelpers.installTemplate('modal-button');
};
getModalElement = function(modal) {
var modalElement;
if (modal) {
modalElement = modal.$('.wrapper-modal-window');
} else {
modalElement = $('.wrapper-modal-window');
}
return modalElement;
};
getModalTitle = function(modal) {
var modalElement = getModalElement(modal);
return modalElement.find('.modal-window-title').text();
};
isShowingModal = function(modal) {
var modalElement = getModalElement(modal);
return modalElement.length > 0;
};
hideModalIfShowing = function(modal) {
if (isShowingModal(modal)) {
modal.hide();
}
};
pressModalButton = function(selector, modal) {
var modalElement, button;
modalElement = getModalElement(modal);
button = modalElement.find(selector + ':visible');
expect(button.length).toBe(1);
button.click();
};
cancelModal = function(modal) {
pressModalButton('.action-cancel', modal);
};
cancelModalIfShowing = function(modal) {
if (isShowingModal(modal)) {
cancelModal(modal);
}
};
return $.extend(ViewHelpers, {
'getModalElement': getModalElement,
'getModalTitle': getModalTitle,
'installModalTemplates': installModalTemplates,
'isShowingModal': isShowingModal,
'hideModalIfShowing': hideModalIfShowing,
'pressModalButton': pressModalButton,
'cancelModal': cancelModal,
'cancelModalIfShowing': cancelModalIfShowing
});
});