Commit 57925b0d authored by Eugenia Grieff's avatar Eugenia Grieff

Expose Jira imported issues count in GraphQL

Add fields to JiraImportType
Include fields in specs
Update docs and schema
parent f3f4b432
...@@ -15,6 +15,12 @@ module Types ...@@ -15,6 +15,12 @@ module Types
description: 'User that started the Jira import' description: 'User that started the Jira import'
field :jira_project_key, GraphQL::STRING_TYPE, null: false, field :jira_project_key, GraphQL::STRING_TYPE, null: false,
description: 'Project key for the imported Jira project' description: 'Project key for the imported Jira project'
field :imported_issues_count, GraphQL::INT_TYPE, null: false,
description: 'Count of issues that were successfully imported'
field :failed_to_import_count, GraphQL::INT_TYPE, null: false,
description: 'Count of issues that failed to import'
field :total_issue_count, GraphQL::INT_TYPE, null: false,
description: 'Total count of issues that were attempted to import'
end end
# rubocop: enable Graphql/AuthorizeTypes # rubocop: enable Graphql/AuthorizeTypes
end end
---
title: Expose Jira imported issues count in GraphQL
merge_request: 32580
author:
type: added
...@@ -5385,6 +5385,16 @@ type JiraImport { ...@@ -5385,6 +5385,16 @@ type JiraImport {
""" """
createdAt: Time createdAt: Time
"""
Count of issues that failed to import
"""
failedToImportCount: Int!
"""
Count of issues that were successfully imported
"""
importedIssuesCount: Int!
""" """
Project key for the imported Jira project Project key for the imported Jira project
""" """
...@@ -5399,6 +5409,11 @@ type JiraImport { ...@@ -5399,6 +5409,11 @@ type JiraImport {
User that started the Jira import User that started the Jira import
""" """
scheduledBy: User scheduledBy: User
"""
Total count of issues that were attempted to import
"""
totalIssueCount: Int!
} }
""" """
......
...@@ -14931,6 +14931,42 @@ ...@@ -14931,6 +14931,42 @@
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{
"name": "failedToImportCount",
"description": "Count of issues that failed to import",
"args": [
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "importedIssuesCount",
"description": "Count of issues that were successfully imported",
"args": [
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{ {
"name": "jiraProjectKey", "name": "jiraProjectKey",
"description": "Project key for the imported Jira project", "description": "Project key for the imported Jira project",
...@@ -14976,6 +15012,24 @@ ...@@ -14976,6 +15012,24 @@
}, },
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
},
{
"name": "totalIssueCount",
"description": "Total count of issues that were attempted to import",
"args": [
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
} }
], ],
"inputFields": null, "inputFields": null,
...@@ -788,9 +788,12 @@ Represents an iteration object. ...@@ -788,9 +788,12 @@ Represents an iteration object.
| Name | Type | Description | | Name | Type | Description |
| --- | ---- | ---------- | | --- | ---- | ---------- |
| `createdAt` | Time | Timestamp of when the Jira import was created | | `createdAt` | Time | Timestamp of when the Jira import was created |
| `failedToImportCount` | Int! | Count of issues that failed to import |
| `importedIssuesCount` | Int! | Count of issues that were successfully imported |
| `jiraProjectKey` | String! | Project key for the imported Jira project | | `jiraProjectKey` | String! | Project key for the imported Jira project |
| `scheduledAt` | Time | Timestamp of when the Jira import was scheduled | | `scheduledAt` | Time | Timestamp of when the Jira import was scheduled |
| `scheduledBy` | User | User that started the Jira import | | `scheduledBy` | User | User that started the Jira import |
| `totalIssueCount` | Int! | Total count of issues that were attempted to import |
## JiraImportStartPayload ## JiraImportStartPayload
......
...@@ -6,6 +6,9 @@ describe GitlabSchema.types['JiraImport'] do ...@@ -6,6 +6,9 @@ describe GitlabSchema.types['JiraImport'] do
specify { expect(described_class.graphql_name).to eq('JiraImport') } specify { expect(described_class.graphql_name).to eq('JiraImport') }
it 'has the expected fields' do it 'has the expected fields' do
expect(described_class).to have_graphql_fields(:jira_project_key, :createdAt, :scheduled_at, :scheduled_by) expect(described_class).to have_graphql_fields(
:jira_project_key, :created_at, :scheduled_at, :scheduled_by,
:failed_to_import_count, :imported_issues_count, :total_issue_count
)
end end
end end
...@@ -7,9 +7,30 @@ describe 'query Jira import data' do ...@@ -7,9 +7,30 @@ describe 'query Jira import data' do
let_it_be(:current_user) { create(:user) } let_it_be(:current_user) { create(:user) }
let_it_be(:project) { create(:project, :private, :import_started, import_type: 'jira') } let_it_be(:project) { create(:project, :private, :import_started, import_type: 'jira') }
let_it_be(:jira_import1) { create(:jira_import_state, :finished, project: project, jira_project_key: 'AA', user: current_user, created_at: 2.days.ago) } let_it_be(:jira_import1) do
let_it_be(:jira_import2) { create(:jira_import_state, :finished, project: project, jira_project_key: 'BB', user: current_user, created_at: 5.days.ago) } create(
:jira_import_state, :finished,
project: project,
jira_project_key: 'AA',
user: current_user,
created_at: 2.days.ago,
failed_to_import_count: 2,
imported_issues_count: 2,
total_issue_count: 4
)
end
let_it_be(:jira_import2) do
create(
:jira_import_state, :finished,
project: project,
jira_project_key: 'BB',
user: current_user,
created_at: 5.days.ago,
failed_to_import_count: 1,
imported_issues_count: 2,
total_issue_count: 3
)
end
let(:query) do let(:query) do
%( %(
query { query {
...@@ -23,6 +44,9 @@ describe 'query Jira import data' do ...@@ -23,6 +44,9 @@ describe 'query Jira import data' do
scheduledBy { scheduledBy {
username username
} }
importedIssuesCount
failedToImportCount
totalIssueCount
} }
} }
} }
...@@ -64,10 +88,16 @@ describe 'query Jira import data' do ...@@ -64,10 +88,16 @@ describe 'query Jira import data' do
it 'retuns list of jira imports' do it 'retuns list of jira imports' do
jira_proket_keys = jira_imports.map {|ji| ji['jiraProjectKey']} jira_proket_keys = jira_imports.map {|ji| ji['jiraProjectKey']}
usernames = jira_imports.map {|ji| ji.dig('scheduledBy', 'username')} usernames = jira_imports.map {|ji| ji.dig('scheduledBy', 'username')}
imported_issues_count = jira_imports.map {|ji| ji.dig('importedIssuesCount')}
failed_issues_count = jira_imports.map {|ji| ji.dig('failedToImportCount')}
total_issue_count = jira_imports.map {|ji| ji.dig('totalIssueCount')}
expect(jira_imports.size).to eq 2 expect(jira_imports.size).to eq 2
expect(jira_proket_keys).to eq %w(BB AA) expect(jira_proket_keys).to eq %w(BB AA)
expect(usernames).to eq [current_user.username, current_user.username] expect(usernames).to eq [current_user.username, current_user.username]
expect(imported_issues_count).to eq [2, 2]
expect(failed_issues_count).to eq [1, 2]
expect(total_issue_count).to eq [3, 4]
end 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