UNPKG

zettapi_client

Version:

Client side CRUD operations in angular to use with zettapi_server rest api to get started quickly in any CMS project

484 lines (377 loc) 11.5 kB
/* global $, test, swal */ test('modal shows up', function(assert) { assert.notOk(swal.isVisible()); swal('Hello world!'); assert.ok(swal.isVisible()); }); test('modal width', function(assert) { swal({text: '400px', width: 300}); assert.equal($('.swal2-modal')[0].style.width, '300px'); swal({text: '500px', width: '400px'}); assert.equal($('.swal2-modal')[0].style.width, '400px'); swal({text: '90%', width: '90%'}); assert.equal($('.swal2-modal')[0].style.width, '90%'); swal({text: 'default width'}); assert.equal($('.swal2-modal')[0].style.width, '500px'); }); test('confirm button', function(assert) { var done = assert.async(); swal('Confirm me').then(function(result) { assert.equal(result, true); done(); }); swal.clickConfirm(); }); test('custom buttons classes', function(assert) { swal({ text: 'Modal with custom buttons classes', confirmButtonClass: 'btn btn-success', cancelButtonClass: 'btn btn-warning' }); assert.ok($('.swal2-confirm').hasClass('btn')); assert.ok($('.swal2-confirm').hasClass('btn-success')); assert.ok($('.swal2-cancel').hasClass('btn')); assert.ok($('.swal2-cancel').hasClass('btn-warning')); swal('Modal with default buttons classes'); assert.notOk($('.swal2-confirm').hasClass('btn')); assert.notOk($('.swal2-confirm').hasClass('btn-success')); assert.notOk($('.swal2-cancel').hasClass('btn')); assert.notOk($('.swal2-cancel').hasClass('btn-warning')); }); test('cancel button', function(assert) { var done = assert.async(); swal('Cancel me').then( function() {}, function(dismiss) { assert.equal(dismiss, 'cancel'); done(); } ).done(); swal.clickCancel(); }); test('esc key', function(assert) { var done = assert.async(); swal('Esc me').then( function() {}, function(dismiss) { assert.equal(dismiss, 'esc'); done(); } ); $(document).trigger($.Event('keydown', { keyCode: 27 })); }); test('overlay click', function(assert) { var done = assert.async(); swal('Overlay click').then( function() {}, function(dismiss) { assert.equal(dismiss, 'overlay'); done(); } ); $('.swal2-overlay').click(); }); test('timer works', function(assert) { var done = assert.async(); swal({title: 'Timer test', timer: 10, animation: false}).then( function() {}, function(dismiss) { assert.equal(dismiss, 'timer'); done(); } ); }); test('close button', function(assert) { var done = assert.async(); swal({title: 'Close button test', showCloseButton: true}).then( function() {}, function(dismiss) { assert.equal(dismiss, 'close'); done(); } ); var $closeButton = $('.swal2-close'); assert.ok($closeButton.is(':visible')); $closeButton.click(); }); test('jQuery/js element as html param', function(assert) { swal({ html: $('<p>jQuery element</p>') }); assert.equal($('.swal2-content').html(), '<p>jQuery element</p>'); var p = document.createElement('p'); p.textContent = 'js element'; swal({ html: p }); assert.equal($('.swal2-content').html(), '<p>js element</p>'); }); test('set and reset defaults', function(assert) { swal.setDefaults({confirmButtonText: 'Next >', showCancelButton: true}); swal('Modal with changed defaults'); assert.equal($('.swal2-confirm').text(), 'Next >'); assert.ok($('.swal2-cancel').is(':visible')); swal.resetDefaults(); swal('Modal after resetting defaults').done(); assert.equal($('.swal2-confirm').text(), 'OK'); assert.ok($('.swal2-cancel').is(':hidden')); swal.clickCancel(); }); test('input text', function(assert) { var done = assert.async(); var string = 'Live for yourself'; swal({input: 'text'}).then(function(result) { assert.equal(result, string); done(); }); $('.swal2-input').val(string); swal.clickConfirm(); }); test('input select', function(assert) { var done = assert.async(); var selected = 'dos'; swal({input: 'select', inputOptions: {uno: 1, dos: 2} }).then(function(result) { assert.equal(result, selected); done(); }); $('.swal2-select').val(selected); swal.clickConfirm(); }); test('input checkbox', function(assert) { var done = assert.async(); var checkbox = $('.swal2-checkbox input'); swal({input: 'checkbox', inputAttributes: {name: 'test-checkbox'}}).then(function(result) { assert.equal(checkbox.attr('name'), 'test-checkbox'); assert.equal(result, '1'); done(); }); checkbox.prop('checked', true); swal.clickConfirm(); }); test('input range', function(assert) { swal({input: 'range', inputAttributes: {min: 1, max: 10}, inputValue: 5 }); var input = $('.swal2-range input'); assert.equal(input.attr('min'), '1'); assert.equal(input.attr('max'), '10'); assert.equal(input.val(), '5'); }); test('queue', function(assert) { var done = assert.async(); var steps = ['Step 1', 'Step 2']; assert.equal(swal.getQueueStep(), null); swal.setDefaults({animation: false}); swal.queue(steps).then(function() { swal('All done!'); }); assert.equal($('.swal2-modal h2').text(), 'Step 1'); assert.equal(swal.getQueueStep(), 0); swal.clickConfirm(); setTimeout(function() { assert.equal($('.swal2-modal h2').text(), 'Step 2'); assert.equal(swal.getQueueStep(), 1); swal.clickConfirm(); setTimeout(function() { assert.equal($('.swal2-modal h2').text(), 'All done!'); assert.equal(swal.getQueueStep(), null); swal.clickConfirm(); // test queue is cancelled on first step, other steps shouldn't be shown swal.queue(steps).done(); swal.clickCancel(); assert.notOk(swal.isVisible()); done(); }); }); }); test('dymanic queue', function(assert) { var done = assert.async(); var steps = [ { title: 'Step 1', preConfirm: function() { return new Promise(function(resolve) { // insert to the end by default swal.insertQueueStep('Step 3'); // step to be deleted swal.insertQueueStep('Step to be deleted'); // insert with positioning swal.insertQueueStep({ title: 'Step 2', preConfirm: function() { return new Promise(function(resolve) { swal.deleteQueueStep(3); resolve(); }); } }, 1); resolve(); }); } } ]; swal.setDefaults({animation: false}); swal.queue(steps).then(function() { swal('All done!'); }); assert.equal($('.swal2-modal h2').text(), 'Step 1'); swal.clickConfirm(); setTimeout(function() { assert.equal($('.swal2-modal h2').text(), 'Step 2'); assert.equal(swal.getQueueStep(), 1); swal.clickConfirm(); setTimeout(function() { assert.equal($('.swal2-modal h2').text(), 'Step 3'); assert.equal(swal.getQueueStep(), 2); swal.clickConfirm(); setTimeout(function() { assert.equal($('.swal2-modal h2').text(), 'All done!'); assert.equal(swal.getQueueStep(), null); swal.clickConfirm(); done(); }); }); }); }); test('showLoading and hideLoading', function(assert) { swal({ title: 'test loading state', showCancelButton: true }); swal.showLoading(); assert.ok($('.swal2-confirm').hasClass('loading')); assert.ok($('.swal2-cancel').is(':disabled')); swal.hideLoading(); assert.notOk($('.swal2-confirm').hasClass('loading')); assert.notOk($('.swal2-cancel').is(':disabled')); swal({ title: 'test loading state', showConfirmButton: false }); swal.showLoading(); assert.ok($('.swal2-confirm').is(':visible')); assert.ok($('.swal2-confirm').hasClass('loading')); swal.hideLoading(); assert.notOk($('.swal2-confirm').is(':visible')); assert.notOk($('.swal2-confirm').hasClass('loading')); }); test('disable/enable buttons', function(assert) { swal('test disable/enable buttons'); swal.disableButtons(); assert.ok($('.swal2-confirm').is(':disabled')); assert.ok($('.swal2-cancel').is(':disabled')); swal.enableButtons(); assert.notOk($('.swal2-confirm').is(':disabled')); assert.notOk($('.swal2-cancel').is(':disabled')); swal.disableConfirmButton(); assert.ok($('.swal2-confirm').is(':disabled')); swal.enableConfirmButton(); assert.notOk($('.swal2-confirm').is(':disabled')); }); test('input radio', function(assert) { swal({ input: 'radio', inputOptions: { 'one': 'one', 'two': 'two' } }); assert.equal($('.swal2-radio label').length, 2); assert.equal($('.swal2-radio input[type="radio"]').length, 2); }); test('disable/enable input', function(assert) { swal({ input: 'text' }); swal.disableInput(); assert.ok($('.swal2-input').is(':disabled')); swal.enableInput(); assert.notOk($('.swal2-input').is(':disabled')); swal({ input: 'radio', inputOptions: { 'one': 'one', 'two': 'two' } }); swal.disableInput(); $('.swal2-radio radio').each(function(radio) { assert.ok(radio.is(':disabled')); }); swal.enableInput(); $('.swal2-radio radio').each(function(radio) { assert.notOk(radio.is(':disabled')); }); }); test('default focus', function(assert) { var done = assert.async(); swal('Modal with the Confirm button only'); assert.ok(document.activeElement === $('.swal2-confirm')[0]); swal({ text: 'Modal with two buttons', showCancelButton: true }); assert.ok(document.activeElement === $('.swal2-confirm')[0]); swal({ text: 'Modal with an input', input: 'text' }); setTimeout(function() { assert.ok(document.activeElement === $('.swal2-input')[0]); done(); }); }); test('reversed buttons', function(assert) { swal({ text: 'Modal with reversed buttons', reverseButtons: true }); assert.ok($('.swal2-confirm').index() - $('.swal2-cancel').index() === 1); swal('Modal with buttons'); assert.ok($('.swal2-cancel').index() - $('.swal2-confirm').index() === 1); }); test('focus cancel', function(assert) { swal({ text: 'Modal with Cancel button focused', showCancelButton: true, focusCancel: true }); assert.ok(document.activeElement === $('.swal2-cancel')[0]); }); test('image custom class', function(assert) { swal({ text: 'Custom class is set', imageUrl: 'image.png', imageClass: 'image-custom-class' }); assert.ok($('.swal2-image').hasClass('image-custom-class')); swal({ text: 'Custom class isn\'t set', imageUrl: 'image.png' }); assert.notOk($('.swal2-image').hasClass('image-custom-class')); }); test('modal vertical offset', function(assert) { var done = assert.async(1); // create a modal with dynamic-height content swal({ imageUrl: '../docs/vs_icon.png', title: 'Title', html: '<hr><div style="height: 50px"></div><p>Text content</p>', type: 'warning', input: 'text', animation: false }); // if we can't load local images, load an external one instead $('.swal2-image').on('error', function() { this.src = 'https://unsplash.it/150/50?random'; }); // listen for image load $('.swal2-image').on('load', function() { var box = $('.swal2-modal')[0].getBoundingClientRect(); var delta = box.top - (box.bottom - box.height); // allow 1px difference, in case of uneven height assert.ok(Math.abs(delta) <= 1); done(); }); });