debian-mirror-gitlab/spec/requests/api/graphql/project/merge_request/pipelines_spec.rb
2021-02-22 17:27:13 +05:30

63 lines
1.6 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Query.project.mergeRequests.pipelines' do
include GraphqlHelpers
let_it_be(:project) { create(:project, :public, :repository) }
let_it_be(:author) { create(:user) }
let_it_be(:merge_requests) do
%i[with_diffs with_image_diffs conflict].map do |trait|
create(:merge_request, trait, author: author, source_project: project)
end
end
describe '.count' do
let(:query) do
<<~GQL
query($path: ID!, $first: Int) {
project(fullPath: $path) {
mergeRequests(first: $first) {
nodes {
iid
pipelines {
count
}
}
}
}
}
GQL
end
def run_query(first = nil)
post_graphql(query, current_user: author, variables: { path: project.full_path, first: first })
end
before do
merge_requests.each do |mr|
shas = mr.all_commits.limit(2).pluck(:sha)
shas.each do |sha|
create(:ci_pipeline, :success, project: project, ref: mr.source_branch, sha: sha)
end
end
end
it 'produces correct results' do
run_query(2)
p_nodes = graphql_data_at(:project, :merge_requests, :nodes)
expect(p_nodes).to all(match('iid' => be_present, 'pipelines' => match('count' => 2)))
end
it 'is scalable', :request_store, :use_clean_rails_memory_store_caching do
# warm up
run_query
expect { run_query(2) }.to(issue_same_number_of_queries_as { run_query(1) }.ignoring_cached_queries)
end
end
end