diff -r 7b55777486c3 -r 75ba66457232 unittests/tests/widgets/playerWidget.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/unittests/tests/widgets/playerWidget.js Fri Apr 06 16:55:34 2012 +0200 @@ -0,0 +1,134 @@ +/* test module for the player widget */ + +function test_player_widget() { + module("player widget testing", + {setup : function() { + this.Popcorn = Popcorn("#popcorn-div"); + + this.dt = new IriSP.DataLoader(); + this.ser = new IriSP.MockSerializer(this.dt, "/url"); /* dummy serializer */ + this.lay = new IriSP.LayoutManager('widget-div'); + + this.config = { + width:650, + height:1, + mode:'radio', + container:'widget-div', + debug:true, + css:'../src/css/LdtPlayer.css'} + }, + teardown: function() { + /* free the popcorn object because it has signal handlers attached to it */ + this.Popcorn = Popcorn("#popcorn-div"); + } + + }); + + test("test player initialisation", function() { + var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser); + player.draw(); + + equal(IriSP.jQuery("#widget-div").length, 1, "test if the div has been added correctly"); + }); + + test("test play button event handler", function() { + var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser); + + var spy_callback = this.spy(); + var spy_callback2 = this.spy(); + this.Popcorn.listen("play", spy_callback); + this.Popcorn.listen("pause", spy_callback2); + sinon.spy(player, "playHandler"); + + player.draw(); + + player.selector.find(".ldt-CtrlPlay").trigger("click"); + player.selector.find(".ldt-CtrlPlay").trigger("click"); + ok(player.playHandler.calledTwice, "play handler called"); + }); + + test("test mute button event handler", function() { + var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser); + + var spy_callback = this.spy(); + var spy_handler = sinon.spy(player, "muteHandler"); + this.Popcorn.listen("volumechange", spy_callback); + + player.draw(); + + player.selector.find(".ldt-CtrlSound").trigger("click"); + ok(this.Popcorn.muted(), "the player is muted"); + + player.selector.find(".ldt-CtrlSound").trigger("click"); + ok(!this.Popcorn.muted(), "the player is un muted"); + ok(spy_handler.called, "handling function has been called"); + }); + + test("test search button event handler", function() { + var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser); + + var searchTerm = "blah"; + + var spy_callback = this.spy(); + var spy_open = this.spy(); + var spy_closed = this.spy(); + var spy_cleared = this.spy(); + var spy_handler = sinon.spy(player, "searchButtonHandler"); + + player._Popcorn.listen("IriSP.search", spy_callback); + player._Popcorn.listen("IriSP.search.open", spy_open); + player._Popcorn.listen("IriSP.search.closed", spy_closed); + player._Popcorn.listen("IriSP.search.cleared", spy_cleared); + + player.draw(); + + player.selector.find(".ldt-CtrlSearch").trigger("click"); + player.selector.find(".LdtSearchInput").attr('value', searchTerm); + player.selector.find(".LdtSearchInput").trigger('keyup'); + + ok(spy_handler.called, "search button handling function has been called"); + ok(spy_open.called, "open signal has been sent"); + ok(spy_callback.called, "search typeahead function has been called"); + ok(spy_callback.calledWith(searchTerm), "popcorn message sent with the right parameters"); + + player.selector.find(".LdtSearchInput").attr('value', ""); + player.selector.find(".LdtSearchInput").trigger('keyup'); + ok(spy_cleared.called, "clear message has been sent"); + + player.selector.find(".ldt-CtrlSearch").trigger("click"); + ok(spy_closed.called, "closed signal has been sent"); + + }); + + test("test mouseover handler", function() { + var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser); + + var spy_callback = this.spy(); + this.Popcorn.listen("IriSP.PlayerWidget.MouseOver", spy_callback); + this.Popcorn.listen("IriSP.PlayerWidget.MouseOut", spy_callback); + + player.draw(); + var elem = player.selector.get(0); + + if( document.createEvent ) { + var evObj = document.createEvent('MouseEvents'); + evObj.initEvent( 'mouseover', true, false ); + elem.dispatchEvent(evObj); + } else if( document.createEventObject ) { + elem.fireEvent('onmouseover'); + } + + ok(spy_callback.called, "the MouseOver event has been fired"); + + if( document.createEvent ) { + var evObj = document.createEvent('MouseEvents'); + evObj.initEvent( 'mouseout', true, false ); + elem.dispatchEvent(evObj); + } else if( document.createEventObject ) { + elem.fireEvent('onmouseout'); + } + + ok(spy_callback.calledTwice, "the MouseOver event has been fired"); + }); + +};