unittests/tests/widgets/playerWidget.js
branchpopcorn-port
changeset 234 43b198dc932d
child 250 41683e7cb17a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/unittests/tests/widgets/playerWidget.js	Mon Nov 14 12:26:17 2011 +0100
@@ -0,0 +1,105 @@
+/* test module for the player widget */
+
+function test_player_widget() {
+  module("player widget testing", 
+  {setup : function() {    
+    this.Popcorn = Popcorn.youtube("#popcorn-div", "http://www.youtube.com/watch?v=QH2-TGUlwu4");
+    
+    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.youtube("#popcorn-div", "http://www.youtube.com/watch?v=QH2-TGUlwu4");
+  }
+
+  });
+  
+  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");
+    ok(spy_callback2.calledOnce, "test if pause callback has been 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();
+       
+    // IriSP.jQuery("#ldt-CtrlSound").trigger("click");    
+    player.selector.find(".Ldt-Control2 button:first").next().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");  
+  
+  });
+  
+};
\ No newline at end of file