'use strict';
var common = require('../common');
describe('Alert', function () {
describe('showStatus', function () {
jsc.property(
'shows a status message (basic)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (icon, message) {
icon = icon.join('');
message = message.join('');
const expected = '
' + message + '
';
document.body.innerHTML =
'';
PrivateBin.Alert.init();
PrivateBin.Alert.showStatus(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows a status message (bootstrap)',
jsc.array(common.jscAlnumString()),
function (message) {
message = message.join('');
const expected = ' ' + message + '
';
document.body.innerHTML =
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.showStatus(message);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows a status message (bootstrap, custom icon)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (icon, message) {
icon = icon.join('');
message = message.join('');
const expected = ' ' + message + '
';
document.body.innerHTML =
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.showStatus(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
});
describe('showWarning', function () {
jsc.property(
'shows a warning message (basic)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (icon, message) {
icon = icon.join('');
message = message.join('');
const expected = '' + message + '
';
document.body.innerHTML =
'';
PrivateBin.Alert.init();
PrivateBin.Alert.showWarning(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows a warning message (bootstrap)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (message) {
message = message.join('');
const expected = ' ' + message + '
';
document.body.innerHTML =
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.showWarning(message);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows a warning message (bootstrap, custom icon)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (icon, message) {
icon = icon.join('');
message = message.join('');
const expected = ' ' + message + '
';
document.body.innerHTML =
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.showWarning(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
});
describe('showError', function () {
jsc.property(
'shows an error message (basic)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (icon, message) {
icon = icon.join('');
message = message.join('');
const expected = '' + message + '
';
document.body.innerHTML =
'';
PrivateBin.Alert.init();
PrivateBin.Alert.showError(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows an error message (bootstrap)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (icon, message) {
message = message.join('');
const expected = ' ' + message + '
';
document.body.innerHTML =
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.showError(message);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows an error message (bootstrap, custom icon)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (icon, message) {
icon = icon.join('');
message = message.join('');
const expected = ' ' + message + '
';
document.body.innerHTML =
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.showError(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
});
describe('showRemaining', function () {
jsc.property(
'shows remaining time (basic)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
'integer',
function (message, string, number) {
message = message.join('');
string = string.join('');
const expected = '' + string + message + number + '
';
document.body.innerHTML =
'';
PrivateBin.Alert.init();
PrivateBin.Alert.showRemaining(['%s' + message + '%d', string, number]);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows remaining time (bootstrap)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
'integer',
function (message, string, number) {
message = message.join('');
string = string.join('');
const expected = '' +
' ' + string + message + number + '
';
document.body.innerHTML =
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.showRemaining(['%s' + message + '%d', string, number]);
const result = document.body.innerHTML;
return expected === result;
}
);
});
describe('showLoading', function () {
jsc.property(
'shows a loading message (basic)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (message, icon) {
message = message.join('');
icon = icon.join('');
const defaultMessage = 'Loading…';
if (message.length === 0) {
message = defaultMessage;
}
const expected = '' + message + '
';
document.body.innerHTML =
'' + defaultMessage + '
';
PrivateBin.Alert.init();
PrivateBin.Alert.showLoading(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
jsc.property(
'shows a loading message (bootstrap)',
jsc.array(common.jscAlnumString()),
jsc.array(common.jscAlnumString()),
function (message, icon) {
message = message.join('');
icon = icon.join('');
const defaultMessage = 'Loading…';
if (message.length === 0) {
message = defaultMessage;
}
const expected = '';
document.body.innerHTML =
'';
PrivateBin.Alert.init();
PrivateBin.Alert.showLoading(message, icon);
const result = document.body.innerHTML;
return expected === result;
}
);
});
describe('hideLoading', function () {
it(
'hides the loading message',
function() {
document.body.innerHTML =
'';
document.body.classList.add('loading');
PrivateBin.Alert.init();
PrivateBin.Alert.hideLoading();
assert.ok(!document.body.classList.contains('loading'));
assert.ok(document.getElementById('loadingindicator').classList.contains('hidden'));
}
);
});
describe('hideMessages', function () {
it(
'hides all messages',
function() {
document.body.innerHTML =
'
' +
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.hideMessages();
assert.ok(document.getElementById('status').classList.contains('hidden'));
assert.ok(document.getElementById('errormessage').classList.contains('hidden'));
}
);
});
describe('setCustomHandler', function () {
jsc.property(
'calls a given handler function',
'nat 3',
jsc.array(common.jscAlnumString()),
function (trigger, message) {
message = message.join('');
let handlerCalled = false,
defaultMessage = 'Loading…',
functions = [
PrivateBin.Alert.showStatus,
PrivateBin.Alert.showError,
PrivateBin.Alert.showRemaining,
PrivateBin.Alert.showLoading
];
if (message.length === 0) {
message = defaultMessage;
}
document.body.innerHTML =
'' +
'
' +
'
' +
'
';
PrivateBin.Alert.init();
PrivateBin.Alert.setCustomHandler(function(id, element) {
handlerCalled = true;
return jsc.random(0, 1) ? true : element;
});
functions[trigger](message);
PrivateBin.Alert.setCustomHandler(null);
return handlerCalled;
}
);
});
});