Commit 1107aa2b by Valera Rozuvan

Fix bug multiple choice with video. BLD-788.

The Video element contains an input with type file. When the
Check button was clicked for the multiple choice problem, the
code was acting in different ways when there as a Video on the
page and when there wasn't. This is because in the check_fd()
method there was a selector that was looking for inputs of type
file on the whole page instead of just in the current problem.
When there was a Video pn the page, the page-wide selector
returned the Video's file input, and the check_fd() method
went on believing that the multiple choice has a file input.

The correct way is to look for file inputs only in the current
element.

Added a Jasmine JavaScript unit test.

BLD-788.
parent 1bf5d712
...@@ -124,9 +124,15 @@ describe 'Problem', -> ...@@ -124,9 +124,15 @@ describe 'Problem', ->
expect(@problem.bind).toHaveBeenCalled() expect(@problem.bind).toHaveBeenCalled()
describe 'check_fd', -> describe 'check_fd', ->
xit 'should have more specs written for this functionality', -> beforeEach ->
expect(false) # Insert an input of type file outside of the problem.
$('.xblock-student_view').after('<input type="file" />')
@problem = new Problem($('.xblock-student_view'))
spyOn(@problem, 'check')
it 'check method is called if input of type file is not in problem', ->
@problem.check_fd()
expect(@problem.check).toHaveBeenCalled()
describe 'check', -> describe 'check', ->
beforeEach -> beforeEach ->
...@@ -509,5 +515,3 @@ describe 'Problem', -> ...@@ -509,5 +515,3 @@ describe 'Problem', ->
xit 'serialize all answers', -> xit 'serialize all answers', ->
@problem.refreshAnswers() @problem.refreshAnswers()
expect(@problem.answers).toEqual "input_1_1=one&input_1_2=two" expect(@problem.answers).toEqual "input_1_1=one&input_1_2=two"
...@@ -195,7 +195,7 @@ class @Problem ...@@ -195,7 +195,7 @@ class @Problem
### ###
check_fd: => check_fd: =>
# If there are no file inputs in the problem, we can fall back on @check # If there are no file inputs in the problem, we can fall back on @check
if $('input:file').length == 0 if @el.find('input:file').length == 0
@check() @check()
return return
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment