$(function () { 'use strict' /* global QUnit */ /* global $ */ /* global AceApp */ QUnit.module('toaster plugin') QUnit.test('should be defined on jquery object', function (assert) { assert.expect(1) assert.ok($(document.body).aceToaster && $.aceToaster, 'toaster method is defined') }) QUnit.module('aceToaster', { beforeEach: function () { // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode $.fn.aceToasterNC = $.fn.aceToaster.noConflict() }, afterEach: function () { $.fn.aceToaster = $.fn.aceToasterNC delete $.fn.aceToasterNC $('#qunit-fixture').html('') $('.ace-toaster-container').remove() } }) QUnit.test('should provide no conflict', function (assert) { assert.expect(1) assert.strictEqual(typeof $.fn.aceToaster, 'undefined', 'aside was set back to undefined (org value)') }) QUnit.test('should return jquery collection containing the element', function (assert) { assert.expect(2) var $el = $('
') var $toaster = $el.aceToasterNC() assert.ok($toaster instanceof $, 'returns jquery collection') assert.strictEqual($toaster[0], $el[0], 'collection contains element') }) QUnit.test('shoud add toast message', function (assert) { assert.expect(6) var toast = $.aceToaster.add({ placement: 'tr', title: 'title1', body: 'body1', bodyClass: 'text-blue', headerClass: 'text-orange' }) assert.ok($(toast).hasClass('showing')) assert.ok($(toast).closest('.ace-toaster-container').hasClass('position-tr')) assert.ok($(toast).hasClass('toast')) assert.strictEqual($(toast).find('.toast-body').text(), 'body1') assert.ok($(toast).find('.toast-body').hasClass('text-blue'), 'body class set') assert.ok($(toast).find('.toast-header').hasClass('text-orange'), 'header class set') }) QUnit.test('should add toast message based on existing HTML element', function (assert) { assert.expect(2) var toast = $('
').get(0) $(toast).aceToasterNC({ placement: 'br' }) assert.ok($(toast).hasClass('showing')) assert.ok($(toast).closest('.ace-toaster-container').hasClass('position-br')) }) QUnit.test('should remove toast by selector', function (assert) { assert.expect(1) var done = assert.async() var toast = $.aceToaster.add({ title: 'title2', body: 'body2' }) setTimeout(function () { $.aceToaster.remove('#' + toast.id) setTimeout(function () { assert.strictEqual(toast.parentNode, null) done() }, 500) }, 500) }) QUnit.test('should remove toasts by position', function (assert) { assert.expect(2) var done = assert.async() var toast1 = $.aceToaster.add({ placement: 'br', title: 'title3', body: 'body3' }) var toast2 = $.aceToaster.add({ placement: 'tr', title: 'title4', body: 'body4' }) setTimeout(function () { $.aceToaster.removeAll('br') setTimeout(function () { assert.strictEqual(toast1.parentNode, null) assert.notEqual(toast2.parentNode, null) done() }, 500) }, 500) }) QUnit.test('should prevent adding toaster', function (assert) { assert.expect(2) let fn = (ev) => { if (ev.target.innerHTML.indexOf('title1') > 0) ev.preventDefault() } document.addEventListener('add.ace.toaster', fn) var toast1 = $.aceToaster.add({ title: 'title1', body: 'body1' }) var toast2 = $.aceToaster.add({ title: 'title2', body: 'body2' }) assert.equal(toast1, null) assert.notEqual(toast2, null) document.removeEventListener('add.ace.toaster', fn) }) QUnit.test('should prevent removing toast messages when they are in "top-right" position', function (assert) { assert.expect(2) var done = assert.async() let fn = (ev) => { if (ev.detail.placement === 'tr' || ev.detail.placement === 'all') ev.preventDefault() } document.addEventListener('clear.ace.toaster', fn) var toast1 = $.aceToaster.add({ title: 'title1', body: 'body1', position: 'tr' }) var toast2 = $.aceToaster.add({ title: 'title2', body: 'body2', position: 'br' }) $.aceToaster.removeAll('br') $.aceToaster.removeAll('tr') setTimeout(function () { setTimeout(function () { assert.notEqual(toast1.parentNode, null) setTimeout(function () { assert.notEqual(toast2.parentNode, null) done() document.removeEventListener('clear.ace.toaster', fn) }, 500) }, 500) }, 500) }) QUnit.test('should return toaster version', function (assert) { assert.expect(1) if (typeof AceApp.Toaster !== 'undefined') { assert.ok(typeof AceApp.Toaster.VERSION === 'string') } else { assert.notOk() } }) })