Refactor LTI parameters and add study group

* This change also requires that submissions in our test need to have a valid study group.
This commit is contained in:
Sebastian Serth
2023-08-19 11:28:57 +02:00
committed by Sebastian Serth
parent e2baa2ee55
commit e3603758ef
18 changed files with 114 additions and 54 deletions

View File

@ -108,7 +108,7 @@ describe Lti do
let(:submission) { create(:submission) }
before do
create(:lti_parameter, consumers_id: consumer.id, external_users_id: submission.contributor_id, exercises_id: submission.exercise_id)
create(:lti_parameter, external_user: submission.contributor, exercise: submission.exercise)
end
context 'with an invalid score' do
@ -173,15 +173,15 @@ describe Lti do
controller.instance_variable_set(:@current_user, create(:external_user))
controller.instance_variable_set(:@exercise, create(:fibonacci))
expect(controller.session).to receive(:[]=).with(:external_user_id, anything)
controller.send(:store_lti_session_data, consumer: build(:consumer), parameters:)
controller.send(:store_lti_session_data, parameters)
end
it 'creates an LtiParameter Object' do
before_count = LtiParameter.count
controller.instance_variable_set(:@current_user, create(:external_user))
controller.instance_variable_set(:@exercise, create(:fibonacci))
controller.send(:store_lti_session_data, consumer: build(:consumer), parameters:)
expect(LtiParameter.count).to eq(before_count + 1)
expect do
controller.instance_variable_set(:@current_user, create(:external_user))
controller.instance_variable_set(:@exercise, create(:fibonacci))
controller.send(:store_lti_session_data, parameters)
end.to change(LtiParameter, :count).by(1)
end
end

View File

@ -101,7 +101,6 @@ describe SessionsController do
end
it 'stores LTI parameters in the session' do
# Todo replace session with lti_parameter /should be done already
expect(controller).to receive(:store_lti_session_data)
perform_request
end
@ -191,7 +190,6 @@ describe SessionsController do
end
it 'clears the session' do
# Todo replace session with lti_parameter /should be done already
expect(controller).to receive(:clear_lti_session_data)
delete :destroy
end
@ -207,15 +205,12 @@ describe SessionsController do
let(:submission) { create(:submission, exercise: create(:dummy)) }
before do
# Todo replace session with lti_parameter
# Todo create LtiParameter Object
# session[:lti_parameters] = {}
create(:lti_parameter, external_user: submission.contributor)
allow(controller).to receive(:current_user).and_return(submission.contributor)
perform_request.call
end
it 'clears the session' do
# Todo replace session with lti_parameter /should be done already
expect(controller).to receive(:clear_lti_session_data)
perform_request.call
end

View File

@ -8,12 +8,18 @@ FactoryBot.define do
}.freeze
factory :lti_parameter do
consumer
exercise factory: :math
external_user
lti_parameters { lti_params }
after(:create) do |lti_parameter|
# Do not change anything if a study group was provided explicitly or user has no study groups
next if lti_parameter.study_group.present? || lti_parameter.external_user.study_groups.blank?
lti_parameter.update!(study_group: lti_parameter.external_user.study_groups.first)
end
trait :without_outcome_service_url do
lti_parameters { lti_params.except(:lis_outcome_service_url) }
end