'use strict'; var common = require('../common'); describe('Alert', function () { describe('showStatus', function () { before(function () { cleanup(); }); jsc.property( 'shows a status message', jsc.array(common.jscAlnumString()), jsc.array(common.jscAlnumString()), function (icon, message) { icon = icon.join(''); message = message.join(''); var expected = ''; $('body').html( '' ); $.PrivateBin.Alert.init(); $.PrivateBin.Alert.showStatus(message, icon); var result = $('body').html(); return expected === result; } ); }); describe('showError', function () { before(function () { cleanup(); }); jsc.property( 'shows an error message', jsc.array(common.jscAlnumString()), jsc.array(common.jscAlnumString()), function (icon, message) { icon = icon.join(''); message = message.join(''); var expected = ''; $('body').html( '' ); $.PrivateBin.Alert.init(); $.PrivateBin.Alert.showError(message, icon); var result = $('body').html(); return expected === result; } ); }); describe('showRemaining', function () { before(function () { cleanup(); }); jsc.property( 'shows remaining time', jsc.array(common.jscAlnumString()), jsc.array(common.jscAlnumString()), 'integer', function (message, string, number) { message = message.join(''); string = string.join(''); var expected = ''; $('body').html( '' ); $.PrivateBin.Alert.init(); $.PrivateBin.Alert.showRemaining(['%s' + message + '%d', string, number]); var result = $('body').html(); return expected === result; } ); }); describe('showLoading', function () { before(function () { cleanup(); }); jsc.property( 'shows a loading message', jsc.array(common.jscAlnumString()), jsc.array(common.jscAlnumString()), 'integer', function (icon, message, number) { icon = icon.join(''); message = message.join(''); var default_message = 'Loading…'; if (message.length === 0) { message = default_message; } var expected = ''; $('body').html( '' ); $.PrivateBin.Alert.init(); $.PrivateBin.Alert.showLoading(message, number, icon); var result = $('body').html(); return expected === result; } ); }); describe('hideLoading', function () { before(function () { cleanup(); }); it( 'hides the loading message', function() { $('body').html( '' ); $('body').addClass('loading'); $.PrivateBin.Alert.init(); $.PrivateBin.Alert.hideLoading(); return !$('body').hasClass('loading') && $('#loadingindicator').hasClass('hidden'); } ); }); describe('hideMessages', function () { before(function () { cleanup(); }); it( 'hides all messages', function() { $('body').html( '' + '' ); $.PrivateBin.Alert.init(); $.PrivateBin.Alert.hideMessages(); return $('#statusmessage').hasClass('hidden') && $('#errormessage').hasClass('hidden'); } ); }); describe('setCustomHandler', function () { before(function () { cleanup(); }); jsc.property( 'calls a given handler function', 'nat 3', jsc.array(common.jscAlnumString()), function (trigger, message) { message = message.join(''); var handlerCalled = false, default_message = 'Loading…', functions = [ $.PrivateBin.Alert.showStatus, $.PrivateBin.Alert.showError, $.PrivateBin.Alert.showRemaining, $.PrivateBin.Alert.showLoading ]; if (message.length === 0) { message = default_message; } $('body').html( '' + '' + '' + '' ); $.PrivateBin.Alert.init(); $.PrivateBin.Alert.setCustomHandler(function(id, $element) { handlerCalled = true; return jsc.random(0, 1) ? true : $element; }); functions[trigger](message); return handlerCalled; } ); }); });