Files
codeocean/spec/controllers/code_ocean/files_controller_spec.rb
2020-12-07 14:41:30 +01:00

54 lines
1.6 KiB
Ruby

require 'rails_helper'
describe CodeOcean::FilesController do
let(:user) { FactoryBot.create(:admin) }
before(:each) { allow(controller).to receive(:current_user).and_return(user) }
describe 'POST #create' do
let(:submission) { FactoryBot.create(:submission, user: user) }
context 'with a valid file' do
let(:perform_request) { proc { post :create, params: { code_ocean_file: FactoryBot.build(:file, context: submission).attributes, format: :json } } }
before(:each) do
submission.exercise.update(allow_file_creation: true)
perform_request.call
end
expect_assigns(file: CodeOcean::File)
it 'creates the file' do
expect { perform_request.call }.to change(CodeOcean::File, :count)
end
expect_json
expect_status(201)
end
context 'with an invalid file' do
before(:each) do
submission.exercise.update(allow_file_creation: true)
post :create, params: { code_ocean_file: {context_id: submission.id, context_type: Submission}, format: :json }
end
expect_assigns(file: CodeOcean::File)
expect_json
expect_status(422)
end
end
describe 'DELETE #destroy' do
let(:exercise) { FactoryBot.create(:fibonacci) }
let(:perform_request) { proc { delete :destroy, params: { id: exercise.files.first.id } } }
before(:each) { perform_request.call }
expect_assigns(file: CodeOcean::File)
it 'destroys the file' do
FactoryBot.create(:fibonacci)
expect { perform_request.call }.to change(CodeOcean::File, :count).by(-1)
end
expect_redirect(:exercise)
end
end