diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-26 15:08:16 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-26 15:08:16 +0000 |
commit | e80e0dd64fbb04f60394cb1bb08e17dbcb22b8ce (patch) | |
tree | 9e538341b9b77e96737964813e10235dbecf47ff /spec/graphql | |
parent | ef31adeb0fb9a02b2c6a4529ec4e38d7082a4b2b (diff) | |
download | gitlab-ce-e80e0dd64fbb04f60394cb1bb08e17dbcb22b8ce.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/graphql')
-rw-r--r-- | spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb | 73 |
1 files changed, 12 insertions, 61 deletions
diff --git a/spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb b/spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb index 75b5d31d134..145e42e2a51 100644 --- a/spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb +++ b/spec/graphql/mutations/concerns/mutations/resolves_issuable_spec.rb @@ -3,76 +3,27 @@ require 'spec_helper' describe Mutations::ResolvesIssuable do - let(:mutation_class) do + let_it_be(:mutation_class) do Class.new(Mutations::BaseMutation) do include Mutations::ResolvesIssuable end end - let(:project) { create(:project) } - let(:user) { create(:user) } - let(:context) { { current_user: user } } - let(:mutation) { mutation_class.new(object: nil, context: context, field: nil) } - - shared_examples 'resolving an issuable' do |type| - context 'when user has access' do - let(:source) { type == :merge_request ? 'source_project' : 'project' } - let(:issuable) { create(type, author: user, "#{source}" => project) } - - subject { mutation.resolve_issuable(type: type, parent_path: project.full_path, iid: issuable.iid) } - - before do - project.add_developer(user) - end - - it 'resolves issuable by iid' do - result = type == :merge_request ? subject.sync : subject - expect(result).to eq(issuable) - end - - it 'uses the correct Resolver to resolve issuable' do - resolver_class = "Resolvers::#{type.to_s.classify.pluralize}Resolver".constantize - resolved_project = mutation.resolve_project(full_path: project.full_path) - - allow(mutation).to receive(:resolve_project) - .with(full_path: project.full_path) - .and_return(resolved_project) - - expect(resolver_class).to receive(:new) - .with(object: resolved_project, context: context, field: nil) - .and_call_original - - subject - end - - it 'uses the ResolvesProject to resolve project' do - expect(Resolvers::ProjectResolver).to receive(:new) - .with(object: nil, context: context, field: nil) - .and_call_original - - subject - end - - it 'returns nil if issuable is not found' do - result = mutation.resolve_issuable(type: type, parent_path: project.full_path, iid: "100") - result = type == :merge_request ? result.sync : result - - expect(result).to be_nil - end - - it 'returns nil if parent path is empty' do - result = mutation.resolve_issuable(type: type, parent_path: "", iid: issuable.iid) - - expect(result).to be_nil - end - end - end + let_it_be(:project) { create(:project) } + let_it_be(:user) { create(:user) } + let_it_be(:context) { { current_user: user } } + let_it_be(:mutation) { mutation_class.new(object: nil, context: context, field: nil) } + let(:parent) { issuable.project } context 'with issues' do - it_behaves_like 'resolving an issuable', :issue + let(:issuable) { create(:issue, project: project) } + + it_behaves_like 'resolving an issuable in GraphQL', :issue end context 'with merge requests' do - it_behaves_like 'resolving an issuable', :merge_request + let(:issuable) { create(:merge_request, source_project: project) } + + it_behaves_like 'resolving an issuable in GraphQL', :merge_request end end |