1
0
mirror of https://github.com/videojs/video.js.git synced 2024-12-29 02:57:21 +02:00

Updated tests to include unit and integration tests.

This commit is contained in:
Steve Heffernan 2012-12-10 16:40:12 -08:00
parent b4b4d55767
commit e07f9172fa
46 changed files with 340 additions and 129 deletions

12
.jshintrc Normal file
View File

@ -0,0 +1,12 @@
{
"validthis": true,
"laxcomma" : true,
"laxbreak" : true,
"browser" : true,
"eqnull" : true,
"debug" : true,
"devel" : true,
"boss" : true,
"expr" : true,
"asi" : true
}

42
test/integration.html Normal file
View File

@ -0,0 +1,42 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Video.js Test Suite</title>
<!-- QUnit -->
<link rel="stylesheet" href="vendor/qunit/qunit/qunit.css" />
<script src="vendor/qunit/qunit/qunit.js"></script>
<!-- Video.js CSS -->
<link rel="stylesheet" href="../design/video-js.css" type="text/css">
<!-- Video.js JavaScript -->
<script src='../src/core.js'></script>
<script src='../src/lib.js'></script>
<script src='../src/component.js'></script>
<script src='../src/controls.js'></script>
<script src='../src/events.js'></script>
<script src='../src/json.js'></script>
<script src='../src/player.js'></script>
<script src='../src/tech.js'></script>
<script src='../src/tracks.js'></script>
<script src='../tech/html5/html5.js'></script>
<script src='../tech/flash/flash.js'></script>
<script src='../src/setup.js'></script>
<!-- Integration Tests -->
<script src="integration/test.js"></script>
</head>
<body>
<div>
<h1 id="qunit-header">Bootstrap Plugin Test Suite</h1>
<h2 id="qunit-banner"></h2>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture"></div>
</div>
</body>
</html>

View File

