From d6dc41c175e25e45bceabcac93de2e9033808041 Mon Sep 17 00:00:00 2001 From: Hauke Klement Date: Wed, 25 Feb 2015 17:03:43 +0100 Subject: [PATCH] added tests --- .../submissions_controller_spec.rb | 69 +++++++++++++++---- 1 file changed, 57 insertions(+), 12 deletions(-) diff --git a/spec/controllers/submissions_controller_spec.rb b/spec/controllers/submissions_controller_spec.rb index ad4e32c1..e058ec9f 100644 --- a/spec/controllers/submissions_controller_spec.rb +++ b/spec/controllers/submissions_controller_spec.rb @@ -42,16 +42,33 @@ describe SubmissionsController do end context 'with a valid filename' do - let(:file) { submission.files.first } + let(:submission) { FactoryGirl.create(:submission, exercise: FactoryGirl.create(:audio_video)) } before(:each) { get :download_file, filename: file.name_with_extension, id: submission.id } - expect_assigns(file: :file) - expect_assigns(submission: :submission) - expect_content_type('application/octet-stream') - expect_status(200) + context 'for a binary file' do + let(:file) { submission.collect_files.detect { |file| file.file_type.file_extension == '.mp4' } } - it 'sets the correct filename' do - expect(response.headers['Content-Disposition']).to eq("attachment; filename=\"#{file.name_with_extension}\"") + expect_assigns(file: :file) + expect_assigns(submission: :submission) + expect_content_type('application/octet-stream') + expect_status(200) + + it 'sets the correct filename' do + expect(response.headers['Content-Disposition']).to eq("attachment; filename=\"#{file.name_with_extension}\"") + end + end + + context 'for a non-binary file' do + let(:file) { submission.collect_files.detect { |file| file.file_type.file_extension == '.js' } } + + expect_assigns(file: :file) + expect_assigns(submission: :submission) + expect_content_type('text/javascript') + expect_status(200) + + it 'sets the correct filename' do + expect(response.headers['Content-Disposition']).to eq("attachment; filename=\"#{file.name_with_extension}\"") + end end end end @@ -75,14 +92,33 @@ describe SubmissionsController do end context 'with a valid filename' do + let(:submission) { FactoryGirl.create(:submission, exercise: FactoryGirl.create(:audio_video)) } before(:each) { get :render_file, filename: file.name_with_extension, id: submission.id } - expect_assigns(file: :file) - expect_assigns(submission: :submission) - expect_status(200) + context 'for a binary file' do + let(:file) { submission.collect_files.detect { |file| file.file_type.file_extension == '.mp4' } } - it 'renders the file content' do - expect(response.body).to eq(file.content) + expect_assigns(file: :file) + expect_assigns(submission: :submission) + expect_content_type('application/octet-stream') + expect_status(200) + + it 'renders the file content' do + expect(response.body).to eq(file.native_file.read) + end + end + + context 'for a non-binary file' do + let(:file) { submission.collect_files.detect { |file| file.file_type.file_extension == '.js' } } + + expect_assigns(file: :file) + expect_assigns(submission: :submission) + expect_content_type('text/javascript') + expect_status(200) + + it 'renders the file content' do + expect(response.body).to eq(file.content) + end end end end @@ -147,6 +183,15 @@ describe SubmissionsController do expect_template(:show) end + describe 'GET #score' do + let(:request) { proc { get :score, id: submission.id } } + before(:each) { request.call } + + expect_assigns(submission: :submission) + expect_json + expect_status(200) + end + describe 'GET #test' do let(:filename) { submission.collect_files.detect(&:teacher_defined_test?).name_with_extension } let(:output) { {} }