added more tests:
- test config options (default and custom) - test invalid parameters (language and theme) - test URL params (long and short)
This commit is contained in:
parent
a8f8aa0947
commit
1e314cba57
2 changed files with 131 additions and 12 deletions
|
@ -2,11 +2,12 @@
|
||||||
<html>
|
<html>
|
||||||
<head lang="en">
|
<head lang="en">
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Test</title>
|
<title>Test bärneruhr.ch</title>
|
||||||
<link rel="stylesheet" type="text/css" href="css/mocha.css"/>
|
<link rel="stylesheet" type="text/css" href="css/mocha.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="../css/uhr.css"/>
|
<link rel="stylesheet" type="text/css" href="../css/uhr.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="../css/uhr-black.css" data-class="black"/>
|
<link rel="stylesheet" type="text/css" href="../css/uhr-black.css" data-class="black"/>
|
||||||
<link rel="stylesheet" type="text/css" href="../css/uhr-red.css" data-class="red"/>
|
<link rel="stylesheet" type="text/css" href="../css/uhr-red.css" data-class="red"/>
|
||||||
|
<link rel="stylesheet" type="text/css" href="../css/uhr-pink.css" data-class="pink"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="u"></div>
|
<div id="u"></div>
|
||||||
|
@ -20,8 +21,8 @@
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="test.js"></script>
|
<script type="text/javascript" src="test.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
mocha.checkLeaks();
|
// mocha.checkLeaks();
|
||||||
mocha.globals(['jQuery*']);
|
// mocha.globals(['jQuery*']);
|
||||||
if (window.mochaPhantomJS) {
|
if (window.mochaPhantomJS) {
|
||||||
mochaPhantomJS.run();
|
mochaPhantomJS.run();
|
||||||
}
|
}
|
||||||
|
|
136
test/test.js
136
test/test.js
|
@ -1,21 +1,139 @@
|
||||||
suite('Bärneruhr', function () {
|
suite('Bärneruhr', function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
var assert = chai.assert;
|
var assert = chai.assert;
|
||||||
test('create widget', function () {
|
var $ = jQuery;
|
||||||
var e = jQuery('#u');
|
var e;
|
||||||
var uhr = e.uhr('instance');
|
|
||||||
assert.isUndefined(uhr);
|
setup(function () {
|
||||||
uhr = e.uhr();
|
e = $('#u');
|
||||||
assert.isNotNull(uhr);
|
|
||||||
assert.isDefined(uhr);
|
|
||||||
});
|
});
|
||||||
test('destroy widget', function() {
|
|
||||||
var e = jQuery('#u');
|
teardown(function () {
|
||||||
var uhr = e.uhr('instance');
|
var uhr = e.uhr('instance');
|
||||||
|
if (uhr !== undefined) {
|
||||||
|
cleanupCookies(uhr.id);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
e.uhr('destroy');
|
||||||
|
} catch (e) {
|
||||||
|
// just TRY to clean up, but don't DIE trying.
|
||||||
|
}
|
||||||
|
window.location.hash = '';
|
||||||
|
});
|
||||||
|
|
||||||
|
function cleanupCookies(id) {
|
||||||
|
$.removeCookie('uhr-language' + id);
|
||||||
|
$.removeCookie('uhr-mode' + id);
|
||||||
|
$.removeCookie('uhr-status' + id);
|
||||||
|
$.removeCookie('uhr-theme' + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
test('create and destroy widget', function () {
|
||||||
|
var uhr = e.uhr('instance');
|
||||||
|
var id;
|
||||||
|
assert.isUndefined(uhr);
|
||||||
|
e.uhr();
|
||||||
|
uhr = e.uhr('instance');
|
||||||
assert.isNotNull(uhr);
|
assert.isNotNull(uhr);
|
||||||
assert.isDefined(uhr);
|
assert.isDefined(uhr);
|
||||||
|
id = uhr.id;
|
||||||
e.uhr('destroy');
|
e.uhr('destroy');
|
||||||
uhr = e.uhr('instance');
|
uhr = e.uhr('instance');
|
||||||
assert.isUndefined(uhr);
|
assert.isUndefined(uhr);
|
||||||
|
// cookies need to be cleaned up separately in this case, because in teardown(), the uhr widget doesn't exist anymore
|
||||||
|
cleanupCookies(id);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('default config', function () {
|
||||||
|
var options;
|
||||||
|
e.uhr();
|
||||||
|
options = e.uhr('instance').options;
|
||||||
|
assert.isTrue(options.autoresize);
|
||||||
|
assert.isTrue(options.controls);
|
||||||
|
assert.isUndefined(options.cookiePath);
|
||||||
|
assert.isFalse(options.force);
|
||||||
|
assert.equal(options.language, 'de_CH');
|
||||||
|
assert.equal(options.mode, 'normal');
|
||||||
|
assert.equal(options.status, 'on');
|
||||||
|
assert.equal(options.theme, 'black');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('custom config', function () {
|
||||||
|
var options;
|
||||||
|
var realWidth;
|
||||||
|
var myWidth = 100;
|
||||||
|
var myOptions = {
|
||||||
|
autoresize: false,
|
||||||
|
controls: false,
|
||||||
|
cookiePath: '/foo/bar',
|
||||||
|
force: true,
|
||||||
|
language: 'de',
|
||||||
|
mode: 'seconds',
|
||||||
|
status: 'off',
|
||||||
|
theme: 'red',
|
||||||
|
width: myWidth + 'px'
|
||||||
|
};
|
||||||
|
e.uhr(myOptions);
|
||||||
|
options = e.uhr('instance').options;
|
||||||
|
assert.equal(options.autoresize, myOptions.autoresize);
|
||||||
|
assert.equal(options.controls, myOptions.controls);
|
||||||
|
assert.equal(options.cookiePath, myOptions.cookiePath);
|
||||||
|
assert.equal(options.force, myOptions.force);
|
||||||
|
assert.equal(options.language, myOptions.language);
|
||||||
|
assert.equal(options.mode, myOptions.mode);
|
||||||
|
assert.equal(options.status, myOptions.status);
|
||||||
|
assert.equal(options.theme, myOptions.theme);
|
||||||
|
assert.equal(options.width, myOptions.width);
|
||||||
|
|
||||||
|
realWidth = e.width();
|
||||||
|
assert.equal(myWidth, realWidth);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('unknown language', function () {
|
||||||
|
var uhr;
|
||||||
|
e.uhr({
|
||||||
|
language: 'klingon'
|
||||||
|
});
|
||||||
|
uhr = e.uhr('instance');
|
||||||
|
// NB: 'de' is just the first language that is included in the page. that may change!
|
||||||
|
assert.equal(uhr.options.language, 'de');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('unknown theme', function () {
|
||||||
|
var uhr;
|
||||||
|
e.uhr({
|
||||||
|
theme: 'klingon'
|
||||||
|
});
|
||||||
|
uhr = e.uhr('instance');
|
||||||
|
// NB: 'black' is the first theme that is included in the test page.
|
||||||
|
assert.equal(uhr.options.theme, 'black');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('URL params, short', function () {
|
||||||
|
var options;
|
||||||
|
|
||||||
|
window.location.hash = '#t=red&l=dk&m=seconds&s=on';
|
||||||
|
|
||||||
|
e.uhr();
|
||||||
|
options = e.uhr('instance').options;
|
||||||
|
assert.isTrue(options.force);
|
||||||
|
assert.equal(options.language, 'dk');
|
||||||
|
assert.equal(options.mode, 'seconds');
|
||||||
|
assert.equal(options.status, 'on');
|
||||||
|
assert.equal(options.theme, 'red');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('URL params, long', function () {
|
||||||
|
var options;
|
||||||
|
|
||||||
|
window.location.hash = '#theme=pink&language=de_CH&mode=normal&status=off';
|
||||||
|
|
||||||
|
e.uhr();
|
||||||
|
options = e.uhr('instance').options;
|
||||||
|
assert.isTrue(options.force);
|
||||||
|
assert.equal(options.language, 'de_CH');
|
||||||
|
assert.equal(options.mode, 'normal');
|
||||||
|
assert.equal(options.status, 'off');
|
||||||
|
assert.equal(options.theme, 'pink');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue