94 lines
2.7 KiB
Ruby
94 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Graphql
|
|
module Subscriptions
|
|
module Notes
|
|
module Helper
|
|
def subscription_response
|
|
subscription_channel = subscribe
|
|
yield
|
|
subscription_channel.mock_broadcasted_messages.first
|
|
end
|
|
|
|
def notes_subscription(name, noteable, current_user)
|
|
mock_channel = Graphql::Subscriptions::ActionCable::MockActionCable.get_mock_channel
|
|
|
|
query = case name
|
|
when 'workItemNoteDeleted'
|
|
note_deleted_subscription_query(name, noteable)
|
|
when 'workItemNoteUpdated'
|
|
note_updated_subscription_query(name, noteable)
|
|
when 'workItemNoteCreated'
|
|
note_created_subscription_query(name, noteable)
|
|
else
|
|
raise "Subscription query unknown: #{name}"
|
|
end
|
|
|
|
GitlabSchema.execute(query, context: { current_user: current_user, channel: mock_channel })
|
|
|
|
mock_channel
|
|
end
|
|
|
|
def note_subscription(name, noteable, current_user)
|
|
mock_channel = Graphql::Subscriptions::ActionCable::MockActionCable.get_mock_channel
|
|
|
|
query = <<~SUBSCRIPTION
|
|
subscription {
|
|
#{name}(noteableId: \"#{noteable.to_gid}\") {
|
|
id
|
|
body
|
|
}
|
|
}
|
|
SUBSCRIPTION
|
|
|
|
GitlabSchema.execute(query, context: { current_user: current_user, channel: mock_channel })
|
|
|
|
mock_channel
|
|
end
|
|
|
|
private
|
|
|
|
def note_deleted_subscription_query(name, noteable)
|
|
<<~SUBSCRIPTION
|
|
subscription {
|
|
#{name}(noteableId: \"#{noteable.to_gid}\") {
|
|
id
|
|
discussionId
|
|
lastDiscussionNote
|
|
}
|
|
}
|
|
SUBSCRIPTION
|
|
end
|
|
|
|
def note_created_subscription_query(name, noteable)
|
|
<<~SUBSCRIPTION
|
|
subscription {
|
|
#{name}(noteableId: \"#{noteable.to_gid}\") {
|
|
id
|
|
discussion {
|
|
id
|
|
notes {
|
|
nodes {
|
|
id
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
SUBSCRIPTION
|
|
end
|
|
|
|
def note_updated_subscription_query(name, noteable)
|
|
<<~SUBSCRIPTION
|
|
subscription {
|
|
#{name}(noteableId: \"#{noteable.to_gid}\") {
|
|
id
|
|
body
|
|
}
|
|
}
|
|
SUBSCRIPTION
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|