@ -43,7 +43,7 @@ function createVideoTag(id){
function playerSetup(){ function playerSetup(){
_V_.el("player_box").appendChild(createVideoTag()) _V_.el("qunit-fixture").appendChild(createVideoTag())
var vid = document.getElementById("vid1"); var vid = document.getElementById("vid1");
this.player = _V_(vid); this.player = _V_(vid);
@ -137,107 +137,107 @@ test("Paused", 2, function() {
this.player.play(); this.player.play();
}); });
test("currentTime()", 1, function() { // test("currentTime()", 1, function() {
stop(); // stop();
// Try for 3 time updates, sometimes it updates at 0 seconds. // // Try for 3 time updates, sometimes it updates at 0 seconds.
// var tries = 0; // // var tries = 0;
// Can't rely on just time update because it's faked for Flash. // // Can't rely on just time update because it's faked for Flash.
this.player.one("loadeddata", _V_.proxy(this, function(){ // this.player.one("loadeddata", _V_.proxy(this, function(){
this.player.addEvent("timeupdate", _V_.proxy(this, function(){ // this.player.addEvent("timeupdate", _V_.proxy(this, function(){
if (this.player.currentTime() > 0) { // if (this.player.currentTime() > 0) {
ok(true, "Time is greater than 0."); // ok(true, "Time is greater than 0.");
start();
} else {
// tries++;
}
// if (tries >= 3) {
// start(); // start();
// } else {
// // tries++;
// } // }
}));
})); // // if (tries >= 3) {
// // start();
this.player.play(); // // }
});
test("currentTime(seconds)", 2, function() {
stop();
// var afterPlayback = _V_.proxy(this, function(){
// this.player.currentTime(this.player.duration() / 2);
//
// this.player.addEvent("timeupdate", _V_.proxy(this, function(){
// ok(this.player.currentTime() > 0, "Time is greater than 0.");
//
// this.player.pause();
//
// this.player.addEvent("timeupdate", _V_.proxy(this, function(){
// ok(this.player.currentTime() == 0, "Time is 0.");
// start();
// })); // }));
//
// this.player.currentTime(0);
// })); // }));
// this.player.play();
// }); // });
// Wait for Source to be ready.
this.player.one("loadeddata", _V_.proxy(this, function(){
_V_.log("loadeddata", this.player); // test("currentTime(seconds)", 2, function() {
this.player.currentTime(this.player.duration() - 1); // stop();
})); // // var afterPlayback = _V_.proxy(this, function(){
// // this.player.currentTime(this.player.duration() / 2);
// //
// // this.player.addEvent("timeupdate", _V_.proxy(this, function(){
// // ok(this.player.currentTime() > 0, "Time is greater than 0.");
// //
// // this.player.pause();
// //
// // this.player.addEvent("timeupdate", _V_.proxy(this, function(){
// // ok(this.player.currentTime() == 0, "Time is 0.");
// // start();
// // }));
// //
// // this.player.currentTime(0);
// // }));
// // });
this.player.one("seeked", _V_.proxy(this, function(){ // // Wait for Source to be ready.
// this.player.one("loadeddata", _V_.proxy(this, function(){
_V_.log("seeked", this.player.currentTime()) // _V_.log("loadeddata", this.player);
ok(this.player.currentTime() > 1, "Time is greater than 1."); // this.player.currentTime(this.player.duration() - 1);
this.player.one("seeked", _V_.proxy(this, function(){ // }));
_V_.log("seeked2", this.player.currentTime()) // this.player.one("seeked", _V_.proxy(this, function(){
ok(this.player.currentTime() <= 1, "Time is less than 1."); // _V_.log("seeked", this.player.currentTime())
start(); // ok(this.player.currentTime() > 1, "Time is greater than 1.");
})); // this.player.one("seeked", _V_.proxy(this, function(){
this.player.currentTime(0); // _V_.log("seeked2", this.player.currentTime())
})); // ok(this.player.currentTime() <= 1, "Time is less than 1.");
this.player.play();
// this.player.one("timeupdate", _V_.proxy(this, function(){
//
// this.player.currentTime(this.player.duration() / 2);
//
// this.player.one("timeupdate", _V_.proxy(this, function(){
// ok(this.player.currentTime() > 0, "Time is greater than 0.");
//
// this.player.pause();
// this.player.currentTime(0);
//
// this.player.one("timeupdate", _V_.proxy(this, function(){
//
// ok(this.player.currentTime() == 0, "Time is 0.");
// start(); // start();
//
// }));
//
// }));
//
//
// })); // }));
}); // this.player.currentTime(0);
// }));
// this.player.play();
// // this.player.one("timeupdate", _V_.proxy(this, function(){
// //
// // this.player.currentTime(this.player.duration() / 2);
// //
// // this.player.one("timeupdate", _V_.proxy(this, function(){
// // ok(this.player.currentTime() > 0, "Time is greater than 0.");
// //
// // this.player.pause();
// // this.player.currentTime(0);
// //
// // this.player.one("timeupdate", _V_.proxy(this, function(){
// //
// // ok(this.player.currentTime() == 0, "Time is 0.");
// // start();
// //
// // }));
// //
// // }));
// //
// //
// // }));
// });
/* Events /* Events
================================================================================ */ ================================================================================ */

View File

@ -1,52 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>QUnit Test Suite</title>
<link rel="stylesheet" href="../design/video-js.css" type="text/css">
<!--[if IE]>
<script src="https://getfirebug.com/firebug-lite.js" type="text/javascript" charset="utf-8"></script>
<![endif]-->
<!-- Video.js Source Files -->
<script src='../src/core.js'></script>
<script src='../src/lib.js'></script>
<script src='../src/component.js'></script>
<script src='../src/controls.js'></script>
<script src='../src/events.js'></script>
<script src='../src/json.js'></script>
<script src='../src/player.js'></script>
<script src='../src/tech.js'></script>
<script src='../src/tracks.js'></script>
<script src='../tech/html5/html5.js'></script>
<script src='../tech/flash/flash.js'></script>
<script src='../src/setup.js'></script>
<!-- END Video.js Source Files -->
<script type="text/javascript" charset="utf-8">
// Easy access to test Flash over HTML5. Add ?flash to URL
if (window.location.href.indexOf("?flash") !== -1) {
_V_.options.techOrder = ["flash"]
}
</script>
<link rel="stylesheet" href="qunit/qunit/qunit.css" type="text/css" media="screen">
<script type="text/javascript" src="qunit/qunit/qunit.js"></script>
<script type="text/javascript" src="test.js"></script>
</head>
<body>
<h1 id="qunit-header">QUnit Test Suite</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup</div>
<div id="player_box"></div>
</body>
</html>

45
test/unit.html Normal file
View File

@ -0,0 +1,45 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Video.js Test Suite</title>
<!-- QUnit -->
<link rel="stylesheet" href="vendor/qunit/qunit/qunit.css" />
<script src="vendor/qunit/qunit/qunit.js"></script>
<!-- Video.js CSS -->
<link rel="stylesheet" href="../design/video-js.css" type="text/css">
<!-- Video.js JavaScript -->
<script src='../src/core.js'></script>
<script src='../src/lib.js'></script>
<script src='../src/component.js'></script>
<script src='../src/controls.js'></script>
<script src='../src/events.js'></script>
<script src='../src/json.js'></script>
<script src='../src/player.js'></script>
<script src='../src/tech.js'></script>
<script src='../src/tracks.js'></script>
<script src='../tech/html5/html5.js'></script>
<script src='../tech/flash/flash.js'></script>
<script src='../src/setup.js'></script>
<!-- Unit Tests -->
<script src="unit/component.js"></script>
<script src="unit/controls.js"></script>
<script src="unit/player.js"></script>
<script src="unit/lib.js"></script>
</head>
<body>
<div>
<h1 id="qunit-header">Bootstrap Plugin Test Suite</h1>
<h2 id="qunit-banner"></h2>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture"></div>
</div>
</body>
</html>

67
test/unit/component.js Normal file
View File

@ -0,0 +1,67 @@
module("Component");
test('should create an element', function(){
var comp = new _V_.Component({}, {});
ok(comp.el.nodeName);
});
test('should init child coponents from options', function(){
var comp = new _V_.Component({}, {
components: {
'component': true
}
});
ok(comp.el.childNodes.length === 1);
});
test('should show and hide an element', function(){
var comp = new _V_.Component({}, {});
comp.hide();
ok(comp.el.style.display === 'none');
comp.show();
ok(comp.el.style.display === 'block');
});
test('should add and remove a CSS class', function(){
var comp = new _V_.Component({}, {});
comp.addClass('test-class');
ok(comp.el.className.indexOf('test-class') !== -1);
comp.removeClass('test-class');
ok(comp.el.className.indexOf('test-class') === -1);
});
test('should add and remove event listeners to element', function(){
var comp = new _V_.Component({}, {});
// No need to make this async because we're triggering events inline.
// We're going to trigger the event after removing the listener,
// So if we get extra asserts that's a problem.
expect(1);
var testListener = function(){
ok(true, 'fired event once');
};
comp.on('test-event', testListener);
comp.trigger('test-event');
comp.off('test-event', testListener);
comp.trigger('test-event');
});
test('should trigger a listener once using one()', function(){
var comp = new _V_.Component({}, {});
expect(1);
var testListener = function(){
ok(true, 'fired event once');
};
comp.one('test-event', testListener);
comp.trigger('test-event');
comp.trigger('test-event');
});

1
test/unit/controls.js vendored Normal file
View File

@ -0,0 +1 @@
module("Controls");

1
test/unit/core.js Normal file
View File

@ -0,0 +1 @@
module("Core");

1
test/unit/events.js Normal file
View File

@ -0,0 +1 @@
module("Events");

69
test/unit/lib.js Normal file
View File

@ -0,0 +1,69 @@
module("Lib");
test('should merge two objects', function(){
var obj1 = { a:1, b:2 };
var obj2 = { b:3, c:4 };
_V_.merge(obj1, obj2);
deepEqual(obj1, {a:1,b:3,c:4} );
});
test('should create an element with attributes', function(){
var el = _V_.createElement('div', { className: 'test-class', 'data-test': 'asdf' })
ok(el.className === 'test-class');
ok(el.getAttribute('data-test') === 'asdf' );
});
test('should insert an element first', function(){
var el1 = document.createElement('div');
var el2 = document.createElement('div');
var el3 = document.createElement('div');
_V_.insertFirst(el2, el1);
ok(el1.childNodes[0] === el2);
_V_.insertFirst(el3, el1);
ok(el1.childNodes[0] === el3);
});
test('should add and remove a CSS class', function(){
var el = document.createElement('div');
_V_.addClass(el, 'test-class')
ok(el.className.indexOf('test-class') !== -1);
_V_.removeClass(el, 'test-class')
ok(el.className.indexOf('test-class') === -1);
});
test('should format the time', function(){
ok(_V_.formatTime(120) === "2:00");
ok(_V_.formatTime(18121) === "5:02:01");
});
test('should uppercase a word', function(){
ok(_V_.uc('asdf') === "Asdf");
});
test('should trim a string', function(){
ok(_V_.trim(' asdf ') === "asdf");
});
test('should round a number', function(){
ok(_V_.round(1.01) === 1);
ok(_V_.round(1.01, 1) === 1.0);
ok(_V_.round(1.01, 2) === 1.01);
ok(_V_.round(1.05, 1) === 1.1);
});
test('should test that an object is empty', function(){
ok(_V_.isEmpty({}) === true);
ok(_V_.isEmpty({ asdf: 'asdf' }) === false);
});
test('should create a fake timerange', function(){
var tr = _V_.createTimeRange(0, 100);
ok(tr.start() === 0);
ok(tr.end() === 100);
ok(tr.length === 1);
});

22
test/unit/player.js Normal file
View File

@ -0,0 +1,22 @@
module("Player", {
setup: function(){
var videoTag = document.createElement('video');
videoTag.id = 'example_1';
videoTag.className = 'video-js vjs-default-skin';
var fixture = document.getElementById('qunit-fixture');
fixture.appendChild(videoTag);
this.player = new _V_.Player(videoTag, {});
},
teardown: function(){
}
});
test('should create and embed a new player element', function(){
ok(this.player.el.nodeName === 'DIV');
ok(this.player.el.parentNode.id === 'qunit-fixture');
ok(this.player.el.className.indexOf('video-js vjs-default-skin') !== -1);
ok(this.player.el.id === 'example_1');
});

1
test/unit/setup.js Normal file
View File

@ -0,0 +1 @@
module("Setup");

1
test/unit/tech.js Normal file
View File

@ -0,0 +1 @@
module("Tech");

1
test/unit/tracks.js Normal file
View File

@ -0,0 +1 @@
module("Tracks");