Files
codeocean/spec/controllers/request_for_comments_controller_spec.rb
Sebastian Serth 99bd46af1a Align project files with CodeHarbor
Since both projects are developed together and by the same team, we also want to have the same code structure and utility methods available in both projects. Therefore, this commit changes many files, but without a functional change.
2023-10-11 00:18:33 +02:00

116 lines
3.2 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
RSpec.describe RequestForCommentsController do
render_views
let(:user) { create(:admin) }
before { allow(controller).to receive(:current_user).and_return(user) }
shared_examples 'RfC visibility settings' do
let(:user) { create(:learner) }
let!(:rfc_other_consumer) do
rfc = create(:rfc)
rfc.user.update(consumer: create(:consumer, name: 'Other Consumer'))
rfc
end
let!(:rfc_other_study_group) do
rfc = create(:rfc)
rfc.user.update(consumer: user.consumer)
rfc.submission.update(study_group: create(:study_group))
rfc
end
let!(:rfc_peer) do
rfc = create(:rfc)
rfc.user.update(consumer: user.consumer)
rfc.submission.update(study_group: user.study_groups.first)
rfc
end
context 'when rfc_visibility is set to all' do
before { user.consumer.update(rfc_visibility: 'all') }
it 'shows all RfCs' do
get :index
expect(assigns(:request_for_comments)).to contain_exactly(rfc_other_consumer, rfc_other_study_group, rfc_peer)
end
end
context 'when rfc_visibility is set to consumer' do
before { user.consumer.update(rfc_visibility: 'consumer') }
it 'shows only RfCs of the same consumer' do
get :index
expect(assigns(:request_for_comments)).to contain_exactly(rfc_other_study_group, rfc_peer)
end
end
context 'when rfc_visibility is set to study_group' do
before { user.consumer.update(rfc_visibility: 'study_group') }
it 'shows only RfCs of the same study group' do
get :index
expect(assigns(:request_for_comments)).to contain_exactly(rfc_peer)
end
end
end
describe 'GET #index' do
before { get :index }
expect_template(:index)
expect_http_status(:ok)
it 'shows only rfc`s belonging to selected study group' do
my_study_group = create(:study_group)
rfc_within_my_study_group = create(:rfc, user:)
user.update(study_groups: [my_study_group])
rfc_within_my_study_group.submission.update(study_group: my_study_group)
another_study_group = create(:study_group)
rfc_other_study_group = create(:rfc)
rfc_other_study_group.user.update(study_groups: [another_study_group])
rfc_other_study_group.submission.update(study_group: another_study_group)
get :index, params: {'q[submission_study_group_id_in][]': my_study_group.id}
expect(assigns(:request_for_comments)).to eq([rfc_within_my_study_group])
end
include_examples 'RfC visibility settings'
end
describe 'GET #my_comment_requests' do
before { get :my_comment_requests }
expect_http_status(:ok)
expect_template(:index)
include_examples 'RfC visibility settings'
end
describe 'GET #rfcs_with_my_comments' do
before { get :rfcs_with_my_comments }
expect_http_status(:ok)
expect_template(:index)
include_examples 'RfC visibility settings'
end
describe 'GET #rfcs_for_exercise' do
before do
exercise = create(:even_odd)
get :rfcs_for_exercise, params: {exercise_id: exercise.id}
end
expect_http_status(:ok)
expect_template(:index)
end
end