Commit 875267ed authored by Brett Walker's avatar Brett Walker

Remove use of `resolve: ->` from specs

and add new `simple_resolver` helper to
GraphqlHelpers
parent 7757f7e8
...@@ -55,7 +55,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -55,7 +55,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
describe 'with a single permission' do describe 'with a single permission' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, type, null: true, resolve: ->(obj, args, ctx) { test_object }, authorize: permission_single query.field :item, type, null: true, resolver: simple_resolver(test_object), authorize: permission_single
end end
end end
...@@ -66,7 +66,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -66,7 +66,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
let(:query_type) do let(:query_type) do
permissions = permission_collection permissions = permission_collection
query_factory do |qt| query_factory do |qt|
qt.field :item, type, null: true, resolve: ->(obj, args, ctx) { test_object } do qt.field :item, type, null: true, resolver: simple_resolver(test_object) do
authorize permissions authorize permissions
end end
end end
...@@ -79,7 +79,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -79,7 +79,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
describe 'Field authorizations when field is a built in type' do describe 'Field authorizations when field is a built in type' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, type, null: true, resolve: ->(obj, args, ctx) { test_object } query.field :item, type, null: true, resolver: simple_resolver(test_object)
end end
end end
...@@ -132,7 +132,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -132,7 +132,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
describe 'Type authorizations' do describe 'Type authorizations' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, type, null: true, resolve: ->(obj, args, ctx) { test_object } query.field :item, type, null: true, resolver: simple_resolver(test_object)
end end
end end
...@@ -169,7 +169,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -169,7 +169,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, type, null: true, resolve: ->(obj, args, ctx) { test_object }, authorize: permission_2 query.field :item, type, null: true, resolver: simple_resolver(test_object), authorize: permission_2
end end
end end
...@@ -188,7 +188,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -188,7 +188,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, type.connection_type, null: true, resolve: ->(obj, args, ctx) { [test_object, second_test_object] } query.field :item, type.connection_type, null: true, resolver: simple_resolver([test_object, second_test_object])
end end
end end
...@@ -208,9 +208,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -208,9 +208,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
describe 'limiting connections with multiple objects' do describe 'limiting connections with multiple objects' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, type.connection_type, null: true, resolve: ->(obj, args, ctx) do query.field :item, type.connection_type, null: true, resolver: simple_resolver([test_object, second_test_object])
[test_object, second_test_object]
end
end end
end end
...@@ -234,7 +232,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -234,7 +232,7 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, [type], null: true, resolve: ->(obj, args, ctx) { [test_object] } query.field :item, [type], null: true, resolver: simple_resolver([test_object])
end end
end end
...@@ -262,13 +260,13 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do ...@@ -262,13 +260,13 @@ RSpec.describe 'Gitlab::Graphql::Authorization' do
type_factory do |type| type_factory do |type|
type.graphql_name 'FakeProjectType' type.graphql_name 'FakeProjectType'
type.field :test_issues, issue_type.connection_type, null: false, type.field :test_issues, issue_type.connection_type, null: false,
resolve: -> (_, _, _) { Issue.where(project: [visible_project, other_project]).order(id: :asc) } resolver: simple_resolver(Issue.where(project: [visible_project, other_project]).order(id: :asc))
end end
end end
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :test_project, project_type, null: false, resolve: -> (_, _, _) { visible_project } query.field :test_project, project_type, null: false, resolver: simple_resolver(visible_project)
end end
end end
......
...@@ -23,7 +23,7 @@ RSpec.describe 'Graphql Field feature flags' do ...@@ -23,7 +23,7 @@ RSpec.describe 'Graphql Field feature flags' do
let(:query_type) do let(:query_type) do
query_factory do |query| query_factory do |query|
query.field :item, type, null: true, feature_flag: feature_flag, resolve: ->(obj, args, ctx) { test_object } query.field :item, type, null: true, feature_flag: feature_flag, resolver: simple_resolver(test_object)
end end
end end
......
...@@ -11,9 +11,13 @@ RSpec.describe Types::PermissionTypes::BasePermissionType do ...@@ -11,9 +11,13 @@ RSpec.describe Types::PermissionTypes::BasePermissionType do
Class.new(described_class) do Class.new(described_class) do
graphql_name 'TestClass' graphql_name 'TestClass'
permission_field :do_stuff, resolve: -> (_, _, _) { true } permission_field :do_stuff
ability_field(:read_issue) ability_field(:read_issue)
abilities :admin_issue abilities :admin_issue
define_method :do_stuff do
true
end
end end
end end
......
...@@ -22,6 +22,8 @@ RSpec.describe Gitlab::Graphql::MarkdownField do ...@@ -22,6 +22,8 @@ RSpec.describe Gitlab::Graphql::MarkdownField do
.to raise_error(expected_error) .to raise_error(expected_error)
end end
# TODO: remove as part of https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27536
# so that until that time, the developer check is there
it 'raises when passing a resolve block' do it 'raises when passing a resolve block' do
expect { class_with_markdown_field(:test_html, null: true, resolve: -> (_, _, _) { 'not really' } ) } expect { class_with_markdown_field(:test_html, null: true, resolve: -> (_, _, _) { 'not really' } ) }
.to raise_error(expected_error) .to raise_error(expected_error)
......
...@@ -150,6 +150,14 @@ module GraphqlHelpers ...@@ -150,6 +150,14 @@ module GraphqlHelpers
field.resolve_field(instance, args, context) field.resolve_field(instance, args, context)
end end
def simple_resolver(resolved_value = 'Resolved value')
Class.new(Resolvers::BaseResolver) do
define_method :resolve do |**_args|
resolved_value
end
end
end
# Recursively convert a Hash with Ruby-style keys to GraphQL fieldname-style keys # Recursively convert a Hash with Ruby-style keys to GraphQL fieldname-style keys
# #
# prepare_input_for_mutation({ 'my_key' => 1 }) # prepare_input_for_mutation({ 'my_key' => 1 })
......
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