added Tom Marble's slides
[lp17-speaker-slides.git] / Tom-Marble / deck.js / test / spec.menu.js
1 describe('Deck JS Menu', function() {
2 var $d = $(document);
3 var dsc = defaults.selectors.container;
4
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 });
15
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 });
22
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 });
32
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 });
40
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 });
50
51 describe('key bindings', function() {
52 var e;
53
54 beforeEach(function() {
55 e = jQuery.Event('keydown.deckmenu');
56 });
57
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 });
66
67 describe('touch bindings', function() {
68 var estart, eend;
69
70 beforeEach(function() {
71 estart = jQuery.Event('touchstart.deckmenu');
72 eend = jQuery.Event('touchend.deckmenu');
73 });
74
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 });
82
83 });