From d222d94bbe0b23414dccd07fb0d5fb09b79fc8fe Mon Sep 17 00:00:00 2001 From: Hauke Klement Date: Wed, 18 Feb 2015 10:47:12 +0100 Subject: [PATCH] changed database cleaning strategy --- spec/policies/code_ocean/file_policy_spec.rb | 40 ++++++++------------ spec/policies/exercise_policy_spec.rb | 25 ++++++------ spec/support/database_cleaner.rb | 4 +- 3 files changed, 30 insertions(+), 39 deletions(-) diff --git a/spec/policies/code_ocean/file_policy_spec.rb b/spec/policies/code_ocean/file_policy_spec.rb index 5f7be142..a41f0a0b 100644 --- a/spec/policies/code_ocean/file_policy_spec.rb +++ b/spec/policies/code_ocean/file_policy_spec.rb @@ -3,41 +3,38 @@ require 'rails_helper' describe CodeOcean::FilePolicy do subject { described_class } + let(:exercise) { FactoryGirl.create(:fibonacci) } + let(:submission) { FactoryGirl.create(:submission) } + permissions :create? do context 'as part of an exercise' do - before(:all) do - @exercise = FactoryGirl.create(:fibonacci) - @file = @exercise.files.first - end + let(:file) { exercise.files.first } it 'grants access to admins' do - expect(subject).to permit(FactoryGirl.build(:admin), @file) + expect(subject).to permit(FactoryGirl.build(:admin), file) end it 'grants access to authors' do - expect(subject).to permit(@exercise.author, @file) + expect(subject).to permit(exercise.author, file) end it 'does not grant access to all other users' do [:external_user, :teacher].each do |factory_name| - expect(subject).not_to permit(FactoryGirl.build(factory_name), @file) + expect(subject).not_to permit(FactoryGirl.build(factory_name), file) end end end context 'as part of a submission' do - before(:all) do - @submission = FactoryGirl.create(:submission) - @file = @submission.files.first - end + let(:file) { submission.files.first } it 'grants access to authors' do - expect(subject).to permit(@submission.author, @file) + expect(subject).to permit(submission.author, file) end it 'does not grant access to all other users' do [:admin, :external_user, :teacher].each do |factory_name| - expect(subject).not_to permit(FactoryGirl.build(factory_name), @file) + expect(subject).not_to permit(FactoryGirl.build(factory_name), file) end end end @@ -45,34 +42,29 @@ describe CodeOcean::FilePolicy do permissions :destroy? do context 'as part of an exercise' do - before(:all) do - @exercise = FactoryGirl.create(:fibonacci) - @file = @exercise.files.first - end + let(:file) { exercise.files.first } it 'grants access to admins' do - expect(subject).to permit(FactoryGirl.build(:admin), @file) + expect(subject).to permit(FactoryGirl.build(:admin), file) end it 'grants access to authors' do - expect(subject).to permit(@exercise.author, @file) + expect(subject).to permit(exercise.author, file) end it 'does not grant access to all other users' do [:external_user, :teacher].each do |factory_name| - expect(subject).not_to permit(FactoryGirl.build(factory_name), @file) + expect(subject).not_to permit(FactoryGirl.build(factory_name), file) end end end context 'as part of a submission' do - before(:all) do - @file = FactoryGirl.create(:submission).files.first - end + let(:file) { submission.files.first } it 'does not grant access to anyone' do [:admin, :external_user, :teacher].each do |factory_name| - expect(subject).not_to permit(FactoryGirl.build(factory_name), @file) + expect(subject).not_to permit(FactoryGirl.build(factory_name), file) end end end diff --git a/spec/policies/exercise_policy_spec.rb b/spec/policies/exercise_policy_spec.rb index 9e3d268c..fc170c2f 100644 --- a/spec/policies/exercise_policy_spec.rb +++ b/spec/policies/exercise_policy_spec.rb @@ -3,22 +3,20 @@ require 'rails_helper' describe ExercisePolicy do subject { described_class } - before(:all) do - @exercise = FactoryGirl.build(:dummy, team: FactoryGirl.create(:team)) - end + let(:exercise) { FactoryGirl.build(:dummy, team: FactoryGirl.create(:team)) } [:create?, :index?, :new?].each do |action| permissions(action) do it 'grants access to admins' do - expect(subject).to permit(FactoryGirl.build(:admin), @exercise) + expect(subject).to permit(FactoryGirl.build(:admin), exercise) end it 'grants access to teachers' do - expect(subject).to permit(FactoryGirl.build(:teacher), @exercise) + expect(subject).to permit(FactoryGirl.build(:teacher), exercise) end it 'does not grant access to external users' do - expect(subject).not_to permit(FactoryGirl.build(:external_user), @exercise) + expect(subject).not_to permit(FactoryGirl.build(:external_user), exercise) end end end @@ -26,20 +24,20 @@ describe ExercisePolicy do [:clone?, :destroy?, :edit?, :show?, :statistics?, :update?].each do |action| permissions(action) do it 'grants access to admins' do - expect(subject).to permit(FactoryGirl.build(:admin), @exercise) + expect(subject).to permit(FactoryGirl.build(:admin), exercise) end it 'grants access to authors' do - expect(subject).to permit(@exercise.author, @exercise) + expect(subject).to permit(exercise.author, exercise) end it 'grants access to team members' do - expect(subject).to permit(@exercise.team.members.first, @exercise) + expect(subject).to permit(exercise.team.members.first, exercise) end it 'does not grant access to all other users' do [:external_user, :teacher].each do |factory_name| - expect(subject).not_to permit(FactoryGirl.build(factory_name), @exercise) + expect(subject).not_to permit(FactoryGirl.build(factory_name), exercise) end end end @@ -61,8 +59,6 @@ describe ExercisePolicy do @admin = FactoryGirl.create(:admin) @external_user = FactoryGirl.create(:external_user) @teacher = FactoryGirl.create(:teacher) - @team = FactoryGirl.create(:team) - @team.members << @teacher [@admin, @teacher].each do |user| [true, false].each do |public| @@ -90,6 +86,11 @@ describe ExercisePolicy do end context 'for teachers' do + before(:each) do + @team = FactoryGirl.create(:team) + @team.members << @teacher + end + let(:scope) { Pundit.policy_scope!(@teacher, Exercise) } it 'includes all public exercises' do diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb index bf0d4bab..a15f37ff 100644 --- a/spec/support/database_cleaner.rb +++ b/spec/support/database_cleaner.rb @@ -1,8 +1,6 @@ -require 'database_cleaner' - RSpec.configure do |config| config.before(:suite) do - DatabaseCleaner.strategy = :transaction + DatabaseCleaner.strategy = :truncation DatabaseCleaner.clean_with(:truncation) end