GitLab wurde erfolgreich aktualisiert. Durch regelmäßige Updates bleibt das THM GitLab sicher. Danke für Ihre Geduld.

Commit ecadff99 authored by Douwe Maan's avatar Douwe Maan Committed by GitLab Release Tools Bot

Merge branch 'sh-fix-project-branches-merge-status' into 'master'

Fix API /project/:id/branches not returning correct merge status

Closes #56250

See merge request gitlab-org/gitlab-ce!26785

(cherry picked from commit 2db4e79f)

cedbb336 Fix API /project/:id/branches not returning correct merge status
2675581c Revise merged branch check to green light up to N branches
parent 32d457ff
---
title: Fix API /project/:id/branches not returning correct merge status
merge_request: 26785
author:
type: fixed
......@@ -34,11 +34,11 @@ class Branches < Grape::API
repository = user_project.repository
branches = BranchesFinder.new(repository, declared_params(include_missing: false)).execute
branches = ::Kaminari.paginate_array(branches)
branches = paginate(::Kaminari.paginate_array(branches))
merged_branch_names = repository.merged_branch_names(branches.map(&:name))
present(
paginate(branches),
branches,
with: Entities::Branch,
current_user: current_user,
project: user_project,
......
......@@ -20,9 +20,9 @@
let(:route) { "/projects/#{project_id}/repository/branches" }
shared_examples_for 'repository branches' do
RSpec::Matchers.define :has_merged_branch_names_count do |expected|
RSpec::Matchers.define :has_up_to_merged_branch_names_count do |expected|
match do |actual|
actual[:merged_branch_names].count == expected
expected >= actual[:merged_branch_names].count
end
end
......@@ -36,10 +36,30 @@
expect(branch_names).to match_array(project.repository.branch_names)
end
def check_merge_status(json_response)
merged, unmerged = json_response.partition { |branch| branch['merged'] }
merged_branches = merged.map { |branch| branch['name'] }
unmerged_branches = unmerged.map { |branch| branch['name'] }
expect(Set.new(merged_branches)).to eq(project.repository.merged_branch_names(merged_branches + unmerged_branches))
expect(project.repository.merged_branch_names(unmerged_branches)).to be_empty
end
it 'determines only a limited number of merged branch names' do
expect(API::Entities::Branch).to receive(:represent).with(anything, has_merged_branch_names_count(2))
expect(API::Entities::Branch).to receive(:represent).with(anything, has_up_to_merged_branch_names_count(2)).and_call_original
get api(route, current_user), params: { per_page: 2 }
expect(response).to have_gitlab_http_status(200)
check_merge_status(json_response)
end
it 'merge status matches reality on paginated input' do
get api(route, current_user), params: { per_page: 20, page: 2 }
expect(response).to have_gitlab_http_status(200)
check_merge_status(json_response)
end
context 'when repository is disabled' do
......
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