unittests/tests/widgets/playerWidget.js
author hamidouk
Tue, 29 Nov 2011 11:09:08 +0100
branchpopcorn-port
changeset 345 8a088f7daa66
parent 331 ef3447aa6920
child 427 440ffc18f827
permissions -rw-r--r--
rollover over the interface buttons now works as expected. Also changed the width of the buttons to the correct size. Resized the width and height of the sprites to be the same as the boxes we display them in.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     1
/* test module for the player widget */
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     2
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     3
function test_player_widget() {
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     4
  module("player widget testing", 
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     5
  {setup : function() {    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     6
    this.Popcorn = Popcorn.youtube("#popcorn-div", "http://www.youtube.com/watch?v=QH2-TGUlwu4");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     7
    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     8
    this.dt = new IriSP.DataLoader();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
     9
    this.ser = new IriSP.MockSerializer(this.dt, "/url"); /* dummy serializer */
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    10
    this.lay = new IriSP.LayoutManager('widget-div');
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    11
    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    12
    this.config = {
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    13
							width:650,
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    14
							height:1,
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    15
							mode:'radio',
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    16
							container:'widget-div',
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    17
							debug:true,
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    18
							css:'../src/css/LdtPlayer.css'}					
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    19
    },
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    20
  teardown: function() {
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    21
    /* free the popcorn object because it has signal handlers attached to it */
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    22
    this.Popcorn = Popcorn.youtube("#popcorn-div", "http://www.youtube.com/watch?v=QH2-TGUlwu4");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    23
  }
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    24
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    25
  });
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    26
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    27
  test("test player initialisation", function() {  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    28
    var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser);    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    29
    player.draw();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    30
    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    31
    equal(IriSP.jQuery("#widget-div").length, 1, "test if the div has been added correctly");     
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    32
  });
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    33
 
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    34
  test("test play button event handler", function() {
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    35
    var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser);
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    36
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    37
    var spy_callback = this.spy();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    38
    var spy_callback2 = this.spy();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    39
    this.Popcorn.listen("play", spy_callback);
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    40
    this.Popcorn.listen("pause", spy_callback2);
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    41
    sinon.spy(player, "playHandler");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    42
    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    43
    player.draw();        
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    44
250
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    45
    player.selector.find(".ldt-CtrlPlay").trigger("click");    
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    46
    player.selector.find(".ldt-CtrlPlay").trigger("click");
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    47
    ok(player.playHandler.calledTwice, "play handler called");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    48
    ok(spy_callback2.calledOnce, "test if pause callback has been called");                                                                    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    49
  });
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    50
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    51
  test("test mute button event handler", function() {
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    52
    var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser);
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    53
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    54
    var spy_callback = this.spy();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    55
    var spy_handler = sinon.spy(player, "muteHandler");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    56
    this.Popcorn.listen("volumechange", spy_callback);    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    57
    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    58
    player.draw();
250
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    59
         
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    60
    player.selector.find(".ldt-CtrlSound").trigger("click");    
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    61
    ok(this.Popcorn.muted(), "the player is muted");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    62
    
250
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    63
    player.selector.find(".ldt-CtrlSound").trigger("click");
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    64
    ok(!this.Popcorn.muted(), "the player is un muted");         
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    65
    ok(spy_handler.called, "handling function has been called");                                                                                                                                        
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    66
  });
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    67
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    68
  test("test search button event handler", function() {
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    69
  var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser);
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    70
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    71
  var searchTerm = "blah";
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    72
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    73
  var spy_callback = this.spy();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    74
  var spy_open = this.spy();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    75
  var spy_closed = this.spy();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    76
  var spy_cleared = this.spy();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    77
  var spy_handler = sinon.spy(player, "searchButtonHandler");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    78
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    79
  player._Popcorn.listen("IriSP.search", spy_callback);    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    80
  player._Popcorn.listen("IriSP.search.open", spy_open);    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    81
  player._Popcorn.listen("IriSP.search.closed", spy_closed);    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    82
  player._Popcorn.listen("IriSP.search.cleared", spy_cleared);    
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    83
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    84
  player.draw();
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    85
     
250
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    86
  player.selector.find(".ldt-CtrlSearch").trigger("click");
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    87
  player.selector.find(".LdtSearchInput").attr('value', searchTerm); 
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    88
  player.selector.find(".LdtSearchInput").trigger('keyup');
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    89
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    90
  ok(spy_handler.called, "search button handling function has been called");  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    91
  ok(spy_open.called, "open signal has been sent");  
250
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    92
  ok(spy_callback.called, "search typeahead function has been called");  
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    93
  ok(spy_callback.calledWith(searchTerm), "popcorn message sent with the right parameters");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    94
250
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    95
  player.selector.find(".LdtSearchInput").attr('value', ""); 
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    96
  player.selector.find(".LdtSearchInput").trigger('keyup');
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    97
  ok(spy_cleared.called, "clear message has been sent");
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
    98
  
250
41683e7cb17a updated the playerWidget to use classes instead of id's in its elements.
hamidouk
parents: 234
diff changeset
    99
  player.selector.find(".ldt-CtrlSearch").trigger("click");
234
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
   100
  ok(spy_closed.called, "closed signal has been sent");  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
   101
  
43b198dc932d reorganized the layout of the test directories to follow the layout the source
hamidouk
parents:
diff changeset
   102
  });
331
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   103
 
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   104
  test("test mouseover handler", function() {
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   105
    var player = new IriSP.PlayerWidget(this.Popcorn, this.config, this.ser);
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   106
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   107
    var spy_callback = this.spy();
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   108
    this.Popcorn.listen("IriSP.PlayerWidget.MouseOver", spy_callback);    
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   109
    this.Popcorn.listen("IriSP.PlayerWidget.MouseOut", spy_callback);    
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   110
    
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   111
    player.draw();
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   112
    var elem = player.selector.get(0);
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   113
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   114
    if( document.createEvent ) {
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   115
      var evObj = document.createEvent('MouseEvents');
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   116
        evObj.initEvent( 'mouseover', true, false );
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   117
        elem.dispatchEvent(evObj);
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   118
    } else if( document.createEventObject ) {
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   119
        elem.fireEvent('onmouseover');
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   120
    }
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   121
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   122
     ok(spy_callback.called, "the MouseOver event has been fired");
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   123
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   124
     if( document.createEvent ) {
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   125
      var evObj = document.createEvent('MouseEvents');
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   126
        evObj.initEvent( 'mouseout', true, false );
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   127
        elem.dispatchEvent(evObj);
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   128
     } else if( document.createEventObject ) {
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   129
        elem.fireEvent('onmouseout');
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   130
     }
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   131
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   132
     ok(spy_callback.calledTwice, "the MouseOver event has been fired");
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   133
  });
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   134
ef3447aa6920 player widget now sends a special message when the mouse is hovering it.
hamidouk
parents: 250
diff changeset
   135
};