diff options
Diffstat (limited to 'spec/lib/gitlab/graphql/negatable_arguments_spec.rb')
-rw-r--r-- | spec/lib/gitlab/graphql/negatable_arguments_spec.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/spec/lib/gitlab/graphql/negatable_arguments_spec.rb b/spec/lib/gitlab/graphql/negatable_arguments_spec.rb new file mode 100644 index 00000000000..bc6e25eb018 --- /dev/null +++ b/spec/lib/gitlab/graphql/negatable_arguments_spec.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::Graphql::NegatableArguments do + let(:test_resolver) do + Class.new(Resolvers::BaseResolver).tap do |klass| + klass.extend described_class + allow(klass).to receive(:name).and_return('Resolvers::TestResolver') + end + end + + describe '#negated' do + it 'defines :not argument' do + test_resolver.negated {} + + expect(test_resolver.arguments['not'].type.name).to eq "Types::TestResolverNegatedParamsType" + end + + it 'defines any arguments passed as block' do + test_resolver.negated do + argument :foo, GraphQL::STRING_TYPE, required: false + end + + expect(test_resolver.arguments['not'].type.arguments.keys).to match_array(['foo']) + end + + it 'defines all arguments passed as block even if called multiple times' do + test_resolver.negated do + argument :foo, GraphQL::STRING_TYPE, required: false + end + test_resolver.negated do + argument :bar, GraphQL::STRING_TYPE, required: false + end + + expect(test_resolver.arguments['not'].type.arguments.keys).to match_array(%w[foo bar]) + end + + it 'allows to specify custom argument name' do + test_resolver.negated(param_key: :negative) {} + + expect(test_resolver.arguments).to include('negative') + end + end +end |