diff options
Diffstat (limited to 'spec/graphql/types/snippet_type_spec.rb')
-rw-r--r-- | spec/graphql/types/snippet_type_spec.rb | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/spec/graphql/types/snippet_type_spec.rb b/spec/graphql/types/snippet_type_spec.rb index 86af69f1294..e73665a1b1d 100644 --- a/spec/graphql/types/snippet_type_spec.rb +++ b/spec/graphql/types/snippet_type_spec.rb @@ -16,6 +16,15 @@ RSpec.describe GitlabSchema.types['Snippet'] do expect(described_class).to have_graphql_fields(*expected_fields) end + describe 'blobs field' do + subject { described_class.fields['blobs'] } + + it 'returns blobs' do + is_expected.to have_graphql_type(Types::Snippets::BlobType.connection_type) + is_expected.to have_graphql_resolver(Resolvers::Snippets::BlobsResolver) + end + end + context 'when restricted visibility level is set to public' do let_it_be(:snippet) { create(:personal_snippet, :repository, :public, author: user) } @@ -115,7 +124,7 @@ RSpec.describe GitlabSchema.types['Snippet'] do end describe '#blob' do - let(:query_blob) { subject.dig('data', 'snippets', 'edges')[0]['node']['blob'] } + let(:query_blob) { subject.dig('data', 'snippets', 'nodes')[0]['blob'] } subject { GitlabSchema.execute(snippet_query_for(field: 'blob'), context: { current_user: user }).as_json } @@ -142,9 +151,26 @@ RSpec.describe GitlabSchema.types['Snippet'] do describe '#blobs' do let_it_be(:snippet) { create(:personal_snippet, :public, author: user) } - let(:query_blobs) { subject.dig('data', 'snippets', 'edges')[0]['node']['blobs'] } + let(:query_blobs) { subject.dig('data', 'snippets', 'nodes')[0].dig('blobs', 'nodes') } + let(:paths) { [] } + let(:query) do + %( + { + snippets { + nodes { + blobs(paths: #{paths}) { + nodes { + name + path + } + } + } + } + } + ) + end - subject { GitlabSchema.execute(snippet_query_for(field: 'blobs'), context: { current_user: user }).as_json } + subject { GitlabSchema.execute(query, context: { current_user: user }).as_json } shared_examples 'an array' do it 'returns an array of snippet blobs' do @@ -174,6 +200,18 @@ RSpec.describe GitlabSchema.types['Snippet'] do expect(resulting_blobs_names).to match_array(blobs.map(&:name)) end + + context 'when specific path is set' do + let(:paths) { ['CHANGELOG'] } + + it_behaves_like 'an array' + + it 'returns specific files' do + resulting_blobs_names = query_blobs.map { |b| b['name'] } + + expect(resulting_blobs_names).to match(paths) + end + end end end @@ -181,12 +219,10 @@ RSpec.describe GitlabSchema.types['Snippet'] do %( { snippets { - edges { - node { - #{field} { - name - path - } + nodes { + #{field} { + name + path } } } |