Add arguments for assignment input object
closes VICE-3798 flag=discussion_create Test Plan: - create an assignment via graphiql - with gradingStandardId - create a discussion topic - with assignment NOTE: the assignment field will always return null because the actual assignment creation will be done in VICE-3799 Sample for discussion topic with assignment: mutation MyMutation { __typename createDiscussionTopic(input: {contextId: "1", contextType: "Course", assignment: { name: "GQL Test Assignment Create 1", courseId: "1", pointsPossible: 15 }, title: "GQL Test Assignment Create 1" }) { discussionTopic { _id title assignment { _id } } } } Change-Id: Ib86f69307d6d2c91888cc88aab6d48d1fc163c44 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/330480 Reviewed-by: Jason Gillett <jason.gillett@instructure.com> Product-Review: Jason Gillett <jason.gillett@instructure.com> QA-Review: Caleb Guanzon <cguanzon@instructure.com> Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
This commit is contained in:
parent
63b356d41c
commit
b522d8ae04
|
@ -47,6 +47,20 @@ class Mutations::AssignmentPeerReviewsUpdate < GraphQL::Schema::InputObject
|
|||
argument :automatic_reviews, Boolean, required: false
|
||||
end
|
||||
|
||||
class Mutations::AssignmentCreateOrUpdate < GraphQL::Schema::InputObject
|
||||
argument :assignment_group_id, ID, required: false
|
||||
argument :assignment_overrides, [Mutations::AssignmentOverrideCreateOrUpdate], required: false
|
||||
argument :course_id, ID, required: true
|
||||
argument :due_at, Types::DateTimeType, required: false
|
||||
argument :grading_type, Types::AssignmentType::AssignmentGradingType, required: false
|
||||
argument :grading_standard_id, ID, required: false
|
||||
argument :lock_at, Types::DateTimeType, required: false
|
||||
argument :name, String, required: true
|
||||
argument :peer_reviews, Mutations::AssignmentPeerReviewsUpdate, required: false
|
||||
argument :points_possible, Float, required: false
|
||||
argument :unlock_at, Types::DateTimeType, required: false
|
||||
end
|
||||
|
||||
class Mutations::AssignmentBase < Mutations::BaseMutation
|
||||
# we are required to wrap the update method with a proxy class because
|
||||
# we are required to include `Api` for instance methods within the module.
|
||||
|
@ -109,6 +123,7 @@ class Mutations::AssignmentBase < Mutations::BaseMutation
|
|||
argument :allowed_attempts, Int, required: false
|
||||
argument :only_visible_to_overrides, Boolean, required: false
|
||||
argument :submission_types, [Types::AssignmentSubmissionType], required: false
|
||||
argument :grading_standard_id, ID, required: false
|
||||
argument :peer_reviews, Mutations::AssignmentPeerReviewsUpdate, required: false
|
||||
argument :moderated_grading, Mutations::AssignmentModeratedGradingUpdate, required: false
|
||||
argument :grade_group_students_individually, Boolean, required: false
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
class Mutations::DiscussionBase < Mutations::BaseMutation
|
||||
argument :allow_rating, Boolean, required: false
|
||||
argument :assignment, Mutations::AssignmentCreateOrUpdate, required: false
|
||||
argument :delayed_post_at, Types::DateTimeType, required: false
|
||||
argument :group_category_id, ID, required: false
|
||||
argument :lock_at, Types::DateTimeType, required: false
|
||||
|
|
|
@ -609,7 +609,6 @@ describe DiscussionTopicsController, type: :request do
|
|||
exclude_small_matches_value: 0,
|
||||
submit_papers_to: true
|
||||
},
|
||||
publishable: true,
|
||||
hidden: false,
|
||||
unpublishable: true,
|
||||
only_visible_to_overrides: false,
|
||||
|
|
|
@ -304,6 +304,44 @@ describe Mutations::CreateAssignment do
|
|||
expect(section_override.due_at).to eq due3
|
||||
end
|
||||
|
||||
it "sets lock_at_overridden" do
|
||||
due1 = 1.day.from_now.round.change(min: 1)
|
||||
|
||||
result = execute_with_input <<~GQL
|
||||
name: "assignment with overrides"
|
||||
courseId: "#{@course.to_param}"
|
||||
onlyVisibleToOverrides: true
|
||||
assignmentOverrides: [
|
||||
{
|
||||
studentIds: [#{@student.to_param}]
|
||||
dueAt: "#{due1.iso8601}"
|
||||
lockAt: "#{due1.iso8601}"
|
||||
unlockAt: "#{due1.iso8601}"
|
||||
}
|
||||
]
|
||||
GQL
|
||||
|
||||
assignment = Assignment.find(result.dig("data", "createAssignment", "assignment", "_id"))
|
||||
expect(assignment).to be_only_visible_to_overrides
|
||||
|
||||
student_override = assignment.assignment_overrides.where(set_type: "ADHOC").first
|
||||
expect(student_override.due_at_overridden).to be true
|
||||
expect(student_override.lock_at_overridden).to be true
|
||||
expect(student_override.unlock_at_overridden).to be true
|
||||
end
|
||||
|
||||
it "sets grade_standard_id" do
|
||||
@standard = @course.account.grading_standards.create!(title: "account standard", standard_data: { a: { name: "A", value: "95" }, b: { name: "B", value: "80" }, f: { name: "F", value: "" } })
|
||||
result = execute_with_input <<~GQL
|
||||
name: "assignment with overrides"
|
||||
courseId: "#{@course.to_param}"
|
||||
gradingStandardId: "#{@standard.id}"
|
||||
GQL
|
||||
|
||||
assignment = Assignment.find(result.dig("data", "createAssignment", "assignment", "_id"))
|
||||
expect(assignment.grading_standard_id).to eq @standard.id
|
||||
end
|
||||
|
||||
it "requires a name" do
|
||||
result = execute_with_input <<~GQL
|
||||
courseId: "#{@course.to_param}"
|
||||
|
|
Loading…
Reference in New Issue