Commit 66fff1a9 authored by Douwe Maan's avatar Douwe Maan

Merge branch '6893-fix-issue-boards-api-with-upcoming-started-milestones' into 'master'

Fix boards API with special milestones

Closes #6893

See merge request gitlab-org/gitlab-ee!8653
parents 7edeea0d 56917af3
---
title: Fix issue board api with special milestones
merge_request: 8653
author:
type: fixed
......@@ -93,17 +93,22 @@ module EE
extend ActiveSupport::Concern
prepended do
def scoped_issue_available?(board)
board.parent.feature_available?(:scoped_issue_board)
end
# Default filtering configuration
expose :name
expose :group
expose :milestone, using: ::API::Entities::Milestone, if: ->(board, _) { scoped_issue_available?(board) }
expose :assignee, using: ::API::Entities::UserBasic, if: ->(board, _) { scoped_issue_available?(board) }
expose :labels, using: ::API::Entities::LabelBasic, if: ->(board, _) { scoped_issue_available?(board) }
expose :weight, if: ->(board, _) { scoped_issue_available?(board) }
with_options if: ->(board, _) { board.parent.feature_available?(:scoped_issue_board) } do
expose :milestone do |board|
if board.milestone.is_a?(Milestone)
::API::Entities::Milestone.represent(board.milestone)
else
SpecialBoardFilter.represent(board.milestone)
end
end
expose :assignee, using: ::API::Entities::UserBasic
expose :labels, using: ::API::Entities::LabelBasic
expose :weight
end
end
end
......@@ -213,6 +218,10 @@ module EE
expose :target, as: :target_issue, using: ::API::Entities::IssueBasic
end
class SpecialBoardFilter < Grape::Entity
expose :title
end
class Approvals < Grape::Entity
expose :user, using: ::API::Entities::UserBasic
end
......
......@@ -14,4 +14,24 @@ describe API::Boards do
it_behaves_like 'milestone board list'
it_behaves_like 'assignee board list'
end
context 'GET /projects/:id/boards/:board_id with special milestones' do
let(:url) { "/projects/#{board_parent.id}/boards/#{board.id}" }
it 'returns board with Upcoming milestone' do
board.update(milestone_id: Milestone::Upcoming.id)
get api(url, user)
expect(json_response["milestone"]["title"]).to eq(Milestone::Upcoming.title)
end
it 'returns board with Started milestone' do
board.update(milestone_id: Milestone::Started.id)
get api(url, user)
expect(json_response["milestone"]["title"]).to eq(Milestone::Started.title)
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