Update years, links for 1.0
[deck.js.git] / test / spec.menu.js
blob3abca9fc4808923b4edeafed89b016c98ab67c27
1 describe('Deck JS Menu', function() {
2   var $d = $(document);
3   var dsc = defaults.selectors.container;
5   beforeEach(function() {
6     loadFixtures('standard.html');
7     if (Modernizr.history) {
8       history.replaceState({}, "", "#")
9     }
10     else {
11       window.location.hash = '#';
12     }
13     $.deck('.slide');
14   });
16   describe('showMenu()', function() {
17     it('should show the menu', function() {
18       expect($(dsc)).not.toHaveClass(defaults.classes.menu);
19       $.deck('showMenu');
20       expect($(dsc)).toHaveClass(defaults.classes.menu);
21     });
23     it('should do nothing if menu is already showing', function() {
24       if (Modernizr.csstransforms) {
25         $.deck('showMenu');
26         $.deck('showMenu');
27         $.deck('hideMenu');
28         expect($('.slide').attr('style')).toBeFalsy();
29       }
30     });
31   });
33   describe('hideMenu()', function() {
34     it('should hide the menu', function() {
35       $.deck('showMenu');
36       $.deck('hideMenu');
37       expect($(dsc)).not.toHaveClass(defaults.classes.menu);
38     });
39   });
41   describe('toggleMenu()', function() {
42     it('should toggle menu on and off', function() {
43       expect($(dsc)).not.toHaveClass(defaults.classes.menu);
44       $.deck('toggleMenu');
45       expect($(dsc)).toHaveClass(defaults.classes.menu);
46       $.deck('toggleMenu');
47       expect($(dsc)).not.toHaveClass(defaults.classes.menu);
48     });
49   });
51   describe('key bindings', function() {
52     var e;
54     beforeEach(function() {
55       e = jQuery.Event('keydown.deckmenu');
56     });
58     it('should toggle the menu if the specified key is pressed', function() {
59       e.which = 77; // m
60       $d.trigger(e);
61       expect($(dsc)).toHaveClass(defaults.classes.menu);
62       $d.trigger(e);
63       expect($(dsc)).not.toHaveClass(defaults.classes.menu);
64     });
65   });
67   describe('touch bindings', function() {
68     var estart, eend;
70     beforeEach(function() {
71       estart = jQuery.Event('touchstart.deckmenu');
72       eend  = jQuery.Event('touchend.deckmenu');
73     });
75     it('should toggle the menu if the screen is touched', function() {
76       $.deck('getOptions').touch.doubletapWindow = Date.now() + 100000;
77       $.deck('getContainer').trigger(estart);
78       $.deck('getContainer').trigger(eend);
79       expect($(dsc)).toHaveClass(defaults.classes.menu);
80     });
81   });
83 });