$(function () {
'use strict'
/* global QUnit */
/* global $ */
/* global AceApp */
QUnit.module('card plugin')
QUnit.test('should be defined on jquery object', function (assert) {
assert.expect(1)
assert.ok($(document.body).aceCard, 'card method is defined')
})
QUnit.module('aceCard', {
beforeEach: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.aceCardNC = $.fn.aceCard.noConflict()
},
afterEach: function () {
$.fn.aceCard = $.fn.aceCardNC
delete $.fn.aceCardNC
$('#qunit-fixture').html('')
}
})
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual(typeof $.fn.aceCard, '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 $card = $el.aceCardNC()
assert.ok($card instanceof $, 'returns jquery collection')
assert.strictEqual($card[0], $el[0], 'collection contains element')
})
QUnit.test('shoud hide/collapse card', function (assert) {
assert.expect(2)
var done = assert.async()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('hidden.ace.card', function () {
assert.ok(card.find('.card-body').is('.collapse:not(.show)'))
done()
})
card.aceCardNC('hide')
assert.ok(card.find('.card-body').is('.collapsing'))
})
QUnit.test('shoud hide/collapse card fast', function (assert) {
assert.expect(1)
var done = assert.async()
var d1 = new Date()
var t1 = d1.getTime()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('hidden.ace.card', function () {
var d2 = new Date()
var t2 = d2.getTime()
assert.ok(t2 - t1 < 20)
done()
})
card.aceCardNC('toggleFast')
})
QUnit.test('shoud show card', function (assert) {
assert.expect(2)
var done = assert.async()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('shown.ace.card', function () {
assert.ok(card.find('.card-body').is('.show'))
done()
})
card.aceCardNC('show')
assert.ok(card.find('.card-body').is('.collapsing'))
})
QUnit.test('shoud show card fast', function (assert) {
assert.expect(1)
var done = assert.async()
var d1 = new Date()
var t1 = d1.getTime()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('shown.ace.card', function () {
var d2 = new Date()
var t2 = d2.getTime()
assert.ok(t2 - t1 < 20)
done()
})
card.aceCardNC('toggleFast')
})
QUnit.test('shoud close/remove card', function (assert) {
assert.expect(2)
var done = assert.async()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('closed.ace.card', function () {
setTimeout(function () {
assert.equal(card.get(0).parentElement, null)
done()
}, 0)
})
card.aceCardNC('close')
assert.ok(card.is('.fade'))
})
QUnit.test('shoud close/remove card fast', function (assert) {
assert.expect(2)
var done = assert.async()
var d1 = new Date()
var t1 = d1.getTime()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('closed.ace.card', function () {
setTimeout(function () {
var d2 = new Date()
var t2 = d2.getTime()
assert.ok(t2 - t1 < 50)
assert.equal(card.get(0).parentElement, null)
done()
}, 0)
})
card.aceCardNC('closeFast')
})
QUnit.test('shoud expand/restore card', function (assert) {
assert.expect(7)
var done = assert.async()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('expanded.ace.card', function () {
assert.ok(card.hasClass('card-expand'))
assert.equal(card.outerWidth(), $(window).width())
assert.equal(card.outerHeight(), $(window).height())
card.aceCardNC('restore')
})
card.get(0).addEventListener('restored.ace.card', function () {
assert.notOk(card.hasClass('card-expand'))
assert.notEqual(card.outerWidth(), $(window).width())
assert.notEqual(card.outerHeight(), $(window).height())
done()
})
card.aceCardNC('expand')
assert.ok(card.is('.card-expanding'))
})
QUnit.test('shoud expand card fast', function (assert) {
assert.expect(1)
var done = assert.async()
var d1 = new Date()
var t1 = d1.getTime()
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('expanded.ace.card', function () {
var d2 = new Date()
var t2 = d2.getTime()
assert.ok(t2 - t1 < 20)
done()
})
card.aceCardNC('expandFast')
})
QUnit.test('shoud remove placeholder of an expanded card', function (assert) {
assert.expect(3)
var done = assert.async()
var card = $('').appendTo('#qunit-fixture')
AceApp.EventHandler.one(card.get(0), 'expanded.ace.card', function () {
card.aceCardNC('close')
})
AceApp.EventHandler.one(card.get(0), 'closed.ace.card', function () {
assert.equal($('.card-expanded-placeholder').length, 0)
setTimeout(function () {
assert.equal(card.get(0).parentElement, null)
done()
}, 0)
})
card.aceCardNC('expand')
assert.equal($('.card-expanded-placeholder').length, 1)
})
QUnit.test('shoud add/remove loading overlay', function (assert) {
assert.expect(2)
var card = $('').appendTo('#qunit-fixture')
card.aceCardNC('startLoading', 'LOADING')
assert.ok(card.text().indexOf('LOADING') >= 0)
card.aceCardNC('stopLoading')
assert.ok(card.text().indexOf('LOADING') === -1)
})
QUnit.test('shoud prevent collapsing/showing/closing/expanding/restoring card', function (assert) {
assert.expect(3)
var card = $('').appendTo('#qunit-fixture')
card.get(0).addEventListener('hide.ace.card', (ev) => {
ev.preventDefault()
})
card.get(0).addEventListener('expand.ace.card', (ev) => {
ev.preventDefault()
})
card.get(0).addEventListener('close.ace.card', (ev) => {
ev.preventDefault()
})
card.aceCardNC('hide')
assert.notOk(card.find('.card-body').is('.collapsing'))
card.aceCardNC('expand')
assert.notOk(card.is('.card-expanding'))
card.aceCardNC('close')
assert.notOk(card.is('.fade'))
})
QUnit.test('should return card version', function (assert) {
assert.expect(1)
if (typeof AceApp.Card !== 'undefined') {
assert.ok(typeof AceApp.Card.VERSION === 'string')
} else {
assert.notOk()
}
})
})