894ebffcaf
Fix previous commit. As "force reconnect" buttons have all the same id on DOM, on the previous commit we were only disallowing the first button with that id on DOM -- "userdup" -- to be closed by a click on editor. Casually the tests were using the same error to simulate a "force reconnect", so even the tests were not getting the issue.
131 lines
3.5 KiB
JavaScript
131 lines
3.5 KiB
JavaScript
describe('Pad modal', function() {
|
|
context('when modal is a "force reconnect" message', function() {
|
|
var MODAL_SELECTOR = '#connectivity .slowcommit';
|
|
|
|
beforeEach(function(done) {
|
|
helper.newPad(function() {
|
|
// force a "slowcommit" error
|
|
helper.padChrome$.window.pad.handleChannelStateChange('DISCONNECTED', 'slowcommit');
|
|
|
|
// wait for modal to be displayed
|
|
var $modal = helper.padChrome$(MODAL_SELECTOR);
|
|
helper.waitFor(function() {
|
|
return $modal.is(':visible');
|
|
}, 50000).done(done);
|
|
});
|
|
|
|
this.timeout(60000);
|
|
});
|
|
|
|
it('disables editor', function(done) {
|
|
expect(isEditorDisabled()).to.be(true);
|
|
|
|
done();
|
|
});
|
|
|
|
context('and user clicks on editor', function() {
|
|
beforeEach(function() {
|
|
clickOnPadInner();
|
|
});
|
|
|
|
it('does not close the modal', function(done) {
|
|
var $modal = helper.padChrome$(MODAL_SELECTOR);
|
|
var modalIsVisible = $modal.is(':visible');
|
|
|
|
expect(modalIsVisible).to.be(true);
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
context('and user clicks on pad outer', function() {
|
|
beforeEach(function() {
|
|
clickOnPadOuter();
|
|
});
|
|
|
|
it('does not close the modal', function(done) {
|
|
var $modal = helper.padChrome$(MODAL_SELECTOR);
|
|
var modalIsVisible = $modal.is(':visible');
|
|
|
|
expect(modalIsVisible).to.be(true);
|
|
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
// we use "settings" here, but other modals have the same behaviour
|
|
context('when modal is not an error message', function() {
|
|
var MODAL_SELECTOR = '#settings';
|
|
|
|
beforeEach(function(done) {
|
|
helper.newPad(function() {
|
|
openSettingsAndWaitForModalToBeVisible(done);
|
|
});
|
|
|
|
this.timeout(60000);
|
|
});
|
|
|
|
it('does not disable editor', function(done) {
|
|
expect(isEditorDisabled()).to.be(false);
|
|
done();
|
|
});
|
|
|
|
context('and user clicks on editor', function() {
|
|
beforeEach(function() {
|
|
clickOnPadInner();
|
|
});
|
|
|
|
it('closes the modal', function(done) {
|
|
expect(isModalOpened(MODAL_SELECTOR)).to.be(false);
|
|
done();
|
|
});
|
|
});
|
|
|
|
context('and user clicks on pad outer', function() {
|
|
beforeEach(function() {
|
|
clickOnPadOuter();
|
|
});
|
|
|
|
it('closes the modal', function(done) {
|
|
expect(isModalOpened(MODAL_SELECTOR)).to.be(false);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
var clickOnPadInner = function() {
|
|
var $editor = helper.padInner$('#innerdocbody');
|
|
$editor.click();
|
|
}
|
|
|
|
var clickOnPadOuter = function() {
|
|
var $lineNumbersColumn = helper.padOuter$('#sidedivinner');
|
|
$lineNumbersColumn.click();
|
|
}
|
|
|
|
var openSettingsAndWaitForModalToBeVisible = function(done) {
|
|
helper.padChrome$('.buttonicon-settings').click();
|
|
|
|
// wait for modal to be displayed
|
|
var modalSelector = '#settings';
|
|
helper.waitFor(function() {
|
|
return isModalOpened(modalSelector);
|
|
}, 10000).done(done);
|
|
}
|
|
|
|
var isEditorDisabled = function() {
|
|
var editorDocument = helper.padOuter$("iframe[name='ace_inner']").get(0).contentDocument;
|
|
var editorBody = editorDocument.getElementById('innerdocbody');
|
|
|
|
var editorIsDisabled = editorBody.contentEditable === 'false' // IE/Safari
|
|
|| editorDocument.designMode === 'off'; // other browsers
|
|
|
|
return editorIsDisabled;
|
|
}
|
|
|
|
var isModalOpened = function(modalSelector) {
|
|
var $modal = helper.padChrome$(modalSelector);
|
|
return $modal.is(':visible');
|
|
}
|
|
});
|