Filter group milestones based on user membership
This commit is contained in:
parent
c7d1eef671
commit
e580c2261d
|
@ -22,7 +22,7 @@ class Dashboard::MilestonesController < Dashboard::ApplicationController
|
||||||
private
|
private
|
||||||
|
|
||||||
def group_milestones
|
def group_milestones
|
||||||
groups = GroupsFinder.new(current_user, all_available: true).execute
|
groups = GroupsFinder.new(current_user, all_available: false).execute
|
||||||
|
|
||||||
DashboardGroupMilestone.build_collection(groups)
|
DashboardGroupMilestone.build_collection(groups)
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,7 +13,7 @@ class DashboardGroupMilestone < GlobalMilestone
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.build_collection(groups)
|
def self.build_collection(groups)
|
||||||
MilestonesFinder.new(group_ids: groups.pluck(:id)).execute.map { |m| new(m) } # rubocop: disable CodeReuse/Finder
|
MilestonesFinder.new(group_ids: groups.select(:id)).execute.map { |m| new(m) } # rubocop: disable CodeReuse/Finder
|
||||||
end
|
end
|
||||||
|
|
||||||
override :group_milestone?
|
override :group_milestone?
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Filter group milestones based on user membership.
|
||||||
|
merge_request: 21660
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -3,9 +3,11 @@ require 'spec_helper'
|
||||||
describe Dashboard::MilestonesController do
|
describe Dashboard::MilestonesController do
|
||||||
let(:project) { create(:project) }
|
let(:project) { create(:project) }
|
||||||
let(:group) { create(:group) }
|
let(:group) { create(:group) }
|
||||||
|
let(:public_group) { create(:group, :public) }
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:project_milestone) { create(:milestone, project: project) }
|
let(:project_milestone) { create(:milestone, project: project) }
|
||||||
let(:group_milestone) { create(:milestone, group: group) }
|
let(:group_milestone) { create(:milestone, group: group) }
|
||||||
|
let!(:public_milestone) { create(:milestone, group: public_group) }
|
||||||
let(:milestone) do
|
let(:milestone) do
|
||||||
DashboardMilestone.build(
|
DashboardMilestone.build(
|
||||||
[project],
|
[project],
|
||||||
|
@ -43,13 +45,13 @@ describe Dashboard::MilestonesController do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#index" do
|
describe "#index" do
|
||||||
it 'should contain group and project milestones' do
|
it 'returns group and project milestones to which the user belongs' do
|
||||||
get :index, format: :json
|
get :index, format: :json
|
||||||
|
|
||||||
expect(response).to have_gitlab_http_status(200)
|
expect(response).to have_gitlab_http_status(200)
|
||||||
expect(json_response.size).to eq(2)
|
expect(json_response.size).to eq(2)
|
||||||
expect(json_response.map { |i| i["first_milestone"]["id"] }).to include(group_milestone.id, project_milestone.id)
|
expect(json_response.map { |i| i["first_milestone"]["id"] }).to match_array([group_milestone.id, project_milestone.id])
|
||||||
expect(json_response.map { |i| i["group_name"] }).to include(group.name)
|
expect(json_response.map { |i| i["group_name"] }.compact).to match_array(group.name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,8 +17,9 @@ describe 'Dashboard > Milestones' do
|
||||||
let(:project) { create(:project, namespace: user.namespace) }
|
let(:project) { create(:project, namespace: user.namespace) }
|
||||||
let!(:milestone) { create(:milestone, project: project) }
|
let!(:milestone) { create(:milestone, project: project) }
|
||||||
let!(:milestone2) { create(:milestone, group: group) }
|
let!(:milestone2) { create(:milestone, group: group) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
project.add_maintainer(user)
|
group.add_developer(user)
|
||||||
sign_in(user)
|
sign_in(user)
|
||||||
visit dashboard_milestones_path
|
visit dashboard_milestones_path
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue