Skip to content
代码片段 群组 项目
提交 803a757d 编辑于 作者: Kasia Misirli's avatar Kasia Misirli 提交者: Laura Montemayor
浏览文件

Add openMergeRequestsCount and openIssuesCount to CiCatalogResource

上级 083e0530
No related branches found
No related tags found
无相关合并请求
......@@ -5,6 +5,7 @@ class MergeRequestStateEnum < IssuableStateEnum
graphql_name 'MergeRequestState'
description 'State of a GitLab merge request'
value 'merged', description: "Merge request has been merged."
value 'merged', description: 'Merge request has been merged.'
value 'opened', description: 'Opened merge request.'
end
end
......@@ -13199,6 +13199,8 @@ Represents the total number of issues and their weights for a particular day.
| <a id="cicatalogresourceid"></a>`id` **{warning-solid}** | [`ID!`](#id) | **Introduced** in 15.11. This feature is an Experiment. It can be changed or removed at any time. ID of the catalog resource. |
| <a id="cicatalogresourcelatestversion"></a>`latestVersion` **{warning-solid}** | [`Release`](#release) | **Introduced** in 16.1. This feature is an Experiment. It can be changed or removed at any time. Latest version of the catalog resource. |
| <a id="cicatalogresourcename"></a>`name` **{warning-solid}** | [`String`](#string) | **Introduced** in 15.11. This feature is an Experiment. It can be changed or removed at any time. Name of the catalog resource. |
| <a id="cicatalogresourceopenissuescount"></a>`openIssuesCount` **{warning-solid}** | [`Int!`](#int) | **Introduced** in 16.3. This feature is an Experiment. It can be changed or removed at any time. Count of open issues that belong to the the catalog resource. |
| <a id="cicatalogresourceopenmergerequestscount"></a>`openMergeRequestsCount` **{warning-solid}** | [`Int!`](#int) | **Introduced** in 16.3. This feature is an Experiment. It can be changed or removed at any time. Count of open merge requests that belong to the the catalog resource. |
| <a id="cicatalogresourcereadmehtml"></a>`readmeHtml` **{warning-solid}** | [`String!`](#string) | **Introduced** in 16.1. This feature is an Experiment. It can be changed or removed at any time. GitLab Flavored Markdown rendering of `readme`. |
| <a id="cicatalogresourcerootnamespace"></a>`rootNamespace` **{warning-solid}** | [`Namespace`](#namespace) | **Introduced** in 16.1. This feature is an Experiment. It can be changed or removed at any time. Root namespace of the catalog resource. |
| <a id="cicatalogresourcestarcount"></a>`starCount` **{warning-solid}** | [`Int!`](#int) | **Introduced** in 16.1. This feature is an Experiment. It can be changed or removed at any time. Number of times the catalog resource has been starred. |
......@@ -26576,7 +26578,7 @@ State of a GitLab merge request.
| <a id="mergerequeststateclosed"></a>`closed` | In closed state. |
| <a id="mergerequeststatelocked"></a>`locked` | Discussion has been locked. |
| <a id="mergerequeststatemerged"></a>`merged` | Merge request has been merged. |
| <a id="mergerequeststateopened"></a>`opened` | In open state. |
| <a id="mergerequeststateopened"></a>`opened` | Opened merge request. |
 
### `MergeStatus`
 
......@@ -9,6 +9,14 @@ class ResourceType < BaseObject
connection_type_class(Types::CountableConnectionType)
field :open_issues_count, GraphQL::Types::Int, null: false,
description: 'Count of open issues that belong to the the catalog resource.',
alpha: { milestone: '16.3' }
field :open_merge_requests_count, GraphQL::Types::Int, null: false,
description: 'Count of open merge requests that belong to the the catalog resource.',
alpha: { milestone: '16.3' }
field :id, GraphQL::Types::ID, null: false, description: 'ID of the catalog resource.',
alpha: { milestone: '15.11' }
......@@ -48,6 +56,14 @@ class ResourceType < BaseObject
markdown_field :readme_html, null: false,
alpha: { milestone: '16.1' }
def open_issues_count
BatchLoader::GraphQL.wrap(object.project.open_issues_count)
end
def open_merge_requests_count
BatchLoader::GraphQL.wrap(object.project.open_merge_requests_count)
end
def web_path
::Gitlab::Routing.url_helpers.project_path(object.project)
end
......
......@@ -18,6 +18,8 @@
forks_count
root_namespace
readme_html
open_issues_count
open_merge_requests_count
]
expect(described_class).to have_graphql_fields(*expected_fields)
......
......@@ -259,4 +259,97 @@
)
end
end
describe 'openIssuesCount' do
before do
stub_licensed_features(ci_namespace_catalog: true)
end
context 'when open_issue_count is requested' do
let(:query) do
<<~GQL
query {
ciCatalogResource(id: "#{resource.to_global_id}") {
openIssuesCount
}
}
GQL
end
it 'returns the correct count' do
create(:issue, :opened, project: project)
create(:issue, :opened, project: project)
namespace.add_developer(user)
post_query
expect(graphql_data_at(:ciCatalogResource)).to match(
a_graphql_entity_for(
open_issues_count: 2
)
)
end
context 'when open_issue_count is zero' do
it 'returns zero' do
namespace.add_developer(user)
post_query
expect(graphql_data_at(:ciCatalogResource)).to match(
a_graphql_entity_for(
open_issues_count: 0
)
)
end
end
end
end
describe 'openMergeRequestsCount' do
before do
stub_licensed_features(ci_namespace_catalog: true)
end
context 'when merge_requests_count is requested' do
let(:query) do
<<~GQL
query {
ciCatalogResource(id: "#{resource.to_global_id}") {
openMergeRequestsCount
}
}
GQL
end
it 'returns the correct count' do
create(:merge_request, :opened, source_project: project)
namespace.add_developer(user)
post_query
expect(graphql_data_at(:ciCatalogResource)).to match(
a_graphql_entity_for(
open_merge_requests_count: 1
)
)
end
context 'when open merge_requests_count is zero' do
it 'returns zero' do
namespace.add_developer(user)
post_query
expect(graphql_data_at(:ciCatalogResource)).to match(
a_graphql_entity_for(
open_merge_requests_count: 0
)
)
end
end
end
end
end
......@@ -454,4 +454,88 @@
end
end
end
describe 'openIssuesCount' do
before do
stub_licensed_features(ci_namespace_catalog: true)
namespace.add_developer(user)
end
context 'when open_issues_count is requested' do
before_all do
create(:issue, :opened, project: project1)
create(:issue, :opened, project: project1)
create(:issue, :opened, project: project2)
end
let(:query) do
<<~GQL
query {
ciCatalogResources(projectPath: "#{project1.full_path}") {
nodes {
openIssuesCount
}
}
}
GQL
end
it 'returns the correct count' do
create(:catalog_resource, project: project2)
post_query
expect(graphql_data_at(:ciCatalogResources, :nodes)).to contain_exactly(
a_graphql_entity_for(
openIssuesCount: 2),
a_graphql_entity_for(
openIssuesCount: 1)
)
end
it_behaves_like 'avoids N+1 queries'
end
end
describe 'openMergeRequestsCount' do
before do
stub_licensed_features(ci_namespace_catalog: true)
namespace.add_developer(user)
end
context 'when open_merge_requests_count is requested' do
before_all do
create(:merge_request, :opened, source_project: project1)
create(:merge_request, :opened, source_project: project2)
end
let(:query) do
<<~GQL
query {
ciCatalogResources(projectPath: "#{project1.full_path}") {
nodes {
openMergeRequestsCount
}
}
}
GQL
end
it 'returns the correct count' do
create(:catalog_resource, project: project2)
post_query
expect(graphql_data_at(:ciCatalogResources, :nodes)).to contain_exactly(
a_graphql_entity_for(
openMergeRequestsCount: 1),
a_graphql_entity_for(
openMergeRequestsCount: 1)
)
end
it_behaves_like 'avoids N+1 queries'
end
end
end
......@@ -8,6 +8,6 @@
it_behaves_like 'issuable state'
it 'exposes all the existing merge request states' do
expect(described_class.values.keys).to include('merged')
expect(described_class.values.keys).to include('merged', 'opened')
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册