Merge branch '22421-fix-issuable-counter-when-more-than-one-label-is-selected' into 'master'
Hotfix the issuable counters when filtering by multiple labels This is an ugly fix, but it make the counters work when multiple labels are selected so I think we should include it in 8.12, and try to find a proper fix afterward. Closes #22421 See merge request !6455
This commit is contained in:
commit
8ed5be5935
2 changed files with 26 additions and 9 deletions
|
@ -286,8 +286,19 @@ module ApplicationHelper
|
|||
}
|
||||
|
||||
state_title = titles[state] || state.to_s.humanize
|
||||
count = records.public_send(state).size
|
||||
html = content_tag :span, state_title
|
||||
records_with_state = records.public_send(state)
|
||||
|
||||
# When filtering by multiple labels, the result of query.count is a Hash
|
||||
# of the form { issuable_id1 => N, issuable_id2 => N }, where N is the
|
||||
# number of labels selected. The ugly "trick" is to load the issuables
|
||||
# as an array and get the size of the array...
|
||||
# We should probably try to solve this properly in the future.
|
||||
# See https://gitlab.com/gitlab-org/gitlab-ce/issues/22414
|
||||
label_names = Array(params.fetch(:label_name, []))
|
||||
records_with_state = records_with_state.to_a if label_names.many?
|
||||
|
||||
count = records_with_state.size
|
||||
html = content_tag :span, state_title
|
||||
|
||||
if count.present?
|
||||
html += " "
|
||||
|
|
|
@ -6,20 +6,19 @@ feature 'Issue filtering by Labels', feature: true do
|
|||
let(:project) { create(:project, :public) }
|
||||
let!(:user) { create(:user)}
|
||||
let!(:label) { create(:label, project: project) }
|
||||
let(:bug) { create(:label, project: project, title: 'bug') }
|
||||
let(:feature) { create(:label, project: project, title: 'feature') }
|
||||
let(:enhancement) { create(:label, project: project, title: 'enhancement') }
|
||||
let(:issue1) { create(:issue, title: "Bugfix1", project: project) }
|
||||
let(:issue2) { create(:issue, title: "Bugfix2", project: project) }
|
||||
let(:issue3) { create(:issue, title: "Feature1", project: project) }
|
||||
|
||||
before do
|
||||
bug = create(:label, project: project, title: 'bug')
|
||||
feature = create(:label, project: project, title: 'feature')
|
||||
enhancement = create(:label, project: project, title: 'enhancement')
|
||||
|
||||
issue1 = create(:issue, title: "Bugfix1", project: project)
|
||||
issue1.labels << bug
|
||||
|
||||
issue2 = create(:issue, title: "Bugfix2", project: project)
|
||||
issue2.labels << bug
|
||||
issue2.labels << enhancement
|
||||
|
||||
issue3 = create(:issue, title: "Feature1", project: project)
|
||||
issue3.labels << feature
|
||||
|
||||
project.team << [user, :master]
|
||||
|
@ -159,6 +158,13 @@ feature 'Issue filtering by Labels', feature: true do
|
|||
wait_for_ajax
|
||||
end
|
||||
|
||||
it 'shows a correct "Open" counter' do
|
||||
page.within '.issues-state-filters' do
|
||||
expect(page).not_to have_content "{#{issue2.id} => 1}"
|
||||
expect(page).to have_content "Open 1"
|
||||
end
|
||||
end
|
||||
|
||||
it 'shows issue "Bugfix2" in issues list' do
|
||||
expect(page).to have_content "Bugfix2"
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue