diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-12-04 18:08:46 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-12-04 18:08:46 +0000 |
commit | b41cd8cb92d53454b2b160ba922d33801933a9cf (patch) | |
tree | 3519da8856f8bf12ce9e75248e5ecb9ed4eacf14 | |
parent | 8d3aee3636da5181ae94d23b47c6794b5610ab01 (diff) | |
download | gitlab-ce-b41cd8cb92d53454b2b160ba922d33801933a9cf.tar.gz |
Add latest changes from gitlab-org/gitlab@master
20 files changed, 3217 insertions, 34 deletions
diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index 2bd6f7e3927..0719d810258 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -10.2.0 +10.3.0 diff --git a/app/assets/javascripts/diffs/components/app.vue b/app/assets/javascripts/diffs/components/app.vue index 8039a9a7602..beda1a0dc14 100644 --- a/app/assets/javascripts/diffs/components/app.vue +++ b/app/assets/javascripts/diffs/components/app.vue @@ -144,6 +144,9 @@ export default { isLimitedContainer() { return !this.showTreeList && !this.isParallelView && !this.isFluidLayout; }, + shouldSetDiscussions() { + return this.isNotesFetched && !this.assignedDiscussions && !this.isLoading; + }, }, watch: { diffViewType() { @@ -160,6 +163,11 @@ export default { }, isLoading: 'adjustView', showTreeList: 'adjustView', + shouldSetDiscussions(newVal) { + if (newVal) { + this.setDiscussions(); + } + }, }, mounted() { this.setBaseConfig({ @@ -214,26 +222,28 @@ export default { isLatestVersion() { return window.location.search.indexOf('diff_id') === -1; }, + startDiffRendering() { + requestIdleCallback( + () => { + this.startRenderDiffsQueue(); + }, + { timeout: 1000 }, + ); + }, fetchData(toggleTree = true) { if (this.isLatestVersion() && this.glFeatures.diffsBatchLoad) { this.fetchDiffFilesMeta() .then(() => { if (toggleTree) this.hideTreeListIfJustOneFile(); + + this.startDiffRendering(); }) .catch(() => { createFlash(__('Something went wrong on our end. Please try again!')); }); this.fetchDiffFilesBatch() - .then(() => { - requestIdleCallback( - () => { - this.setDiscussions(); - this.startRenderDiffsQueue(); - }, - { timeout: 1000 }, - ); - }) + .then(() => this.startDiffRendering()) .catch(() => { createFlash(__('Something went wrong on our end. Please try again!')); }); @@ -246,7 +256,6 @@ export default { requestIdleCallback( () => { - this.setDiscussions(); this.startRenderDiffsQueue(); }, { timeout: 1000 }, @@ -262,7 +271,7 @@ export default { } }, setDiscussions() { - if (this.isNotesFetched && !this.assignedDiscussions && !this.isLoading) { + if (this.shouldSetDiscussions) { this.assignedDiscussions = true; requestIdleCallback( diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index d4594399ff5..5434184b450 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -119,7 +119,7 @@ export const fetchDiffFilesMeta = ({ commit, state }) => { .get(state.endpointMetadata) .then(({ data }) => { const strippedData = { ...data }; - strippedData.diff_files = []; + delete strippedData.diff_files; commit(types.SET_LOADING, false); commit(types.SET_MERGE_REQUEST_DIFFS, data.merge_request_diffs || []); commit(types.SET_DIFF_DATA, strippedData); diff --git a/app/assets/javascripts/diffs/store/mutations.js b/app/assets/javascripts/diffs/store/mutations.js index de2f68d729c..fccfd950d75 100644 --- a/app/assets/javascripts/diffs/store/mutations.js +++ b/app/assets/javascripts/diffs/store/mutations.js @@ -39,7 +39,16 @@ export default { }, [types.SET_DIFF_DATA](state, data) { - prepareDiffData(data); + if ( + !( + gon && + gon.features && + gon.features.diffsBatchLoad && + window.location.search.indexOf('diff_id') === -1 + ) + ) { + prepareDiffData(data); + } Object.assign(state, { ...convertObjectPropsToCamelCase(data), diff --git a/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue b/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue index dce8b020d6f..1bac7ce9ac5 100644 --- a/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue +++ b/app/assets/javascripts/pipelines/components/test_reports/test_summary.vue @@ -28,7 +28,9 @@ export default { return this.report.name || __('Summary'); }, successPercentage() { - return Math.round((this.report.success_count / this.report.total_count) * 100) || 0; + // Returns a full number when the decimals equal .00. + // Otherwise returns a float to two decimal points + return Number(((this.report.success_count / this.report.total_count) * 100 || 0).toFixed(2)); }, formattedDuration() { return formatTime(secondsToMilliseconds(this.report.total_time)); diff --git a/app/models/issue/metrics.rb b/app/models/issue/metrics.rb index 8010cbc3d78..d4e51dcfbca 100644 --- a/app/models/issue/metrics.rb +++ b/app/models/issue/metrics.rb @@ -3,6 +3,12 @@ class Issue::Metrics < ApplicationRecord belongs_to :issue + scope :for_issues, ->(issues) { where(issue: issues) } + scope :with_first_mention_not_earlier_than, -> (timestamp) { + where(first_mentioned_in_commit_at: nil) + .or(where(arel_table['first_mentioned_in_commit_at'].gteq(timestamp))) + } + def record! if issue.milestone_id.present? && self.first_associated_with_milestone_at.blank? self.first_associated_with_milestone_at = Time.now diff --git a/app/workers/process_commit_worker.rb b/app/workers/process_commit_worker.rb index 8b4d66ae493..36af51d859e 100644 --- a/app/workers/process_commit_worker.rb +++ b/app/workers/process_commit_worker.rb @@ -55,16 +55,15 @@ class ProcessCommitWorker end end - # rubocop: disable CodeReuse/ActiveRecord def update_issue_metrics(commit, author) mentioned_issues = commit.all_references(author).issues return if mentioned_issues.empty? - Issue::Metrics.where(issue_id: mentioned_issues.map(&:id), first_mentioned_in_commit_at: nil) + Issue::Metrics.for_issues(mentioned_issues) + .with_first_mention_not_earlier_than(commit.committed_date) .update_all(first_mentioned_in_commit_at: commit.committed_date) end - # rubocop: enable CodeReuse/ActiveRecord def build_commit(project, hash) date_suffix = '_date' diff --git a/changelogs/unreleased/16050-improve-first-mentioned-issue-metric-calc.yml b/changelogs/unreleased/16050-improve-first-mentioned-issue-metric-calc.yml new file mode 100644 index 00000000000..b182aba86af --- /dev/null +++ b/changelogs/unreleased/16050-improve-first-mentioned-issue-metric-calc.yml @@ -0,0 +1,5 @@ +--- +title: Adjust issue metrics first_mentioned_in_commit_at calculation +merge_request: 20923 +author: +type: fixed diff --git a/changelogs/unreleased/37363-junit-xml-summary-incorrectly-shows-100-success-rate.yml b/changelogs/unreleased/37363-junit-xml-summary-incorrectly-shows-100-success-rate.yml new file mode 100644 index 00000000000..85d7b636502 --- /dev/null +++ b/changelogs/unreleased/37363-junit-xml-summary-incorrectly-shows-100-success-rate.yml @@ -0,0 +1,5 @@ +--- +title: Junit success percentage no longer displays 100% if there are failures +merge_request: 20835 +author: +type: fixed diff --git a/changelogs/unreleased/37371-update-gitlab-shell.yml b/changelogs/unreleased/37371-update-gitlab-shell.yml new file mode 100644 index 00000000000..04d48ccbc4a --- /dev/null +++ b/changelogs/unreleased/37371-update-gitlab-shell.yml @@ -0,0 +1,5 @@ +--- +title: Update GitLab Shell to v10.3.0 +merge_request: 21151 +author: +type: other diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json new file mode 100644 index 00000000000..b48386a3fb9 --- /dev/null +++ b/spec/fixtures/lib/gitlab/import_export/group_exports/complex/group.json @@ -0,0 +1,2106 @@ +{ + "name": "ymg09t5704clnxnqfgaj2h098gz4r7gyx4wc3fzmlqj1en24zf", + "path": "ymg09t5704clnxnqfgaj2h098gz4r7gyx4wc3fzmlqj1en24zf", + "owner_id": null, + "created_at": "2019-11-20 17:01:53 UTC", + "updated_at": "2019-11-20 17:05:44 UTC", + "description": "Group Description", + "avatar": { + "url": null + }, + "membership_lock": false, + "share_with_group_lock": false, + "visibility_level": 0, + "request_access_enabled": true, + "ldap_sync_status": "ready", + "ldap_sync_error": null, + "ldap_sync_last_update_at": null, + "ldap_sync_last_successful_update_at": null, + "ldap_sync_last_sync_at": null, + "lfs_enabled": null, + "parent_id": null, + "shared_runners_minutes_limit": null, + "repository_size_limit": null, + "require_two_factor_authentication": false, + "two_factor_grace_period": 48, + "plan_id": null, + "project_creation_level": 2, + "trial_ends_on": null, + "file_template_project_id": null, + "saml_discovery_token": "rBKx3ioz", + "custom_project_templates_group_id": null, + "auto_devops_enabled": null, + "extra_shared_runners_minutes_limit": null, + "last_ci_minutes_notification_at": null, + "last_ci_minutes_usage_notification_level": null, + "subgroup_creation_level": 1, + "emails_disabled": null, + "max_pages_size": null, + "max_artifacts_size": null, + "milestones": [ + { + "id": 7642, + "title": "v4.0", + "project_id": null, + "description": "Et laudantium enim omnis ea reprehenderit iure.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.336Z", + "updated_at": "2019-11-20T17:02:14.336Z", + "state": "closed", + "iid": 5, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7641, + "title": "v3.0", + "project_id": null, + "description": "Et repellat culpa nemo consequatur ut reprehenderit.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.323Z", + "updated_at": "2019-11-20T17:02:14.323Z", + "state": "active", + "iid": 4, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7640, + "title": "v2.0", + "project_id": null, + "description": "Velit cupiditate est neque voluptates iste rem sunt.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.309Z", + "updated_at": "2019-11-20T17:02:14.309Z", + "state": "active", + "iid": 3, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7639, + "title": "v1.0", + "project_id": null, + "description": "Amet velit repellat ut rerum aut cum.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.296Z", + "updated_at": "2019-11-20T17:02:14.296Z", + "state": "active", + "iid": 2, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7638, + "title": "v0.0", + "project_id": null, + "description": "Ea quia asperiores ut modi dolorem sunt non numquam.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.282Z", + "updated_at": "2019-11-20T17:02:14.282Z", + "state": "active", + "iid": 1, + "start_date": null, + "group_id": 4351 + } + ], + "badges": [ + { + "id": 10, + "link_url": "https://localhost:3443/%{default_branch}", + "image_url": "https://badge_image.png", + "project_id": null, + "group_id": 4351, + "created_at": "2019-11-20T17:27:02.047Z", + "updated_at": "2019-11-20T17:27:02.047Z", + "type": "GroupBadge" + } + ], + "labels": [ + { + "id": 23452, + "title": "Bruffefunc", + "color": "#1d2da4", + "project_id": null, + "created_at": "2019-11-20T17:02:20.546Z", + "updated_at": "2019-11-20T17:02:20.546Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23446, + "title": "Cafunc", + "color": "#73ed5b", + "project_id": null, + "created_at": "2019-11-20T17:02:20.526Z", + "updated_at": "2019-11-20T17:02:20.526Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23451, + "title": "Casche", + "color": "#649a75", + "project_id": null, + "created_at": "2019-11-20T17:02:20.544Z", + "updated_at": "2019-11-20T17:02:20.544Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23444, + "title": "Cocell", + "color": "#1b365c", + "project_id": null, + "created_at": "2019-11-20T17:02:20.521Z", + "updated_at": "2019-11-20T17:02:20.521Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23449, + "title": "Packfunc", + "color": "#e33bba", + "project_id": null, + "created_at": "2019-11-20T17:02:20.537Z", + "updated_at": "2019-11-20T17:02:20.537Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23443, + "title": "Panabalt", + "color": "#84f708", + "project_id": null, + "created_at": "2019-11-20T17:02:20.518Z", + "updated_at": "2019-11-20T17:02:20.518Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23447, + "title": "Phierefunc", + "color": "#4ab4a8", + "project_id": null, + "created_at": "2019-11-20T17:02:20.530Z", + "updated_at": "2019-11-20T17:02:20.530Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23445, + "title": "Pons", + "color": "#47f440", + "project_id": null, + "created_at": "2019-11-20T17:02:20.523Z", + "updated_at": "2019-11-20T17:02:20.523Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23448, + "title": "Sosync", + "color": "#110320", + "project_id": null, + "created_at": "2019-11-20T17:02:20.532Z", + "updated_at": "2019-11-20T17:02:20.532Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23450, + "title": "TSL", + "color": "#58796f", + "project_id": null, + "created_at": "2019-11-20T17:02:20.541Z", + "updated_at": "2019-11-20T17:02:20.541Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + } + ], + "boards": [ + { + "id": 56, + "project_id": null, + "created_at": "2019-11-20T17:27:16.808Z", + "updated_at": "2019-11-20T17:27:16.808Z", + "name": "Development", + "milestone_id": null, + "group_id": 4351, + "weight": null, + "labels": [] + }, + { + "id": 57, + "project_id": null, + "created_at": "2019-11-20T17:27:41.118Z", + "updated_at": "2019-11-20T17:27:41.118Z", + "name": "Board!", + "milestone_id": 7638, + "group_id": 4351, + "weight": null, + "labels": [] + } + ], + "members": [ + { + "id": 13766, + "access_level": 30, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 42, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.184Z", + "updated_at": "2019-11-20T17:04:36.184Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 42, + "email": "moriah@collinsmurphy.com", + "username": "reported_user_15" + } + }, + { + "id": 13765, + "access_level": 40, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 271, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.044Z", + "updated_at": "2019-11-20T17:04:36.044Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 271, + "email": "garret@connellystark.ca", + "username": "charlesetta" + } + }, + { + "id": 13764, + "access_level": 30, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 206, + "notification_level": 3, + "created_at": "2019-11-20T17:04:35.840Z", + "updated_at": "2019-11-20T17:04:35.840Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 206, + "email": "margaret.bergnaum@reynolds.us", + "username": "gwendolyn_robel" + } + }, + { + "id": 13763, + "access_level": 10, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 39, + "notification_level": 3, + "created_at": "2019-11-20T17:04:35.704Z", + "updated_at": "2019-11-20T17:04:35.704Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 39, + "email": "alexis_berge@kerlukeklein.us", + "username": "reported_user_12" + } + }, + { + "id": 13762, + "access_level": 20, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 1624, + "notification_level": 3, + "created_at": "2019-11-20T17:04:35.566Z", + "updated_at": "2019-11-20T17:04:35.566Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1624, + "email": "nakesha.herzog@powlowski.com", + "username": "adriene.mcclure" + } + }, + { + "id": 12920, + "access_level": 50, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 1, + "notification_level": 3, + "created_at": "2019-11-20T17:01:53.505Z", + "updated_at": "2019-11-20T17:01:53.505Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1, + "email": "admin@example.com", + "username": "root" + } + } + ], + "epics": [ + { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [ + { + "id": 44170, + "note": "added epic \u00265 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:40.031Z", + "updated_at": "2019-11-20T18:38:40.035Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "ba005d8dd59cd37a4f32406d46e759b08fd15510", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + }, + { + "id": 44168, + "note": "added epic \u00264 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:35.669Z", + "updated_at": "2019-11-20T18:38:35.673Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "9b49d3b017aadc1876d477b960e6f8efb99ce29f", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + }, + { + "id": 44166, + "note": "added epic \u00263 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:30.944Z", + "updated_at": "2019-11-20T18:38:30.948Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "cccfe967f48e699a466c87a55a9f8acb00fec1a1", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + }, + { + "id": 44164, + "note": "added epic \u00262 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:26.689Z", + "updated_at": "2019-11-20T18:38:26.724Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "133f0c3001860fa8d2031e398a65db74477378c4", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13623, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 2, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.769Z", + "updated_at": "2019-11-20T18:38:26.851Z", + "title": "Omnis accusantium commodi voluptas odio illo eum ut.", + "description": "Eius vero et iste amet est voluptatem modi. Doloribus ipsam beatae et ut autem ut animi. Dolor culpa dolor omnis delectus est tempora inventore ab. Optio labore tenetur libero quia provident et quis. Blanditiis architecto sint possimus cum aut adipisci.\n\nDolores quisquam sunt cupiditate unde qui vitae nemo. Odio quas omnis ut nobis. Possimus fugit deserunt quia sed ab numquam veritatis nihil.\n\nQui nemo adipisci magnam perferendis voluptatem modi. Eius enim iure dolores consequuntur eum nobis adipisci. Consequatur architecto et quas deleniti hic id laborum officiis. Enim perferendis quis quasi totam delectus rerum deleniti.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073741323, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44165, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:26.822Z", + "updated_at": "2019-11-20T18:38:26.826Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13623, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "15f0a7f4ed16a07bc78841e122524bb867edcf86", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13624, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 3, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.783Z", + "updated_at": "2019-11-20T18:38:31.018Z", + "title": "Quis dolore velit possimus eaque aut amet esse voluptate aliquam.", + "description": "Ab veritatis reprehenderit nulla laboriosam et sed asperiores corporis. Est accusantium maxime perferendis et. Omnis a qui voluptates non excepturi.\n\nAdipisci labore maiores dicta sed magnam aut. Veritatis delectus dolorum qui id. Dolorum tenetur quo iure amet. Eveniet reprehenderit dolor ipsam quia ratione quo. Facilis voluptatem vel repellat id illum.\n\nAut et magnam aut minus aspernatur. Fuga quo necessitatibus mollitia maxime quasi. Qui aspernatur quia accusamus est quod. Qui assumenda veritatis dolor non eveniet quibusdam quos qui.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073740823, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44167, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:30.989Z", + "updated_at": "2019-11-20T18:38:30.993Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13624, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "423ffec14a3ce148c11a802eb1f2613fa8ca9a94", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13625, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 4, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.798Z", + "updated_at": "2019-11-20T18:38:35.765Z", + "title": "Possimus et ut iste temporibus earum cupiditate voluptatem esse assumenda amet.", + "description": "Et at corporis sed id rerum ullam dolore. Odio magnam corporis excepturi neque est. Est accusamus nostrum qui rerum.\n\nEt aut dolores eaque quibusdam aut quas explicabo id. Est necessitatibus praesentium omnis et vero laboriosam et. Sunt in saepe qui laudantium et voluptas.\n\nVelit sunt odit eum omnis beatae eius aut. Dolores commodi qui impedit deleniti et magnam pariatur. Aut odit amet ipsum ea atque. Itaque est ut sunt ullam eum nam.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073740323, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44169, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:35.737Z", + "updated_at": "2019-11-20T18:38:35.741Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13625, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "5bc3e30d508affafc61de2b4e1d9f21039505cc3", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13626, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 5, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.812Z", + "updated_at": "2019-11-20T18:38:40.101Z", + "title": "Ab deleniti ipsum voluptatem dolor qui quos saepe repellat quo.", + "description": "Sunt minus sunt reiciendis culpa sed excepturi. Aperiam sed quod nemo nesciunt et quia molestias incidunt. Ipsum nam magnam labore eos a molestiae rerum possimus. Sequi autem asperiores voluptas assumenda.\n\nRerum ipsa quia cum ab corrupti omnis. Velit libero et nihil ipsa aut quo rem ipsam. Architecto omnis distinctio sed doloribus perspiciatis consequatur aut et. Fugit consequuntur est minima reiciendis reprehenderit et.\n\nConsequatur distinctio et ut blanditiis perferendis officiis inventore. Alias aut voluptatem in facere. Ut perferendis dolorum hic dolores. Ipsa dolorem soluta at mollitia. Placeat et ea numquam dicta molestias.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073739823, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44171, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:40.074Z", + "updated_at": "2019-11-20T18:38:40.077Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13626, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "a6231acdaef5f4d2e569dfb604f1baf85c49e1a0", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + } + ], + "children": [ + { + "name": "pwip17beq7vl4nuwz9ie7bk8navpxj1w04zylmmjveab5bargr", + "path": "pwip17beq7vl4nuwz9ie7bk8navpxj1w04zylmmjveab5bargr", + "owner_id": null, + "created_at": "2019-11-20 17:01:53 UTC", + "updated_at": "2019-11-20 17:05:44 UTC", + "description": "", + "avatar": { + "url": null + }, + "membership_lock": false, + "share_with_group_lock": false, + "visibility_level": 0, + "request_access_enabled": true, + "ldap_sync_status": "ready", + "ldap_sync_error": null, + "ldap_sync_last_update_at": null, + "ldap_sync_last_successful_update_at": null, + "ldap_sync_last_sync_at": null, + "lfs_enabled": null, + "parent_id": 4351, + "shared_runners_minutes_limit": null, + "repository_size_limit": null, + "require_two_factor_authentication": false, + "two_factor_grace_period": 48, + "plan_id": null, + "project_creation_level": 2, + "trial_ends_on": null, + "file_template_project_id": null, + "saml_discovery_token": "ki3Xnjw3", + "custom_project_templates_group_id": null, + "auto_devops_enabled": null, + "extra_shared_runners_minutes_limit": null, + "last_ci_minutes_notification_at": null, + "last_ci_minutes_usage_notification_level": null, + "subgroup_creation_level": 1, + "emails_disabled": null, + "max_pages_size": null, + "max_artifacts_size": null, + "milestones": [ + { + "id": 7647, + "title": "v4.0", + "project_id": null, + "description": "Magnam accusantium fuga quo dolorum.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.511Z", + "updated_at": "2019-11-20T17:02:14.511Z", + "state": "active", + "iid": 5, + "start_date": null, + "group_id": 4352 + }, + { + "id": 7646, + "title": "v3.0", + "project_id": null, + "description": "Quasi ut beatae quo vel.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.392Z", + "updated_at": "2019-11-20T17:02:14.392Z", + "state": "active", + "iid": 4, + "start_date": null, + "group_id": 4352 + }, + { + "id": 7645, + "title": "v2.0", + "project_id": null, + "description": "Voluptates et rerum maxime sint cum.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.380Z", + "updated_at": "2019-11-20T17:02:14.380Z", + "state": "closed", + "iid": 3, + "start_date": null, + "group_id": 4352 + }, + { + "id": 7644, + "title": "v1.0", + "project_id": null, + "description": "Qui dolores et facilis corporis dolores.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.364Z", + "updated_at": "2019-11-20T17:02:14.364Z", + "state": "active", + "iid": 2, + "start_date": null, + "group_id": 4352 + }, + { + "id": 7643, + "title": "v0.0", + "project_id": null, + "description": "Et dolor nam rerum culpa nisi doloremque ex.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.351Z", + "updated_at": "2019-11-20T17:02:14.351Z", + "state": "active", + "iid": 1, + "start_date": null, + "group_id": 4352 + } + ], + "badges": [ + { + "id": 14, + "link_url": "https://localhost:3443/%{default_branch}", + "image_url": "https://badge_image.png", + "project_id": null, + "group_id": 4352, + "created_at": "2019-11-20T17:29:36.656Z", + "updated_at": "2019-11-20T17:29:36.656Z", + "type": "GroupBadge" + } + ], + "labels": [ + { + "id": 23453, + "title": "Brire", + "color": "#d68d9d", + "project_id": null, + "created_at": "2019-11-20T17:02:20.549Z", + "updated_at": "2019-11-20T17:02:20.549Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#333333" + }, + { + "id": 23461, + "title": "Cygfunc", + "color": "#a0695d", + "project_id": null, + "created_at": "2019-11-20T17:02:20.575Z", + "updated_at": "2019-11-20T17:02:20.575Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23459, + "title": "Cygnix", + "color": "#691678", + "project_id": null, + "created_at": "2019-11-20T17:02:20.569Z", + "updated_at": "2019-11-20T17:02:20.569Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23456, + "title": "Genbalt", + "color": "#7f800c", + "project_id": null, + "created_at": "2019-11-20T17:02:20.560Z", + "updated_at": "2019-11-20T17:02:20.560Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23457, + "title": "NBP", + "color": "#e19356", + "project_id": null, + "created_at": "2019-11-20T17:02:20.564Z", + "updated_at": "2019-11-20T17:02:20.564Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23455, + "title": "Pionce", + "color": "#65c1b1", + "project_id": null, + "created_at": "2019-11-20T17:02:20.555Z", + "updated_at": "2019-11-20T17:02:20.555Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23458, + "title": "Pist", + "color": "#f62da4", + "project_id": null, + "created_at": "2019-11-20T17:02:20.566Z", + "updated_at": "2019-11-20T17:02:20.566Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23454, + "title": "Poffe", + "color": "#4f03bc", + "project_id": null, + "created_at": "2019-11-20T17:02:20.552Z", + "updated_at": "2019-11-20T17:02:20.552Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23460, + "title": "Poune", + "color": "#036637", + "project_id": null, + "created_at": "2019-11-20T17:02:20.572Z", + "updated_at": "2019-11-20T17:02:20.572Z", + "template": false, + "description": null, + "group_id": 4352, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + } + ], + "boards": [ + { + "id": 64, + "project_id": null, + "created_at": "2019-11-20T17:29:39.872Z", + "updated_at": "2019-11-20T17:29:39.872Z", + "name": "Development", + "milestone_id": null, + "group_id": 4352, + "weight": null, + "labels": [] + }, + { + "id": 65, + "project_id": null, + "created_at": "2019-11-20T17:29:47.304Z", + "updated_at": "2019-11-20T17:29:47.304Z", + "name": "Sub Board 4", + "milestone_id": null, + "group_id": 4352, + "weight": null, + "labels": [] + } + ], + "members": [ + { + "id": 13771, + "access_level": 30, + "source_id": 4352, + "source_type": "Namespace", + "user_id": 1087, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.968Z", + "updated_at": "2019-11-20T17:04:36.968Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1087, + "email": "paige@blanda.info", + "username": "billi_auer" + } + }, + { + "id": 13770, + "access_level": 20, + "source_id": 4352, + "source_type": "Namespace", + "user_id": 171, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.821Z", + "updated_at": "2019-11-20T17:04:36.821Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 171, + "email": "heidi@bosco.co.uk", + "username": "gerard.cruickshank" + } + }, + { + "id": 13769, + "access_level": 30, + "source_id": 4352, + "source_type": "Namespace", + "user_id": 1157, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.606Z", + "updated_at": "2019-11-20T17:04:36.606Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1157, + "email": "larisa.bruen@carroll.biz", + "username": "milagros.reynolds" + } + }, + { + "id": 13768, + "access_level": 40, + "source_id": 4352, + "source_type": "Namespace", + "user_id": 14, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.465Z", + "updated_at": "2019-11-20T17:04:36.465Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 14, + "email": "madlyn_kovacek@wiza.ca", + "username": "monique.gusikowski" + } + }, + { + "id": 13767, + "access_level": 10, + "source_id": 4352, + "source_type": "Namespace", + "user_id": 1167, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.324Z", + "updated_at": "2019-11-20T17:04:36.324Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1167, + "email": "mirella@koepp.ca", + "username": "eileen" + } + }, + { + "id": 12921, + "access_level": 50, + "source_id": 4352, + "source_type": "Namespace", + "user_id": 1, + "notification_level": 3, + "created_at": "2019-11-20T17:01:53.953Z", + "updated_at": "2019-11-20T17:01:53.953Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1, + "email": "admin@example.com", + "username": "root" + } + } + ], + "epics": [ + { + "id": 13627, + "milestone_id": null, + "group_id": 4352, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.848Z", + "updated_at": "2019-11-20T17:02:09.848Z", + "title": "Nobis omnis occaecati veritatis quia eveniet sed ut cupiditate ut a.", + "description": "Provident iusto ipsam fuga vero. Aut mollitia earum iusto doloremque recusandae enim nam et. Quas maxime sint libero dolorum aut cumque molestias quam. Iure voluptas voluptatum similique voluptatem dolorem.\n\nAnimi aliquid praesentium sint voluptatum fuga voluptates molestias. Non hic sit modi minus a. Illum asperiores sed eius dolor impedit animi. Dolor vel fugit voluptas quia voluptatem aut minus.\n\nVelit voluptatum deleniti illo quos omnis deserunt. Omnis consequatur omnis nulla et et. Praesentium dolores rem consequatur laboriosam harum quae. Aut id aliquam nihil consequuntur.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13628, + "milestone_id": null, + "group_id": 4352, + "author_id": 1, + "assignee_id": null, + "iid": 2, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.863Z", + "updated_at": "2019-11-20T17:02:09.863Z", + "title": "Assumenda possimus sed nostrum consequatur ut sint nihil fugiat.", + "description": "Culpa fugiat voluptas ut voluptas quo laborum eius. Earum qui dolore temporibus consequatur ratione minima architecto accusantium. Corporis accusantium et consequatur est mollitia sint fugiat aliquam. Est aut quia blanditiis et sint reiciendis. Eveniet accusamus quod molestiae vero hic a ipsum.\n\nNon numquam eum repellendus ipsa tempore necessitatibus. Delectus aut doloremque quis saepe nam ut aut a. Qui corrupti eum animi ipsam. Voluptatem distinctio consequatur accusantium blanditiis.\n\nQuis voluptatum facere inventore itaque quae. Quis quae dolorum autem qui labore. Laboriosam asperiores laborum aperiam voluptatibus error ut quos similique. Deleniti fugit ut eveniet ab quae.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13629, + "milestone_id": null, + "group_id": 4352, + "author_id": 1, + "assignee_id": null, + "iid": 3, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.879Z", + "updated_at": "2019-11-20T17:02:09.879Z", + "title": "Ut dolore eos molestiae perferendis quibusdam accusamus.", + "description": "Possimus vel adipisci consequatur asperiores. Et aspernatur quis ipsum aut natus tempora. Recusandae voluptatibus officiis praesentium et. Nostrum beatae laboriosam dolor nihil ut deserunt ad. Exercitationem iure hic minus deleniti assumenda quis rem.\n\nVoluptate optio et impedit sapiente dignissimos deleniti sit ea. Neque modi voluptates accusamus non non officia sit quis. Qui nihil dolores aut nostrum quia sed dolore perspiciatis. Vero necessitatibus inventore eligendi est aliquid dolorum.\n\nNulla et autem aut fugit aut aut expedita. Molestiae beatae eligendi reiciendis temporibus mollitia aut reprehenderit. Autem maiores rerum dolorum cupiditate. Cum est quasi ab et. Ratione doloribus quas perspiciatis alias voluptates et.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13630, + "milestone_id": null, + "group_id": 4352, + "author_id": 1, + "assignee_id": null, + "iid": 4, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.894Z", + "updated_at": "2019-11-20T17:02:09.894Z", + "title": "Molestias numquam ut veritatis suscipit eum vitae minima et consequatur sit.", + "description": "Ad omnis tempore blanditiis vero possimus. Quis quidem et quo cumque pariatur. Nihil eaque inventore natus delectus est qui voluptate. Officiis illo voluptatum aut modi. Inventore voluptate est voluptatem deserunt aut esse.\n\nOdit deserunt ut expedita sit ut. Nam est aut alias quibusdam. Est delectus ratione expedita hic eaque est. Delectus est voluptatibus quo aut dolorem. Libero saepe alias aspernatur itaque et qui.\n\nOmnis voluptas nemo nostrum accusantium. Perspiciatis cupiditate quia quo asperiores. Voluptas perspiciatis nihil officia consectetur recusandae. Libero sed eum laborum expedita quisquam soluta incidunt odit.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13631, + "milestone_id": null, + "group_id": 4352, + "author_id": 1, + "assignee_id": null, + "iid": 5, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.908Z", + "updated_at": "2019-11-20T17:02:09.908Z", + "title": "Labore quas voluptas delectus fugiat aut nihil vero.", + "description": "Necessitatibus aspernatur sunt repellat non animi reprehenderit. Dolor harum ad tempore nesciunt aperiam tenetur. Tempore in est sed quo. Aliquam eaque ullam est consequuntur porro rerum minima aspernatur. Ullam cupiditate illum dicta praesentium assumenda.\n\nEnim impedit ab dolorem libero maiores. Non consectetur ut molestiae quo atque quae necessitatibus. Placeat eveniet minus occaecati magni.\n\nConsequuntur laboriosam quisquam quo eligendi et quia. Sunt ipsam unde adipisci ad praesentium. Odit quia eius quia harum dolor nobis.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + } + ], + "children": [] + }, + { + "name": "4n1db5ghlicx3ioddnwftxygq65nxb96dafkf89qp7p9sjqi3p", + "path": "4n1db5ghlicx3ioddnwftxygq65nxb96dafkf89qp7p9sjqi3p", + "owner_id": null, + "created_at": "2019-11-20 17:01:54 UTC", + "updated_at": "2019-11-20 17:05:44 UTC", + "description": "", + "avatar": { + "url": null + }, + "membership_lock": false, + "share_with_group_lock": false, + "visibility_level": 0, + "request_access_enabled": true, + "ldap_sync_status": "ready", + "ldap_sync_error": null, + "ldap_sync_last_update_at": null, + "ldap_sync_last_successful_update_at": null, + "ldap_sync_last_sync_at": null, + "lfs_enabled": null, + "parent_id": 4351, + "shared_runners_minutes_limit": null, + "repository_size_limit": null, + "require_two_factor_authentication": false, + "two_factor_grace_period": 48, + "plan_id": null, + "project_creation_level": 2, + "trial_ends_on": null, + "file_template_project_id": null, + "saml_discovery_token": "m7cx4AZi", + "custom_project_templates_group_id": null, + "auto_devops_enabled": null, + "extra_shared_runners_minutes_limit": null, + "last_ci_minutes_notification_at": null, + "last_ci_minutes_usage_notification_level": null, + "subgroup_creation_level": 1, + "emails_disabled": null, + "max_pages_size": null, + "max_artifacts_size": null, + "milestones": [ + { + "id": 7662, + "title": "v4.0", + "project_id": null, + "description": "Consequatur quaerat aut voluptas repudiandae.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.746Z", + "updated_at": "2019-11-20T17:02:14.746Z", + "state": "active", + "iid": 5, + "start_date": null, + "group_id": 4355 + }, + { + "id": 7661, + "title": "v3.0", + "project_id": null, + "description": "In cupiditate aspernatur non ipsa enim consequatur.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.731Z", + "updated_at": "2019-11-20T17:02:14.731Z", + "state": "active", + "iid": 4, + "start_date": null, + "group_id": 4355 + }, + { + "id": 7660, + "title": "v2.0", + "project_id": null, + "description": "Dolor non rem omnis atque.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.716Z", + "updated_at": "2019-11-20T17:02:14.716Z", + "state": "closed", + "iid": 3, + "start_date": null, + "group_id": 4355 + }, + { + "id": 7659, + "title": "v1.0", + "project_id": null, + "description": "Nihil consectetur et quibusdam esse quae.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.701Z", + "updated_at": "2019-11-20T17:02:14.701Z", + "state": "closed", + "iid": 2, + "start_date": null, + "group_id": 4355 + }, + { + "id": 7658, + "title": "v0.0", + "project_id": null, + "description": "Suscipit dolor id magnam reprehenderit.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.686Z", + "updated_at": "2019-11-20T17:02:14.686Z", + "state": "active", + "iid": 1, + "start_date": null, + "group_id": 4355 + } + ], + "badges": [ + { + "id": 11, + "link_url": "https://localhost:3443/%{default_branch}", + "image_url": "https://badge_image.png", + "project_id": null, + "group_id": 4355, + "created_at": "2019-11-20T17:28:11.883Z", + "updated_at": "2019-11-20T17:28:11.883Z", + "type": "GroupBadge" + } + ], + "labels": [ + { + "id": 23488, + "title": "Brisync", + "color": "#66ac54", + "project_id": null, + "created_at": "2019-11-20T17:02:20.654Z", + "updated_at": "2019-11-20T17:02:20.654Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23486, + "title": "Casync", + "color": "#2f494d", + "project_id": null, + "created_at": "2019-11-20T17:02:20.648Z", + "updated_at": "2019-11-20T17:02:20.648Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23485, + "title": "Cygnix", + "color": "#691678", + "project_id": null, + "created_at": "2019-11-20T17:02:20.646Z", + "updated_at": "2019-11-20T17:02:20.646Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23484, + "title": "Pynce", + "color": "#117075", + "project_id": null, + "created_at": "2019-11-20T17:02:20.643Z", + "updated_at": "2019-11-20T17:02:20.643Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23490, + "title": "Pynswood", + "color": "#67314e", + "project_id": null, + "created_at": "2019-11-20T17:02:20.663Z", + "updated_at": "2019-11-20T17:02:20.663Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23483, + "title": "Triffe", + "color": "#3bf49a", + "project_id": null, + "created_at": "2019-11-20T17:02:20.640Z", + "updated_at": "2019-11-20T17:02:20.640Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23489, + "title": "Trintforge", + "color": "#cdab1a", + "project_id": null, + "created_at": "2019-11-20T17:02:20.657Z", + "updated_at": "2019-11-20T17:02:20.657Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23482, + "title": "Trouffeforge", + "color": "#db06cb", + "project_id": null, + "created_at": "2019-11-20T17:02:20.637Z", + "updated_at": "2019-11-20T17:02:20.637Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23487, + "title": "Tryre", + "color": "#d00c41", + "project_id": null, + "created_at": "2019-11-20T17:02:20.651Z", + "updated_at": "2019-11-20T17:02:20.651Z", + "template": false, + "description": null, + "group_id": 4355, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + } + ], + "boards": [ + { + "id": 58, + "project_id": null, + "created_at": "2019-11-20T17:28:15.616Z", + "updated_at": "2019-11-20T17:28:15.616Z", + "name": "Development", + "milestone_id": null, + "group_id": 4355, + "weight": null, + "labels": [] + }, + { + "id": 59, + "project_id": null, + "created_at": "2019-11-20T17:28:25.289Z", + "updated_at": "2019-11-20T17:28:25.289Z", + "name": "Sub Board 1", + "milestone_id": null, + "group_id": 4355, + "weight": null, + "labels": [] + } + ], + "members": [ + { + "id": 13786, + "access_level": 30, + "source_id": 4355, + "source_type": "Namespace", + "user_id": 1533, + "notification_level": 3, + "created_at": "2019-11-20T17:04:39.405Z", + "updated_at": "2019-11-20T17:04:39.405Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1533, + "email": "jose@cassin.ca", + "username": "buster" + } + }, + { + "id": 13785, + "access_level": 10, + "source_id": 4355, + "source_type": "Namespace", + "user_id": 1586, + "notification_level": 3, + "created_at": "2019-11-20T17:04:39.269Z", + "updated_at": "2019-11-20T17:04:39.269Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1586, + "email": "carie@gleichner.us", + "username": "dominque" + } + }, + { + "id": 13784, + "access_level": 30, + "source_id": 4355, + "source_type": "Namespace", + "user_id": 190, + "notification_level": 3, + "created_at": "2019-11-20T17:04:39.127Z", + "updated_at": "2019-11-20T17:04:39.127Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 190, + "email": "delois@funk.biz", + "username": "kittie" + } + }, + { + "id": 13783, + "access_level": 20, + "source_id": 4355, + "source_type": "Namespace", + "user_id": 254, + "notification_level": 3, + "created_at": "2019-11-20T17:04:38.971Z", + "updated_at": "2019-11-20T17:04:38.971Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 254, + "email": "tyra.lowe@whitemckenzie.co.uk", + "username": "kassie" + } + }, + { + "id": 13782, + "access_level": 40, + "source_id": 4355, + "source_type": "Namespace", + "user_id": 503, + "notification_level": 3, + "created_at": "2019-11-20T17:04:38.743Z", + "updated_at": "2019-11-20T17:04:38.743Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 503, + "email": "tyesha.brakus@bruen.ca", + "username": "charise" + } + }, + { + "id": 12924, + "access_level": 50, + "source_id": 4355, + "source_type": "Namespace", + "user_id": 1, + "notification_level": 3, + "created_at": "2019-11-20T17:01:54.145Z", + "updated_at": "2019-11-20T17:01:54.145Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1, + "email": "admin@example.com", + "username": "root" + } + } + ], + "epics": [ + { + "id": 13642, + "milestone_id": null, + "group_id": 4355, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:10.151Z", + "updated_at": "2019-11-20T17:02:10.151Z", + "title": "Iste qui ratione dolores nisi vel dolor ea totam omnis aut.", + "description": "Voluptas dolore tenetur repudiandae repellendus maiores beatae quia et. Nisi mollitia exercitationem ut dolores tempore repellat similique. Nesciunt sit occaecati fugiat voluptates qui. Provident quod qui nulla atque dignissimos.\n\nAd veritatis nihil illum nisi est accusamus recusandae. Eos dolore autem ab corporis consectetur officiis ipsum. Consequatur non quis dolor rerum et hic consectetur dicta. Sed aut consectetur mollitia est.\n\nQuia sed dolore culpa error omnis quae quaerat. Magni quos quod illo tempore et eligendi enim. Autem reprehenderit esse vitae aut ipsum consectetur quis.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13643, + "milestone_id": null, + "group_id": 4355, + "author_id": 1, + "assignee_id": null, + "iid": 2, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:10.166Z", + "updated_at": "2019-11-20T17:02:10.166Z", + "title": "Corporis placeat ut totam impedit ex qui debitis atque et provident.", + "description": "Quam aut in distinctio ut accusamus aliquam dolor sit. Aliquid quod corporis voluptas aliquam voluptate blanditiis distinctio dolore. Qui quis et qui non sunt deleniti iusto consequatur. Quasi quos omnis nobis et tenetur.\n\nCorrupti eius quod molestias et magnam laboriosam quia quis. Architecto aut eius est voluptas mollitia. Suscipit amet consequatur recusandae natus. Consectetur error quisquam est quas et qui.\n\nRerum earum fugit dolore sunt inventore. Vitae odit tempore autem adipisci voluptate esse placeat nobis. Debitis necessitatibus harum molestiae ex minima tempore consequuntur nihil.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13644, + "milestone_id": null, + "group_id": 4355, + "author_id": 1, + "assignee_id": null, + "iid": 3, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:10.180Z", + "updated_at": "2019-11-20T17:02:10.180Z", + "title": "Voluptatem incidunt soluta fuga doloribus dolores nisi reiciendis impedit.", + "description": "Ipsa qui enim deleniti voluptas. Quasi nihil est blanditiis voluptas laudantium cum sequi consequatur. Id quo et atque error et possimus.\n\nUllam ea soluta ipsam sunt veritatis. Et incidunt natus consequatur repellat. Quam molestias magni consequatur soluta aut nobis. Maxime natus aperiam unde recusandae. A in dolorum facilis veniam est.\n\nEx repellendus tempore rem voluptatibus ad culpa consequatur. Consequatur quo quo dolore dicta nostrum necessitatibus tenetur. A voluptatem harum corporis qui quod molestiae culpa.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13645, + "milestone_id": null, + "group_id": 4355, + "author_id": 1, + "assignee_id": null, + "iid": 4, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:10.194Z", + "updated_at": "2019-11-20T17:02:10.194Z", + "title": "Aut quo veniam soluta veritatis autem doloremque totam qui quia.", + "description": "Dolor itaque sunt perspiciatis quas natus et praesentium. A sit sapiente dolores ut et dolorum nihil omnis. Dolor quis dolores aut et perferendis.\n\nConsequatur molestiae laboriosam eum consequatur recusandae maxime deleniti commodi. Voluptas voluptatem eaque dicta animi aliquam rerum veritatis. Fugiat consequatur est sit et voluptatem.\n\nSequi tenetur itaque est vero eligendi quia laudantium et. Modi assumenda odio explicabo est non et. Voluptatem et enim minus sit at dicta est.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + }, + { + "id": 13646, + "milestone_id": null, + "group_id": 4355, + "author_id": 1, + "assignee_id": null, + "iid": 5, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:10.208Z", + "updated_at": "2019-11-20T17:02:10.208Z", + "title": "Reprehenderit molestias incidunt non odio laudantium minima eum debitis ipsum.", + "description": "Quas velit omnis architecto quis eius. Vitae unde velit veniam dolor. Dolores facilis vel repellat et placeat ea rerum ratione. Rem fugit ab assumenda provident vel voluptas harum.\n\nQuia molestias similique illum delectus modi officiis. Aut modi sit ut qui. Est sequi corrupti laudantium ut optio eveniet ut. Corrupti quo provident natus aut omnis nam.\n\nVoluptas facilis repudiandae est quam. Mollitia fugit sint voluptatem aut. Quam quo eligendi id ad perferendis quis magnam. Corrupti sequi vel deleniti odit qui fugit.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [] + } + ], + "children": [] + } + ] +} diff --git a/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json b/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json new file mode 100644 index 00000000000..3ffa899405e --- /dev/null +++ b/spec/fixtures/lib/gitlab/import_export/group_exports/no_children/group.json @@ -0,0 +1,957 @@ +{ + "name": "group", + "path": "group", + "owner_id": null, + "created_at": "2019-11-20 17:01:53 UTC", + "updated_at": "2019-11-20 17:05:44 UTC", + "description": "Group Description", + "avatar": { + "url": null + }, + "membership_lock": false, + "share_with_group_lock": false, + "visibility_level": 0, + "request_access_enabled": true, + "ldap_sync_status": "ready", + "ldap_sync_error": null, + "ldap_sync_last_update_at": null, + "ldap_sync_last_successful_update_at": null, + "ldap_sync_last_sync_at": null, + "lfs_enabled": null, + "parent_id": null, + "shared_runners_minutes_limit": null, + "repository_size_limit": null, + "require_two_factor_authentication": false, + "two_factor_grace_period": 48, + "plan_id": null, + "project_creation_level": 2, + "trial_ends_on": null, + "file_template_project_id": null, + "saml_discovery_token": "rBKx3ioz", + "custom_project_templates_group_id": null, + "auto_devops_enabled": null, + "extra_shared_runners_minutes_limit": null, + "last_ci_minutes_notification_at": null, + "last_ci_minutes_usage_notification_level": null, + "subgroup_creation_level": 1, + "emails_disabled": null, + "max_pages_size": null, + "max_artifacts_size": null, + "milestones": [ + { + "id": 7642, + "title": "v4.0", + "project_id": null, + "description": "Et laudantium enim omnis ea reprehenderit iure.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.336Z", + "updated_at": "2019-11-20T17:02:14.336Z", + "state": "closed", + "iid": 5, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7641, + "title": "v3.0", + "project_id": null, + "description": "Et repellat culpa nemo consequatur ut reprehenderit.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.323Z", + "updated_at": "2019-11-20T17:02:14.323Z", + "state": "active", + "iid": 4, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7640, + "title": "v2.0", + "project_id": null, + "description": "Velit cupiditate est neque voluptates iste rem sunt.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.309Z", + "updated_at": "2019-11-20T17:02:14.309Z", + "state": "active", + "iid": 3, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7639, + "title": "v1.0", + "project_id": null, + "description": "Amet velit repellat ut rerum aut cum.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.296Z", + "updated_at": "2019-11-20T17:02:14.296Z", + "state": "active", + "iid": 2, + "start_date": null, + "group_id": 4351 + }, + { + "id": 7638, + "title": "v0.0", + "project_id": null, + "description": "Ea quia asperiores ut modi dolorem sunt non numquam.", + "due_date": null, + "created_at": "2019-11-20T17:02:14.282Z", + "updated_at": "2019-11-20T17:02:14.282Z", + "state": "active", + "iid": 1, + "start_date": null, + "group_id": 4351 + } + ], + "badges": [ + { + "id": 10, + "link_url": "https://localhost:3443/%{default_branch}", + "image_url": "https://badge_image.png", + "project_id": null, + "group_id": 4351, + "created_at": "2019-11-20T17:27:02.047Z", + "updated_at": "2019-11-20T17:27:02.047Z", + "type": "GroupBadge" + } + ], + "labels": [ + { + "id": 23452, + "title": "Bruffefunc", + "color": "#1d2da4", + "project_id": null, + "created_at": "2019-11-20T17:02:20.546Z", + "updated_at": "2019-11-20T17:02:20.546Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23446, + "title": "Cafunc", + "color": "#73ed5b", + "project_id": null, + "created_at": "2019-11-20T17:02:20.526Z", + "updated_at": "2019-11-20T17:02:20.526Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23451, + "title": "Casche", + "color": "#649a75", + "project_id": null, + "created_at": "2019-11-20T17:02:20.544Z", + "updated_at": "2019-11-20T17:02:20.544Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23444, + "title": "Cocell", + "color": "#1b365c", + "project_id": null, + "created_at": "2019-11-20T17:02:20.521Z", + "updated_at": "2019-11-20T17:02:20.521Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23449, + "title": "Packfunc", + "color": "#e33bba", + "project_id": null, + "created_at": "2019-11-20T17:02:20.537Z", + "updated_at": "2019-11-20T17:02:20.537Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23443, + "title": "Panabalt", + "color": "#84f708", + "project_id": null, + "created_at": "2019-11-20T17:02:20.518Z", + "updated_at": "2019-11-20T17:02:20.518Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23447, + "title": "Phierefunc", + "color": "#4ab4a8", + "project_id": null, + "created_at": "2019-11-20T17:02:20.530Z", + "updated_at": "2019-11-20T17:02:20.530Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23445, + "title": "Pons", + "color": "#47f440", + "project_id": null, + "created_at": "2019-11-20T17:02:20.523Z", + "updated_at": "2019-11-20T17:02:20.523Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23448, + "title": "Sosync", + "color": "#110320", + "project_id": null, + "created_at": "2019-11-20T17:02:20.532Z", + "updated_at": "2019-11-20T17:02:20.532Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + }, + { + "id": 23450, + "title": "TSL", + "color": "#58796f", + "project_id": null, + "created_at": "2019-11-20T17:02:20.541Z", + "updated_at": "2019-11-20T17:02:20.541Z", + "template": false, + "description": null, + "group_id": 4351, + "type": "GroupLabel", + "priorities": [], + "textColor": "#FFFFFF" + } + ], + "boards": [ + { + "id": 56, + "project_id": null, + "created_at": "2019-11-20T17:27:16.808Z", + "updated_at": "2019-11-20T17:27:16.808Z", + "name": "Development", + "milestone_id": null, + "group_id": 4351, + "weight": null, + "labels": [] + }, + { + "id": 57, + "project_id": null, + "created_at": "2019-11-20T17:27:41.118Z", + "updated_at": "2019-11-20T17:27:41.118Z", + "name": "Board!", + "milestone_id": 7638, + "group_id": 4351, + "weight": null, + "labels": [] + } + ], + "members": [ + { + "id": 13766, + "access_level": 30, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 42, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.184Z", + "updated_at": "2019-11-20T17:04:36.184Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 42, + "email": "moriah@collinsmurphy.com", + "username": "reported_user_15" + } + }, + { + "id": 13765, + "access_level": 40, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 271, + "notification_level": 3, + "created_at": "2019-11-20T17:04:36.044Z", + "updated_at": "2019-11-20T17:04:36.044Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 271, + "email": "garret@connellystark.ca", + "username": "charlesetta" + } + }, + { + "id": 13764, + "access_level": 30, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 206, + "notification_level": 3, + "created_at": "2019-11-20T17:04:35.840Z", + "updated_at": "2019-11-20T17:04:35.840Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 206, + "email": "margaret.bergnaum@reynolds.us", + "username": "gwendolyn_robel" + } + }, + { + "id": 13763, + "access_level": 10, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 39, + "notification_level": 3, + "created_at": "2019-11-20T17:04:35.704Z", + "updated_at": "2019-11-20T17:04:35.704Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 39, + "email": "alexis_berge@kerlukeklein.us", + "username": "reported_user_12" + } + }, + { + "id": 13762, + "access_level": 20, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 1624, + "notification_level": 3, + "created_at": "2019-11-20T17:04:35.566Z", + "updated_at": "2019-11-20T17:04:35.566Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1624, + "email": "nakesha.herzog@powlowski.com", + "username": "adriene.mcclure" + } + }, + { + "id": 12920, + "access_level": 50, + "source_id": 4351, + "source_type": "Namespace", + "user_id": 1, + "notification_level": 3, + "created_at": "2019-11-20T17:01:53.505Z", + "updated_at": "2019-11-20T17:01:53.505Z", + "created_by_id": null, + "invite_email": null, + "invite_token": null, + "invite_accepted_at": null, + "requested_at": null, + "expires_at": null, + "ldap": false, + "override": false, + "user": { + "id": 1, + "email": "admin@example.com", + "username": "root" + } + } + ], + "epics": [ + { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "notes": [ + { + "id": 44170, + "note": "added epic \u00265 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:40.031Z", + "updated_at": "2019-11-20T18:38:40.035Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "ba005d8dd59cd37a4f32406d46e759b08fd15510", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + }, + { + "id": 44168, + "note": "added epic \u00264 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:35.669Z", + "updated_at": "2019-11-20T18:38:35.673Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "9b49d3b017aadc1876d477b960e6f8efb99ce29f", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + }, + { + "id": 44166, + "note": "added epic \u00263 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:30.944Z", + "updated_at": "2019-11-20T18:38:30.948Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "cccfe967f48e699a466c87a55a9f8acb00fec1a1", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + }, + { + "id": 44164, + "note": "added epic \u00262 as child epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:26.689Z", + "updated_at": "2019-11-20T18:38:26.724Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13622, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "133f0c3001860fa8d2031e398a65db74477378c4", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13623, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 2, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.769Z", + "updated_at": "2019-11-20T18:38:26.851Z", + "title": "Omnis accusantium commodi voluptas odio illo eum ut.", + "description": "Eius vero et iste amet est voluptatem modi. Doloribus ipsam beatae et ut autem ut animi. Dolor culpa dolor omnis delectus est tempora inventore ab. Optio labore tenetur libero quia provident et quis. Blanditiis architecto sint possimus cum aut adipisci.\n\nDolores quisquam sunt cupiditate unde qui vitae nemo. Odio quas omnis ut nobis. Possimus fugit deserunt quia sed ab numquam veritatis nihil.\n\nQui nemo adipisci magnam perferendis voluptatem modi. Eius enim iure dolores consequuntur eum nobis adipisci. Consequatur architecto et quas deleniti hic id laborum officiis. Enim perferendis quis quasi totam delectus rerum deleniti.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073741323, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44165, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:26.822Z", + "updated_at": "2019-11-20T18:38:26.826Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13623, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "15f0a7f4ed16a07bc78841e122524bb867edcf86", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13624, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 3, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.783Z", + "updated_at": "2019-11-20T18:38:31.018Z", + "title": "Quis dolore velit possimus eaque aut amet esse voluptate aliquam.", + "description": "Ab veritatis reprehenderit nulla laboriosam et sed asperiores corporis. Est accusantium maxime perferendis et. Omnis a qui voluptates non excepturi.\n\nAdipisci labore maiores dicta sed magnam aut. Veritatis delectus dolorum qui id. Dolorum tenetur quo iure amet. Eveniet reprehenderit dolor ipsam quia ratione quo. Facilis voluptatem vel repellat id illum.\n\nAut et magnam aut minus aspernatur. Fuga quo necessitatibus mollitia maxime quasi. Qui aspernatur quia accusamus est quod. Qui assumenda veritatis dolor non eveniet quibusdam quos qui.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073740823, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44167, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:30.989Z", + "updated_at": "2019-11-20T18:38:30.993Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13624, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "423ffec14a3ce148c11a802eb1f2613fa8ca9a94", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13625, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 4, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.798Z", + "updated_at": "2019-11-20T18:38:35.765Z", + "title": "Possimus et ut iste temporibus earum cupiditate voluptatem esse assumenda amet.", + "description": "Et at corporis sed id rerum ullam dolore. Odio magnam corporis excepturi neque est. Est accusamus nostrum qui rerum.\n\nEt aut dolores eaque quibusdam aut quas explicabo id. Est necessitatibus praesentium omnis et vero laboriosam et. Sunt in saepe qui laudantium et voluptas.\n\nVelit sunt odit eum omnis beatae eius aut. Dolores commodi qui impedit deleniti et magnam pariatur. Aut odit amet ipsum ea atque. Itaque est ut sunt ullam eum nam.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073740323, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44169, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:35.737Z", + "updated_at": "2019-11-20T18:38:35.741Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13625, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "5bc3e30d508affafc61de2b4e1d9f21039505cc3", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + }, + { + "id": 13626, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 5, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.812Z", + "updated_at": "2019-11-20T18:38:40.101Z", + "title": "Ab deleniti ipsum voluptatem dolor qui quos saepe repellat quo.", + "description": "Sunt minus sunt reiciendis culpa sed excepturi. Aperiam sed quod nemo nesciunt et quia molestias incidunt. Ipsum nam magnam labore eos a molestiae rerum possimus. Sequi autem asperiores voluptas assumenda.\n\nRerum ipsa quia cum ab corrupti omnis. Velit libero et nihil ipsa aut quo rem ipsam. Architecto omnis distinctio sed doloribus perspiciatis consequatur aut et. Fugit consequuntur est minima reiciendis reprehenderit et.\n\nConsequatur distinctio et ut blanditiis perferendis officiis inventore. Alias aut voluptatem in facere. Ut perferendis dolorum hic dolores. Ipsa dolorem soluta at mollitia. Placeat et ea numquam dicta molestias.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": 13622, + "relative_position": 1073739823, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null, + "parent": { + "id": 13622, + "milestone_id": null, + "group_id": 4351, + "author_id": 1, + "assignee_id": null, + "iid": 1, + "updated_by_id": null, + "last_edited_by_id": null, + "lock_version": 0, + "start_date": null, + "end_date": null, + "last_edited_at": null, + "created_at": "2019-11-20T17:02:09.754Z", + "updated_at": "2019-11-20T18:38:40.054Z", + "title": "Provident neque consequatur numquam ad laboriosam voluptatem magnam.", + "description": "Fugit nisi est ut numquam quia rerum vitae qui. Et in est aliquid voluptas et ut vitae. In distinctio voluptates ut deleniti iste.\n\nReiciendis eum sunt vero blanditiis at quia. Voluptate eum facilis illum ea distinctio maiores. Doloribus aut nemo ea distinctio.\n\nNihil cum distinctio voluptates quam. Laboriosam distinctio ea accusantium soluta perspiciatis nesciunt impedit. Id qui natus quis minima voluptatum velit ut reprehenderit. Molestiae quia est harum sapiente rem error architecto id. Et minus ipsa et ut ut.", + "start_date_sourcing_milestone_id": null, + "due_date_sourcing_milestone_id": null, + "start_date_fixed": null, + "due_date_fixed": null, + "start_date_is_fixed": null, + "due_date_is_fixed": null, + "closed_by_id": null, + "closed_at": null, + "parent_id": null, + "relative_position": null, + "state_id": "opened", + "start_date_sourcing_epic_id": null, + "due_date_sourcing_epic_id": null + }, + "notes": [ + { + "id": 44171, + "note": "added epic \u00261 as parent epic", + "noteable_type": "Epic", + "author_id": 1, + "created_at": "2019-11-20T18:38:40.074Z", + "updated_at": "2019-11-20T18:38:40.077Z", + "project_id": null, + "attachment": { + "url": null + }, + "line_code": null, + "commit_id": null, + "noteable_id": 13626, + "system": true, + "st_diff": null, + "updated_by_id": null, + "position": null, + "original_position": null, + "resolved_at": null, + "resolved_by_id": null, + "discussion_id": "a6231acdaef5f4d2e569dfb604f1baf85c49e1a0", + "change_position": null, + "resolved_by_push": null, + "review_id": null, + "type": null, + "author": { + "name": "Administrator" + } + } + ] + } + ], + "children": [] +} diff --git a/spec/frontend/pipelines/test_reports/test_summary_spec.js b/spec/frontend/pipelines/test_reports/test_summary_spec.js index 864c7b6f4de..2c1a30f0fd5 100644 --- a/spec/frontend/pipelines/test_reports/test_summary_spec.js +++ b/spec/frontend/pipelines/test_reports/test_summary_spec.js @@ -79,4 +79,25 @@ describe('Test reports summary', () => { expect(duration().text()).toBe('00:00:00'); }); }); + + describe('success percentage calculation', () => { + it.each` + name | successCount | totalCount | result + ${'displays 0 when there are no tests'} | ${0} | ${0} | ${'0'} + ${'displays whole number when possible'} | ${10} | ${50} | ${'20'} + ${'rounds to 0.01'} | ${1} | ${16604} | ${'0.01'} + ${'correctly rounds to 50'} | ${8302} | ${16604} | ${'50'} + ${'rounds down for large close numbers'} | ${16603} | ${16604} | ${'99.99'} + ${'correctly displays 100'} | ${16604} | ${16604} | ${'100'} + `('$name', ({ successCount, totalCount, result }) => { + createComponent({ + report: { + success_count: successCount, + total_count: totalCount, + }, + }); + + expect(successRate().text()).toBe(`${result}% success rate`); + }); + }); }); diff --git a/spec/javascripts/diffs/components/app_spec.js b/spec/javascripts/diffs/components/app_spec.js index 52f7674a7b3..7f028fb67c9 100644 --- a/spec/javascripts/diffs/components/app_spec.js +++ b/spec/javascripts/diffs/components/app_spec.js @@ -77,16 +77,17 @@ describe('diffs/components/app', () => { spyOn(wrapper.vm, 'startRenderDiffsQueue'); }); - it('calls fetchDiffFiles if diffsBatchLoad is not enabled', () => { + it('calls fetchDiffFiles if diffsBatchLoad is not enabled', done => { wrapper.vm.glFeatures.diffsBatchLoad = false; wrapper.vm.fetchData(false); expect(wrapper.vm.fetchDiffFiles).toHaveBeenCalled(); - wrapper.vm.$nextTick(() => { - expect(wrapper.vm.setDiscussions).toHaveBeenCalled(); + setTimeout(() => { expect(wrapper.vm.startRenderDiffsQueue).toHaveBeenCalled(); expect(wrapper.vm.fetchDiffFilesMeta).not.toHaveBeenCalled(); expect(wrapper.vm.fetchDiffFilesBatch).not.toHaveBeenCalled(); + + done(); }); }); @@ -97,7 +98,6 @@ describe('diffs/components/app', () => { expect(wrapper.vm.fetchDiffFiles).toHaveBeenCalled(); wrapper.vm.$nextTick(() => { - expect(wrapper.vm.setDiscussions).toHaveBeenCalled(); expect(wrapper.vm.startRenderDiffsQueue).toHaveBeenCalled(); expect(wrapper.vm.fetchDiffFilesMeta).not.toHaveBeenCalled(); expect(wrapper.vm.fetchDiffFilesBatch).not.toHaveBeenCalled(); @@ -110,7 +110,6 @@ describe('diffs/components/app', () => { expect(wrapper.vm.fetchDiffFiles).not.toHaveBeenCalled(); wrapper.vm.$nextTick(() => { - expect(wrapper.vm.setDiscussions).toHaveBeenCalled(); expect(wrapper.vm.startRenderDiffsQueue).toHaveBeenCalled(); expect(wrapper.vm.fetchDiffFilesMeta).toHaveBeenCalled(); expect(wrapper.vm.fetchDiffFilesBatch).toHaveBeenCalled(); diff --git a/spec/javascripts/diffs/store/actions_spec.js b/spec/javascripts/diffs/store/actions_spec.js index 3235febe0dc..12f76feb1ea 100644 --- a/spec/javascripts/diffs/store/actions_spec.js +++ b/spec/javascripts/diffs/store/actions_spec.js @@ -186,7 +186,7 @@ describe('DiffsStoreActions', () => { { type: types.SET_LOADING, payload: true }, { type: types.SET_LOADING, payload: false }, { type: types.SET_MERGE_REQUEST_DIFFS, payload: [] }, - { type: types.SET_DIFF_DATA, payload: { data, diff_files: [] } }, + { type: types.SET_DIFF_DATA, payload: { data } }, ], [], () => { diff --git a/spec/lib/gitlab/auth_spec.rb b/spec/lib/gitlab/auth_spec.rb index d3f3b67aa90..0a54a72abad 100644 --- a/spec/lib/gitlab/auth_spec.rb +++ b/spec/lib/gitlab/auth_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Gitlab::Auth do +describe Gitlab::Auth, :use_clean_rails_memory_store_caching do let(:gl_auth) { described_class } set(:project) { create(:project) } diff --git a/spec/models/issue/metrics_spec.rb b/spec/models/issue/metrics_spec.rb index 7aa0d97b194..0d0628277a6 100644 --- a/spec/models/issue/metrics_spec.rb +++ b/spec/models/issue/metrics_spec.rb @@ -7,6 +7,33 @@ describe Issue::Metrics do subject { create(:issue, project: project) } + describe '.for_issues' do + subject(:scope) { described_class.for_issues([issue1, issue2]) } + + let(:issue1) { create(:issue) } + let(:issue2) { create(:issue) } + + it 'returns metrics associated with given issues' do + create(:issue) + + expect(scope).to match_array([issue1.metrics, issue2.metrics]) + end + end + + describe '.with_first_mention_not_earlier_than' do + subject(:scope) { described_class.with_first_mention_not_earlier_than(timestamp) } + + let(:timestamp) { DateTime.now } + + it 'returns metrics without mentioning in commit or with mentioning after given timestamp' do + issue1 = create(:issue) + issue2 = create(:issue).tap { |i| i.metrics.update!(first_mentioned_in_commit_at: timestamp + 1.day) } + create(:issue).tap { |i| i.metrics.update!(first_mentioned_in_commit_at: timestamp - 1.day) } + + expect(scope).to match_array([issue1.metrics, issue2.metrics]) + end + end + describe "when recording the default set of issue metrics on issue save" do context "milestones" do it "records the first time an issue is associated with a milestone" do diff --git a/spec/workers/process_commit_worker_spec.rb b/spec/workers/process_commit_worker_spec.rb index 99800135075..21c300af7ac 100644 --- a/spec/workers/process_commit_worker_spec.rb +++ b/spec/workers/process_commit_worker_spec.rb @@ -129,21 +129,54 @@ describe ProcessCommitWorker do end describe '#update_issue_metrics' do - it 'updates any existing issue metrics' do - allow(commit).to receive(:safe_message).and_return("Closes #{issue.to_reference}") + context 'when commit has issue reference' do + subject(:update_metrics_and_reload) do + -> { + worker.update_issue_metrics(commit, user) + issue.metrics.reload + } + end + + before do + allow(commit).to receive(:safe_message).and_return("Closes #{issue.to_reference}") + end - worker.update_issue_metrics(commit, user) + context 'when issue has no first_mentioned_in_commit_at set' do + it 'updates issue metrics' do + expect(update_metrics_and_reload) + .to change { issue.metrics.first_mentioned_in_commit_at }.to(commit.committed_date) + end + end - metric = Issue::Metrics.first + context 'when issue has first_mentioned_in_commit_at earlier than given committed_date' do + before do + issue.metrics.update(first_mentioned_in_commit_at: commit.committed_date - 1.day) + end - expect(metric.first_mentioned_in_commit_at).to eq(commit.committed_date) + it "doesn't update issue metrics" do + expect(update_metrics_and_reload).not_to change { issue.metrics.first_mentioned_in_commit_at } + end + end + + context 'when issue has first_mentioned_in_commit_at later than given committed_date' do + before do + issue.metrics.update(first_mentioned_in_commit_at: commit.committed_date + 1.day) + end + + it "doesn't update issue metrics" do + expect(update_metrics_and_reload) + .to change { issue.metrics.first_mentioned_in_commit_at }.to(commit.committed_date) + end + end end - it "doesn't execute any queries with false conditions" do - allow(commit).to receive(:safe_message).and_return("Lorem Ipsum") + context 'when commit has no issue references' do + it "doesn't execute any queries with false conditions" do + allow(commit).to receive(:safe_message).and_return("Lorem Ipsum") - expect { worker.update_issue_metrics(commit, user) } - .not_to make_queries_matching(/WHERE (?:1=0|0=1)/) + expect { worker.update_issue_metrics(commit, user) } + .not_to make_queries_matching(/WHERE (?:1=0|0=1)/) + end end end diff --git a/vendor/gitignore/C++.gitignore b/vendor/gitignore/C++.gitignore index 259148fa18f..259148fa18f 100755..100644 --- a/vendor/gitignore/C++.gitignore +++ b/vendor/gitignore/C++.gitignore diff --git a/vendor/gitignore/Java.gitignore b/vendor/gitignore/Java.gitignore index a1c2a238a96..a1c2a238a96 100755..100644 --- a/vendor/gitignore/Java.gitignore +++ b/vendor/gitignore/Java.gitignore |