'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 = ''; 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 = ''; 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 = ''; 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 = ''; 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 = ''; 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 = ''; 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 = ''; 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 = ''; 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; } ); }); });