Commit 729430da authored by Igor Drozdov's avatar Igor Drozdov

Merge branch 'philipcunningham-add-pagination-test-for-dast-site-validations-290943' into 'master'

Add pagination test for dastSiteValidations field

See merge request gitlab-org/gitlab!49913
parents 17ac37dd 36f4302c
...@@ -13,21 +13,15 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do ...@@ -13,21 +13,15 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do
let_it_be(:dast_site_validation4) { create(:dast_site_validation, dast_site_token: dast_site_token) } let_it_be(:dast_site_validation4) { create(:dast_site_validation, dast_site_token: dast_site_token) }
let_it_be(:current_user) { create(:user) } let_it_be(:current_user) { create(:user) }
let(:query) do subject do
fields = all_graphql_fields_for('DastSiteValidation') fields = all_graphql_fields_for('DastSiteValidation')
graphql_query_for( query = graphql_query_for(
'project', :project,
{ 'fullPath' => project.full_path }, { full_path: project.full_path },
query_graphql_field('dastSiteValidations', 'first: 3', "edges { node { #{fields} } }") query_nodes(:dast_site_validations, fields)
) )
end
let(:project_response) { subject['project'] }
let(:dast_site_validations_response) { project_response&.[]('dastSiteValidations') }
let(:edges) { dast_site_validations_response&.[]('edges') }
subject do
post_graphql( post_graphql(
query, query,
current_user: current_user, current_user: current_user,
...@@ -35,7 +29,6 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do ...@@ -35,7 +29,6 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do
fullPath: project.full_path fullPath: project.full_path
} }
) )
graphql_data
end end
before do before do
...@@ -44,15 +37,19 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do ...@@ -44,15 +37,19 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do
context 'when a user does not have access to the project' do context 'when a user does not have access to the project' do
it 'returns a null project' do it 'returns a null project' do
expect(project_response).to be_nil subject
expect(graphql_data_at(:project)).to be_nil
end end
end end
context 'when a user does not have access to dast_site_validations' do context 'when a user does not have access to dast_site_validations' do
it 'returns an empty edges array' do it 'returns an empty nodes array' do
project.add_guest(current_user) project.add_guest(current_user)
expect(edges).to be_empty subject
expect(graphql_data_at(:project, :dast_site_validations, :nodes)).to be_empty
end end
end end
...@@ -61,18 +58,32 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do ...@@ -61,18 +58,32 @@ RSpec.describe 'Query.project(fullPath).dastSiteValidations' do
project.add_developer(current_user) project.add_developer(current_user)
end end
let(:expected_results) do let(:data_path) { [:project, :dast_site_validations] }
[
dast_site_validation4, def pagination_results_data(dast_site_validations)
dast_site_validation3, dast_site_validations.map { |dast_site_validation| dast_site_validation['id'] }
dast_site_validation2
].map { |validation| global_id_of(validation)}
end end
it 'returns a populated edges array containing the correct dast_site_validations' do it_behaves_like 'sorted paginated query' do
results = edges.map { |edge| edge['node']['id'] } let(:sort_param) { nil }
let(:first_param) { 3 }
expect(results).to eq(expected_results) let(:expected_results) do
[
dast_site_validation4,
dast_site_validation3,
dast_site_validation2,
dast_site_validation1
].map { |validation| global_id_of(validation)}
end
end end
end end
def pagination_query(arguments)
graphql_query_for(
:project,
{ full_path: project.full_path },
query_nodes(:dast_site_validations, 'id', include_pagination_info: true, args: arguments)
)
end
end end
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