Files
codeocean/spec/models/exercise_spec.rb
Hauke Klement 11a0679b3a fixed style
2015-02-23 12:39:40 +01:00

55 lines
1.5 KiB
Ruby

require 'rails_helper'
describe Exercise do
let(:exercise) { described_class.create.tap { |exercise| exercise.update(public: nil, token: nil) } }
it 'validates the presence of a description' do
expect(exercise.errors[:description]).to be_present
end
it 'validates the presence of an execution environment' do
expect(exercise.errors[:execution_environment_id]).to be_present
end
it 'validates the presence of the public flag' do
expect(exercise.errors[:public]).to be_present
end
it 'validates the presence of a title' do
expect(exercise.errors[:title]).to be_present
end
it 'validates the presence of a token' do
expect(exercise.errors[:token]).to be_present
end
it 'validates the presence of a user' do
expect(exercise.errors[:user_id]).to be_present
expect(exercise.errors[:user_type]).to be_present
end
describe '#duplicate' do
let(:exercise) { FactoryGirl.create(:fibonacci) }
after(:each) { exercise.duplicate }
it 'duplicates the exercise' do
expect(exercise).to receive(:dup).and_call_original
end
it 'overwrites the supplied attributes' do
title = Forgery(:basic).text
expect(exercise.duplicate(title: title).title).to eq(title)
end
it 'duplicates all associated files' do
exercise.files.each do |file|
expect(file).to receive(:dup).and_call_original
end
end
it 'returns the duplicated exercise' do
expect(exercise.duplicate).to be_a(described_class)
end
end
end