8cc325f42d4ebcea8724a3b518f56a7c56c17cb9
[ccsdk/features.git] /
1 describe("app.ui.RefreshButton", function() {
2
3         var RefreshButton = window.app.ui.RefreshButton;
4
5         var r, refresh_handler, change_handler;
6
7         function openMenuPanel( button, label ) {
8                 button.el.find("BUTTON").eq(1).click();
9                 $(".uiMenuPanel-label:contains(" + label + ")").click();
10                 test.clock.tick(); // menuPanel -> bind _close_handler
11         }
12
13
14         beforeEach( function() {
15                 test.clock.steal();
16                 refresh_handler = jasmine.createSpy("refresh_handler");
17                 change_handler = jasmine.createSpy("change_handler");
18                 r = new RefreshButton({
19                         onRefresh: refresh_handler,
20                         onChange: change_handler
21                 });
22                 r.attach( document.body );
23         });
24
25         afterEach( function() {
26                 r.remove();
27                 test.clock.restore();
28         });
29
30         it("should have an initial default value", function() {
31                 expect( r.value ).toBe( -1 );
32         });
33
34         it("should fire a refresh event after clicking the refresh button ", function() {
35                 r.el.find("BUTTON").eq(0).click();
36
37                 expect( refresh_handler ).toHaveBeenCalled();
38         });
39
40         it("should change the refresh rate when set it called", function() {
41                 r.set( 100 );
42                 expect( r.value ).toBe( 100 );
43         });
44
45         it("should set an interval when rate is set to a positive value", function() {
46                 r.set( 100 );
47                 test.clock.tick();
48                 expect( refresh_handler.calls.count() ).toBe( 1 );
49         });
50
51         it("should not set an interval when rate is set to a non positive value", function() {
52                 r.set( -1 );
53                 test.clock.tick();
54                 expect( refresh_handler.calls.count() ).toBe( 0 );
55         });
56
57         it("should fire a refresh event on intervals if refresh menu item is set to quickly", function() {
58                 openMenuPanel( r, "quickly" );
59
60                 expect( refresh_handler.calls.count() ).toBe( 0 );
61                 test.clock.tick();
62                 expect( refresh_handler.calls.count() ).toBe( 1 );
63                 test.clock.tick();
64                 expect( refresh_handler.calls.count() ).toBe( 2 );
65         });
66
67         it("should not fire refresh events when user selects Manual", function() {
68
69                 openMenuPanel( r, "quickly" );
70
71                 expect( refresh_handler.calls.count() ).toBe( 0 );
72                 test.clock.tick();
73                 expect( refresh_handler.calls.count() ).toBe( 1 );
74
75                 openMenuPanel( r, "Manual" );
76
77                 test.clock.tick();
78                 expect( refresh_handler.calls.count() ).toBe( 1 );
79                 test.clock.tick();
80                 expect( refresh_handler.calls.count() ).toBe( 1 );
81         });
82
83         it("should fire a change event when a new refresh rate is selected", function() {
84                 openMenuPanel( r, "quickly" );
85                 expect( change_handler.calls.count() ).toBe( 1 );
86                 expect( r.value ).toBe( 100 );
87                 openMenuPanel( r, "Manual" );
88                 expect( change_handler.calls.count() ).toBe( 2 );
89                 expect( r.value ).toBe( -1 );
90         });
91
92 });