fix page view participation checkmark with a2
Generates a page view for a2 assignment submissions through graphql post. closes EVAL-2290 flag=assignments_2_student Test Plan: - make a course populated with students that has the Assignment Enhancments feature enabled - create an assignment on the course - while acting as a student, submit the assignement to trigger participation - navigate to the student's page views, verify that a participation checkmark appears. Change-Id: I80802137a0d73647cfeb251256cb328c864bbcaf Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/301934 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> QA-Review: Kai Bjorkman <kbjorkman@instructure.com> Reviewed-by: Kai Bjorkman <kbjorkman@instructure.com> Reviewed-by: Eduardo Escobar <eduardo.escobar@instructure.com> Product-Review: Deborah Kwak <deborah.kwak@instructure.com>
This commit is contained in:
parent
bf0d247545
commit
21652bfeb7
|
@ -1051,8 +1051,9 @@ class ApplicationController < ActionController::Base
|
||||||
def get_context(include_deleted: false)
|
def get_context(include_deleted: false)
|
||||||
GuardRail.activate(:secondary) do
|
GuardRail.activate(:secondary) do
|
||||||
unless @context
|
unless @context
|
||||||
if params[:course_id]
|
if params[:course_id] || (request.url.include?("/graphql") && params[:operationName] == "CreateSubmission")
|
||||||
@context = api_find(Course.active, params[:course_id])
|
|
||||||
|
@context = params[:course_id] ? api_find(Course.active, params[:course_id]) : pull_context_course
|
||||||
@context.root_account = @domain_root_account if @context.root_account_id == @domain_root_account.id # no sense in refetching it
|
@context.root_account = @domain_root_account if @context.root_account_id == @domain_root_account.id # no sense in refetching it
|
||||||
params[:context_id] = params[:course_id]
|
params[:context_id] = params[:course_id]
|
||||||
params[:context_type] = "Course"
|
params[:context_type] = "Course"
|
||||||
|
@ -3097,6 +3098,11 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
helper_method :k5_user?
|
helper_method :k5_user?
|
||||||
|
|
||||||
|
def pull_context_course
|
||||||
|
assignment_id = params[:variables][:assignmentLid]
|
||||||
|
::Assignment.active.find(assignment_id).course
|
||||||
|
end
|
||||||
|
|
||||||
def react_discussions_post_enabled_for_preferences_use?
|
def react_discussions_post_enabled_for_preferences_use?
|
||||||
if @context.instance_of?(UserProfile) && Account.default.feature_enabled?(:react_discussions_post)
|
if @context.instance_of?(UserProfile) && Account.default.feature_enabled?(:react_discussions_post)
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -37,6 +37,7 @@ class GraphQLController < ApplicationController
|
||||||
|
|
||||||
def execute
|
def execute
|
||||||
result = execute_on(CanvasSchema)
|
result = execute_on(CanvasSchema)
|
||||||
|
prep_page_view_for_submit
|
||||||
render json: result
|
render json: result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -103,4 +104,12 @@ class GraphQLController < ApplicationController
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def prep_page_view_for_submit
|
||||||
|
return unless params[:operationName] == "CreateSubmission"
|
||||||
|
|
||||||
|
assignment = ::Assignment.active.find(params[:variables][:assignmentLid])
|
||||||
|
get_context
|
||||||
|
log_asset_access(assignment, "assignments", nil, "participate")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -82,6 +82,35 @@ describe GraphQLController do
|
||||||
expect(JSON.parse(response.body)["data"]).to be_blank
|
expect(JSON.parse(response.body)["data"]).to be_blank
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "logs a page view for CreateSubmission" do
|
||||||
|
Setting.set("enable_page_views", "db")
|
||||||
|
@course = course_factory(name: "course", active_course: true)
|
||||||
|
|
||||||
|
@assignment = @course.assignments.create!(
|
||||||
|
name: "assignment",
|
||||||
|
due_at: 5.days.ago,
|
||||||
|
points_possible: 10,
|
||||||
|
submission_types: "online_text_entry"
|
||||||
|
)
|
||||||
|
|
||||||
|
test_query = <<~GQL
|
||||||
|
mutation {
|
||||||
|
CreateSubmission(input: {assignmentId: $assignmentLid, submissionType: $type, body: $body})
|
||||||
|
GQL
|
||||||
|
|
||||||
|
test_variables = {
|
||||||
|
assignmentLid: @assignment.id,
|
||||||
|
body: "<p>test</p>",
|
||||||
|
type: "online_text_entry"
|
||||||
|
}
|
||||||
|
# need this for the page view to be assigned a proper request_id
|
||||||
|
RequestContext::Generator.new(->(_env) { [200, {}, []] }).call({})
|
||||||
|
|
||||||
|
expect { post :execute, params: { query: test_query, operationName: "CreateSubmission", variables: test_variables }, format: :json }.to change { PageView.count }.by(1)
|
||||||
|
|
||||||
|
expect(PageView.last.participated).to be(true)
|
||||||
|
end
|
||||||
|
|
||||||
context "datadog metrics" do
|
context "datadog metrics" do
|
||||||
before { allow(InstStatsd::Statsd).to receive(:increment).and_call_original }
|
before { allow(InstStatsd::Statsd).to receive(:increment).and_call_original }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue