Commit 74cae69d authored by Caleb Guanzon's avatar Caleb Guanzon Committed by SaltNPepa
Browse files

wrap offending Type classes in Types module

flag=none
fixes VICE-2640

test plan:
- bundle exec rails s
- visit a page that uses graphql
- make a backend change that will affect a
page that queries graphql
(assignments2, notifications, discussions, inbox)
- reload your page
- verify that page reloads just fine
without having to restart rails

Change-Id: Ic8b0dd5c20750915ce1518c93d2eef0ed384267b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/287813

Tested-by: default avatarService Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: default avatarJason Gillett <jason.gillett@instructure.com>
Product-Review: Jason Gillett <jason.gillett@instructure.com>
QA-Review: Omar Soto-Fortuño <omar.soto@instructure.com>
parent 47c90503
......@@ -64,14 +64,16 @@ class UnreadCommentCountLoader < GraphQL::Batch::Loader
end
end
class SubmissionRubricAssessmentFilterInputType < Types::BaseInputObject
graphql_name "SubmissionRubricAssessmentFilterInput"
argument :for_attempt, Integer, <<~MD, required: false, default_value: nil
What submission attempt the rubric assessment should be returned for. If not
specified, it will return the rubric assessment for the current submisssion
or submission history.
MD
module Types
class SubmissionRubricAssessmentFilterInputType < Types::BaseInputObject
graphql_name "SubmissionRubricAssessmentFilterInput"
argument :for_attempt, Integer, <<~MD, required: false, default_value: nil
What submission attempt the rubric assessment should be returned for. If not
specified, it will return the rubric assessment for the current submisssion
or submission history.
MD
end
end
module Interfaces::SubmissionInterface
......@@ -285,7 +287,7 @@ module Interfaces::SubmissionInterface
end
field :rubric_assessments_connection, Types::RubricAssessmentType.connection_type, null: true do
argument :filter, SubmissionRubricAssessmentFilterInputType, required: false, default_value: {}
argument :filter, Types::SubmissionRubricAssessmentFilterInputType, required: false, default_value: {}
end
def rubric_assessments_connection(filter:)
filter = filter.to_h
......
......@@ -18,20 +18,22 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class OnlineSubmissionType < Types::BaseEnum
VALID_SUBMISSION_TYPES = %w[
basic_lti_launch
student_annotation
media_recording
online_text_entry
online_upload
online_url
].freeze
graphql_name "OnlineSubmissionType"
description "Types that can be submitted online"
VALID_SUBMISSION_TYPES.each { |type| value(type) }
module Types
class OnlineSubmissionType < Types::BaseEnum
VALID_SUBMISSION_TYPES = %w[
basic_lti_launch
student_annotation
media_recording
online_text_entry
online_upload
online_url
].freeze
graphql_name "OnlineSubmissionType"
description "Types that can be submitted online"
VALID_SUBMISSION_TYPES.each { |type| value(type) }
end
end
class Mutations::CreateSubmission < Mutations::BaseMutation
......@@ -50,7 +52,7 @@ class Mutations::CreateSubmission < Mutations::BaseMutation
required: false, prepare: GraphQLHelpers.relay_or_legacy_ids_prepare_func("Attachment")
argument :media_id, ID, required: false
argument :resource_link_lookup_uuid, String, required: false
argument :submission_type, OnlineSubmissionType, required: true
argument :submission_type, Types::OnlineSubmissionType, required: true
argument :url, String, required: false
field :submission, Types::SubmissionType, null: true
......
......@@ -17,17 +17,20 @@
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class RatingInputType < Types::BaseEnum
graphql_name "RatingInputType"
value "not_liked", value: 0
value "liked", value: 1
end
class ReportType < Types::BaseEnum
graphql_name "ReportType"
value "inappropriate", value: "inappropriate"
value "offensive", value: "offensive"
value "other", value: "other"
module Types
class RatingInputType < Types::BaseEnum
graphql_name "RatingInputType"
value "not_liked", value: 0
value "liked", value: 1
end
class ReportType < Types::BaseEnum
graphql_name "ReportType"
value "inappropriate", value: "inappropriate"
value "offensive", value: "offensive"
value "other", value: "other"
end
end
class Mutations::UpdateDiscussionEntryParticipant < Mutations::BaseMutation
......@@ -35,9 +38,9 @@ class Mutations::UpdateDiscussionEntryParticipant < Mutations::BaseMutation
argument :discussion_entry_id, ID, required: true, prepare: GraphQLHelpers.relay_or_legacy_id_prepare_func("DiscussionEntry")
argument :read, Boolean, required: false
argument :rating, RatingInputType, required: false
argument :rating, Types::RatingInputType, required: false
argument :forced_read_state, Boolean, required: false
argument :report_type, ReportType, required: false
argument :report_type, Types::ReportType, required: false
field :discussion_entry, Types::DiscussionEntryType, null: false
def resolve(input:)
......
......@@ -18,20 +18,22 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class NotificationFrequencyType < Types::BaseEnum
graphql_name "NotificationFrequencyType"
description "Frequency that notifications can be delivered on"
value "immediately"
value "daily"
value "weekly"
value "never"
end
module Types
class NotificationFrequencyType < Types::BaseEnum
graphql_name "NotificationFrequencyType"
description "Frequency that notifications can be delivered on"
value "immediately"
value "daily"
value "weekly"
value "never"
end
class NotificationCategoryType < Types::BaseEnum
graphql_name "NotificationCategoryType"
description "The categories that a notification can belong to"
Notification.valid_configurable_types.each do |type|
value type
class NotificationCategoryType < Types::BaseEnum
graphql_name "NotificationCategoryType"
description "The categories that a notification can belong to"
Notification.valid_configurable_types.each do |type|
value type
end
end
end
......@@ -49,8 +51,8 @@ class Mutations::UpdateNotificationPreferences < Mutations::BaseMutation
argument :send_observed_names_in_notifications, Boolean, required: false
argument :communication_channel_id, ID, required: false, prepare: GraphQLHelpers.relay_or_legacy_id_prepare_func("CommunicationChannel")
argument :notification_category, NotificationCategoryType, required: false
argument :frequency, NotificationFrequencyType, required: false
argument :notification_category, Types::NotificationCategoryType, required: false
argument :frequency, Types::NotificationFrequencyType, required: false
argument :is_policy_override, Boolean, required: false
field :user, Types::UserType, null: true
......
......@@ -18,22 +18,22 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
class DiscussionFilterType < Types::BaseEnum
graphql_name "DiscussionFilterType"
description "Search types that can be associated with discussions"
value "all"
value "unread"
value "drafts"
value "deleted"
end
module Types
class DiscussionFilterType < Types::BaseEnum
graphql_name "DiscussionFilterType"
description "Search types that can be associated with discussions"
value "all"
value "unread"
value "drafts"
value "deleted"
end
class DiscussionSortOrderType < Types::BaseEnum
graphql_name "DiscussionSortOrderType"
value "asc", value: :asc
value "desc", value: :desc
end
class DiscussionSortOrderType < Types::BaseEnum
graphql_name "DiscussionSortOrderType"
value "asc", value: :asc
value "desc", value: :desc
end
module Types
class DiscussionType < ApplicationObjectType
graphql_name "Discussion"
......@@ -110,8 +110,8 @@ module Types
field :discussion_entries_connection, Types::DiscussionEntryType.connection_type, null: true do
argument :search_term, String, required: false
argument :filter, DiscussionFilterType, required: false
argument :sort_order, DiscussionSortOrderType, required: false
argument :filter, Types::DiscussionFilterType, required: false
argument :sort_order, Types::DiscussionSortOrderType, required: false
argument :root_entries, Boolean, required: false
end
def discussion_entries_connection(**args)
......@@ -247,8 +247,8 @@ module Types
field :entries_total_pages, Integer, null: true do
argument :per_page, Integer, required: true
argument :search_term, String, required: false
argument :filter, DiscussionFilterType, required: false
argument :sort_order, DiscussionSortOrderType, required: false
argument :filter, Types::DiscussionFilterType, required: false
argument :sort_order, Types::DiscussionSortOrderType, required: false
argument :root_entries, Boolean, required: false
end
def entries_total_pages(**args)
......@@ -258,8 +258,8 @@ module Types
field :root_entries_total_pages, Integer, null: true do
argument :per_page, Integer, required: true
argument :search_term, String, required: false
argument :filter, DiscussionFilterType, required: false
argument :sort_order, DiscussionSortOrderType, required: false
argument :filter, Types::DiscussionFilterType, required: false
argument :sort_order, Types::DiscussionSortOrderType, required: false
end
def root_entries_total_pages(**args)
args[:root_entries] = true
......@@ -275,7 +275,7 @@ module Types
field :search_entry_count, Integer, null: true do
argument :search_term, String, required: false
argument :filter, DiscussionFilterType, required: false
argument :filter, Types::DiscussionFilterType, required: false
end
def search_entry_count(**args)
get_entries(args).then(&:count)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment