don't lose our enrollment when navigating between multiple courses with pending invitations
refs #5833 Change-Id: I9e91bb20f7f4f412b2c604f27acb86a02d338323 Reviewed-on: https://gerrit.instructure.com/6596 Tested-by: Hudson <hudson@instructure.com> Reviewed-by: Brian Palmer <brianp@instructure.com>
This commit is contained in:
parent
03d8d6df64
commit
4e1f699a71
|
@ -420,7 +420,7 @@ class CoursesController < ApplicationController
|
|||
# Use the enrollment we already fetched, if possible
|
||||
enrollment = @context_enrollment if @context_enrollment && @context_enrollment.pending? && (@context_enrollment.uuid == params[:invitation] || params[:invitation].blank?)
|
||||
# Overwrite with the session enrollment, if one exists, and it's different than the current user's
|
||||
enrollment = @context.enrollments.find_by_uuid_and_workflow_state(session[:enrollment_uuid], "invited") if session[:enrollment_uuid] && enrollment.try(:uuid) != session[:enrollment_uuid] && params[:invitation].blank?
|
||||
enrollment = @context.enrollments.find_by_uuid_and_workflow_state(session[:enrollment_uuid], "invited") if session[:enrollment_uuid] && enrollment.try(:uuid) != session[:enrollment_uuid] && params[:invitation].blank? && session[:enrollment_uuid_course_id] == @context.id
|
||||
# Look up the explicitly provided invitation
|
||||
enrollment ||= @context.enrollments.find(:first, :conditions => ["uuid=? AND workflow_state IN ('invited', 'rejected')", params[:invitation]]) unless params[:invitation].blank?
|
||||
if enrollment && enrollment.state_based_on_date == :inactive
|
||||
|
|
|
@ -255,6 +255,28 @@ describe CoursesController do
|
|||
get 'show', :id => @course.id, :invitation => @enrollment.uuid
|
||||
response.should redirect_to(registration_confirmation_url(@user.email_channel.confirmation_code, :enrollment => @enrollment.uuid))
|
||||
end
|
||||
|
||||
it "should not use the session enrollment if it's for the wrong course" do
|
||||
course_with_student(:active_course => 1)
|
||||
@enrollment1 = @enrollment
|
||||
@course1 = @course
|
||||
course(:active_course => 1)
|
||||
student_in_course(:user => @user)
|
||||
@enrollment2 = @enrollment
|
||||
@course2 = @course
|
||||
user_session(@user)
|
||||
|
||||
get 'show', :id => @course1.id
|
||||
response.should be_success
|
||||
assigns[:pending_enrollment].should == @enrollment1
|
||||
session[:enrollment_uuid].should == @enrollment1.uuid
|
||||
|
||||
controller.instance_variable_set(:@pending_enrollment, nil)
|
||||
get 'show', :id => @course2.id
|
||||
response.should be_success
|
||||
assigns[:pending_enrollment].should == @enrollment2
|
||||
session[:enrollment_uuid].should == @enrollment2.uuid
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue