added Tom Marble's slides
[lp17-speaker-slides.git] / Tom-Marble / deck.js / test / spec.navigation.js
1 describe('Deck JS Navigation Buttons', function() {
2 beforeEach(function() {
3 loadFixtures('standard.html');
4 if (Modernizr.history) {
5 history.replaceState({}, "", "#")
6 }
7 else {
8 window.location.hash = '#';
9 }
10 $.deck('.slide');
11 });
12
13 it('should go to the next slide if next link is clicked', function() {
14 $(defaults.selectors.nextLink).click();
15 expect($.deck('getSlide')).toHaveClass('slide2');
16 });
17
18 it('should go to the previous slide if previous link is clicked', function() {
19 $.deck('go', 2);
20 $(defaults.selectors.previousLink).click();
21 expect($.deck('getSlide')).toHaveClass('slide2');
22 });
23
24 it('should add the disabled class to the previous link if on first slide', function() {
25 expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled);
26 $(defaults.selectors.nextLink).click();
27 expect($(defaults.selectors.previousLink)).not.toHaveClass(defaults.classes.navDisabled);
28 $(defaults.selectors.previousLink).click();
29 expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled);
30 });
31
32 it('should add aria-disabled to previous link if on first slide', function() {
33 $.deck('go', 0);
34 expect($(defaults.selectors.previousLink)).toHaveAttr('aria-disabled', 'true');
35 });
36
37 it('should add the disabled class to the next link if on last slide', function() {
38 expect($(defaults.selectors.nextLink)).not.toHaveClass(defaults.classes.navDisabled);
39 $.deck('go', $.deck('getSlides').length - 1);
40 expect($(defaults.selectors.nextLink)).toHaveClass(defaults.classes.navDisabled);
41 });
42
43 it('should add aria-disabled to next link if on last slide', function() {
44 $.deck('go', $.deck('getSlides').length - 1);
45 expect($(defaults.selectors.nextLink)).toHaveAttr('aria-disabled', 'true');
46 });
47
48 it('should not start disabled if deck initialized in the middle', function() {
49 $.deck('go', 2);
50 $.deck('.slide');
51 waitsFor(function() {
52 return !$(defaults.selectors.previousLink).hasClass(defaults.classes.navDisabled);
53 });
54 });
55
56 it('should update the links hrefs with real fragment ids', function() {
57 expect($(defaults.selectors.previousLink).attr('href')).toMatch(/#$/);
58 expect($(defaults.selectors.nextLink).attr('href')).toMatch('#custom-id');
59 $.deck('go', 2);
60 expect($(defaults.selectors.previousLink).attr('href')).toMatch('#custom-id');
61 expect($(defaults.selectors.nextLink).attr('href')).toMatch('#slide-3');
62 });
63 });