From 27d006735cc57ad9cbb58cd7df026bfbe4fd75e0 Mon Sep 17 00:00:00 2001 From: jmclaus Date: Wed, 18 Sep 2013 13:39:44 +0200 Subject: [PATCH] Bug fixes, mainly in tests --- .../js/spec/video/video_caption_spec.js | 63 ++++++++++--------- .../xmodule/js/src/video/09_video_caption.js | 3 +- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js b/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js index 3b0e4b6a7d..7e39e6c807 100644 --- a/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js +++ b/common/lib/xmodule/xmodule/js/spec/video/video_caption_spec.js @@ -93,7 +93,7 @@ $('.subtitles li[data-index]').each(function(index, link) { expect($(link)).toHaveData('index', index); expect($(link)).toHaveData('start', captionsData.start[index]); - expect($(link)).toHaveData('tabindex', 0); + expect($(link)).toHaveAttr('tabindex', 0); expect($(link)).toHaveText(captionsData.text[index]); }); }); @@ -285,7 +285,7 @@ $('.subtitles li[data-index]').each(function(index, link) { expect($(link)).toHaveData('index', index); expect($(link)).toHaveData('start', captionsData.start[index]); - expect($(link)).toHaveData('tabindex', 0); + expect($(link)).toHaveAttr('tabindex', 0); expect($(link)).toHaveText(captionsData.text[index]); }); }); @@ -580,83 +580,84 @@ describe('when getting focus through TAB key', function() { beforeEach(function() { - $('.subtitles li:first').trigger(jQuery.Event('focus'); + videoCaption.isMouseFocus = false; + $('.subtitles li[data-index=0]').trigger(jQuery.Event('focus')); }); it('shows an outline around the caption', function() { - expect($('.subtitles li:first')).not.toHaveClass('unfocused'); - expect($('.subtitles li:first')).toHaveClass('focused'); + expect($('.subtitles li[data-index=0]')).toHaveClass('focused'); }); it('has automatic scrolling disabled', function() { - expect(videoCaption.autoScrolling).toBe(false)); + expect(videoCaption.autoScrolling).toBe(false); }); }); describe('when loosing focus through TAB key', function() { beforeEach(function() { - $('.subtitles li:first').trigger(jQuery.Event('blur'); + $('.subtitles li[data-index=0]').trigger(jQuery.Event('blur')); }); it('does not show an outline around the caption', function() { - expect($('.subtitles li:first')).not.toHaveClass('focused'); - expect($('.subtitles li:first')).toHaveClass('unfocused'); + expect($('.subtitles li[data-index=0]')).not.toHaveClass('focused'); }); it('has automatic scrolling enabled', function() { - expect(videoCaption.autoScrolling).toBe(true)); + expect(videoCaption.autoScrolling).toBe(true); }); }); - describe('when same caption gets the focus through mouse after having - focus through TAB key', function() { + describe('when same caption gets the focus through mouse after having focus through TAB key', function() { beforeEach(function() { - $('.subtitles li:first').trigger(jQuery.Event('focus'); - $('.subtitles li:first').trigger(jQuery.Event('mouseclick'); + videoCaption.isMouseFocus = false; + $('.subtitles li[data-index=0]').trigger(jQuery.Event('focus')); + $('.subtitles li[data-index=0]').trigger(jQuery.Event('mousedown')); }); it('does not show an outline around it', function() { - expect($('.subtitles li:first')).not.toHaveClass('focused'); - expect($('.subtitles li:first')).toHaveClass('unfocused'); + expect($('.subtitles li[data-index=0]')).not.toHaveClass('focused'); }); it('has automatic scrolling enabled', function() { - expect(videoCaption.autoScrolling).toBe(true)); + expect(videoCaption.autoScrolling).toBe(true); }); }); - describe('when a second caption gets focus through mouse after first had - focus through TAB key', function() { + describe('when a second caption gets focus through mouse after first had focus through TAB key', function() { beforeEach(function() { - $('.subtitles li:first').trigger(jQuery.Event('focus'); - $('.subtitles li:last').trigger(jQuery.Event('mouseclick'); + videoCaption.isMouseFocus = false; + $('.subtitles li[data-index=0]').trigger(jQuery.Event('focus')); + $('.subtitles li[data-index=0]').trigger(jQuery.Event('blur')); + videoCaption.isMouseFocus = true; + $('.subtitles li[data-index=1]').trigger(jQuery.Event('mousedown')); }); it('does not show an outline around the first', function() { - expect($('.subtitles li:first')).not.toHaveClass('focused'); - expect($('.subtitles li:first')).toHaveClass('unfocused'); + expect($('.subtitles li[data-index=0]')).not.toHaveClass('focused'); }); - it('shows an outline around the second', function() { - expect($('.subtitles li:last')).not.toHaveClass('unfocused'); - expect($('.subtitles li:last')).toHaveClass('focused'); + it('does not show an outline around the second', function() { + expect($('.subtitles li[data-index=1]')).not.toHaveClass('focused'); }); it('has automatic scrolling enabled', function() { - expect(videoCaption.autoScrolling).toBe(true)); + expect(videoCaption.autoScrolling).toBe(true); }); }); describe('when enter key is pressed on a caption', function() { beforeEach(function() { - var e = $.Event('keypress'); + var e; + spyOn(videoCaption, 'seekPlayer').andCallThrough(); + videoCaption.isMouseFocus = false; + $('.subtitles li[data-index=0]').trigger(jQuery.Event('focus')); + e = jQuery.Event('keydown'); e.which = 13; // ENTER key - $('.subtitles li:first').trigger(e); + $('.subtitles li[data-index=0]').trigger(e); }); it('shows an outline around it', function() { - expect($('.subtitles li:first')).not.toHaveClass('unfocused'); - expect($('.subtitles li:first')).toHaveClass('focused'); + expect($('.subtitles li[data-index=0]')).toHaveClass('focused'); }); it('calls seekPlayer', function() { diff --git a/common/lib/xmodule/xmodule/js/src/video/09_video_caption.js b/common/lib/xmodule/xmodule/js/src/video/09_video_caption.js index b3c42c0772..ffd845cb13 100644 --- a/common/lib/xmodule/xmodule/js/src/video/09_video_caption.js +++ b/common/lib/xmodule/xmodule/js/src/video/09_video_caption.js @@ -376,8 +376,9 @@ function () { function captionMouseDown(event) { var caption = $(event.target); this.videoCaption.isMouseFocus = true; - caption.removeClass('focused').addClass('unfocused'); this.videoCaption.autoScrolling = true; + caption.removeClass('focused').addClass('unfocused'); + this.videoCaption.currentCaptionIndex = -1; } function captionClick(event) {