summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-10-02 00:06:26 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-02 00:06:26 +0000
commit587794b4b8a6e919e77ee4abe8215fa291e6a91d (patch)
tree380d6578d1ab5902bb521071128bafd4f70472ef
parente0bd3a45d9dc6c74cac1a33ea8c03d6d8334249b (diff)
downloadgitlab-ce-587794b4b8a6e919e77ee4abe8215fa291e6a91d.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock18
-rw-r--r--app/assets/javascripts/flash.js11
-rw-r--r--app/assets/stylesheets/framework/flash.scss16
-rw-r--r--app/graphql/types/extended_issue_type.rb14
-rw-r--r--app/graphql/types/issue_type.rb5
-rw-r--r--app/graphql/types/project_type.rb2
-rw-r--r--app/presenters/issue_presenter.rb4
-rw-r--r--app/views/layouts/_flash.html.haml3
-rwxr-xr-xbin/background_jobs4
-rw-r--r--changelogs/unreleased/20718-extend-issue-attributes-returned-by-graphql.yml5
-rw-r--r--changelogs/unreleased/31492-banners-should-only-be-dismissable-by-clicking-x.yml5
-rw-r--r--doc/ci/enable_or_disable_ci.md20
-rw-r--r--doc/development/testing_guide/best_practices.md28
-rw-r--r--doc/user/project/merge_requests/merge_when_pipeline_succeeds.md16
-rw-r--r--doc/user/project/settings/img/sharing_and_permissions_settings.pngbin46275 -> 0 bytes
-rw-r--r--doc/user/project/settings/img/sharing_and_permissions_settings_v12_3.pngbin0 -> 479637 bytes
-rw-r--r--doc/user/project/settings/index.md2
-rw-r--r--spec/controllers/admin/clusters_controller_spec.rb4
-rw-r--r--spec/controllers/admin/requests_profiles_controller_spec.rb2
-rw-r--r--spec/controllers/admin/users_controller_spec.rb2
-rw-r--r--spec/controllers/groups/clusters_controller_spec.rb6
-rw-r--r--spec/controllers/groups/labels_controller_spec.rb14
-rw-r--r--spec/controllers/groups/shared_projects_controller_spec.rb6
-rw-r--r--spec/controllers/import/bitbucket_server_controller_spec.rb2
-rw-r--r--spec/controllers/import/gitlab_projects_controller_spec.rb4
-rw-r--r--spec/controllers/projects/artifacts_controller_spec.rb6
-rw-r--r--spec/controllers/projects/autocomplete_sources_controller_spec.rb8
-rw-r--r--spec/controllers/projects/clusters_controller_spec.rb6
-rw-r--r--spec/controllers/projects/commit_controller_spec.rb7
-rw-r--r--spec/controllers/projects/environments/prometheus_api_controller_spec.rb6
-rw-r--r--spec/controllers/projects/environments_controller_spec.rb6
-rw-r--r--spec/controllers/projects/error_tracking_controller_spec.rb4
-rw-r--r--spec/controllers/projects/mirrors_controller_spec.rb2
-rw-r--r--spec/controllers/projects/pipeline_schedules_controller_spec.rb14
-rw-r--r--spec/controllers/projects/pipelines_controller_spec.rb2
-rw-r--r--spec/controllers/projects/pipelines_settings_controller_spec.rb4
-rw-r--r--spec/controllers/projects/settings/ci_cd_controller_spec.rb4
-rw-r--r--spec/controllers/projects/settings/operations_controller_spec.rb4
-rw-r--r--spec/controllers/projects/wikis_controller_spec.rb4
-rw-r--r--spec/controllers/projects_controller_spec.rb2
-rw-r--r--spec/controllers/search_controller_spec.rb2
-rw-r--r--spec/factories/abuse_reports.rb2
-rw-r--r--spec/factories/appearances.rb6
-rw-r--r--spec/factories/application_settings.rb2
-rw-r--r--spec/factories/award_emoji.rb4
-rw-r--r--spec/factories/boards.rb10
-rw-r--r--spec/factories/broadcast_messages.rb2
-rw-r--r--spec/factories/chat_names.rb4
-rw-r--r--spec/factories/ci/bridge.rb24
-rw-r--r--spec/factories/ci/build_trace_chunks.rb22
-rw-r--r--spec/factories/ci/builds.rb138
-rw-r--r--spec/factories/ci/group_variables.rb6
-rw-r--r--spec/factories/ci/job_artifacts.rb46
-rw-r--r--spec/factories/ci/job_variables.rb2
-rw-r--r--spec/factories/ci/pipeline_schedule.rb32
-rw-r--r--spec/factories/ci/pipeline_schedule_variables.rb4
-rw-r--r--spec/factories/ci/pipeline_variables.rb2
-rw-r--r--spec/factories/ci/pipelines.rb39
-rw-r--r--spec/factories/ci/runners.rb24
-rw-r--r--spec/factories/ci/stages.rb16
-rw-r--r--spec/factories/ci/variables.rb6
-rw-r--r--spec/factories/clusters/applications/helm.rb32
-rw-r--r--spec/factories/clusters/clusters.rb26
-rw-r--r--spec/factories/clusters/kubernetes_namespaces.rb2
-rw-r--r--spec/factories/clusters/platforms/kubernetes.rb12
-rw-r--r--spec/factories/clusters/providers/gcp.rb12
-rw-r--r--spec/factories/commit_statuses.rb38
-rw-r--r--spec/factories/commits.rb2
-rw-r--r--spec/factories/container_repositories.rb4
-rw-r--r--spec/factories/conversational_development_index_metrics.rb60
-rw-r--r--spec/factories/deploy_keys_projects.rb2
-rw-r--r--spec/factories/deploy_tokens.rb14
-rw-r--r--spec/factories/deployments.rb20
-rw-r--r--spec/factories/environments.rb6
-rw-r--r--spec/factories/error_tracking/error.rb28
-rw-r--r--spec/factories/error_tracking/project.rb14
-rw-r--r--spec/factories/events.rb36
-rw-r--r--spec/factories/external_pull_requests.rb16
-rw-r--r--spec/factories/file_uploaders.rb2
-rw-r--r--spec/factories/gpg_signature.rb2
-rw-r--r--spec/factories/group_members.rb16
-rw-r--r--spec/factories/groups.rb20
-rw-r--r--spec/factories/identities.rb4
-rw-r--r--spec/factories/import_states.rb14
-rw-r--r--spec/factories/internal_ids.rb2
-rw-r--r--spec/factories/issues.rb10
-rw-r--r--spec/factories/labels.rb4
-rw-r--r--spec/factories/lfs_file_locks.rb2
-rw-r--r--spec/factories/lfs_objects.rb6
-rw-r--r--spec/factories/lfs_objects_projects.rb2
-rw-r--r--spec/factories/lists.rb14
-rw-r--r--spec/factories/merge_request_diff_files.rb66
-rw-r--r--spec/factories/merge_request_diffs.rb4
-rw-r--r--spec/factories/merge_requests.rb54
-rw-r--r--spec/factories/milestones.rb14
-rw-r--r--spec/factories/notes.rb24
-rw-r--r--spec/factories/notification_settings.rb2
-rw-r--r--spec/factories/oauth_applications.rb2
-rw-r--r--spec/factories/pages_domains.rb50
-rw-r--r--spec/factories/personal_access_tokens.rb12
-rw-r--r--spec/factories/pool_repositories.rb10
-rw-r--r--spec/factories/programming_languages.rb4
-rw-r--r--spec/factories/project_auto_devops.rb12
-rw-r--r--spec/factories/project_daily_statistics.rb2
-rw-r--r--spec/factories/project_error_tracking_settings.rb10
-rw-r--r--spec/factories/project_group_links.rb2
-rw-r--r--spec/factories/project_hooks.rb22
-rw-r--r--spec/factories/project_members.rb14
-rw-r--r--spec/factories/project_metrics_settings.rb2
-rw-r--r--spec/factories/projects.rb106
-rw-r--r--spec/factories/prometheus_metrics.rb16
-rw-r--r--spec/factories/protected_branches.rb14
-rw-r--r--spec/factories/protected_tags.rb8
-rw-r--r--spec/factories/releases.rb10
-rw-r--r--spec/factories/remote_mirrors.rb2
-rw-r--r--spec/factories/repository_languages.rb2
-rw-r--r--spec/factories/resource_label_events.rb2
-rw-r--r--spec/factories/services.rb88
-rw-r--r--spec/factories/shards.rb2
-rw-r--r--spec/factories/snippets.rb6
-rw-r--r--spec/factories/spam_logs.rb2
-rw-r--r--spec/factories/suggestions.rb12
-rw-r--r--spec/factories/system_note_metadata.rb2
-rw-r--r--spec/factories/term_agreements.rb4
-rw-r--r--spec/factories/terms.rb2
-rw-r--r--spec/factories/timelogs.rb2
-rw-r--r--spec/factories/todos.rb6
-rw-r--r--spec/factories/u2f_registrations.rb2
-rw-r--r--spec/factories/uploads.rb24
-rw-r--r--spec/factories/user_agent_details.rb4
-rw-r--r--spec/factories/user_callouts.rb2
-rw-r--r--spec/factories/user_statuses.rb4
-rw-r--r--spec/factories/users.rb26
-rw-r--r--spec/factories/web_hook_log.rb22
-rw-r--r--spec/factories/wiki_directories.rb2
-rw-r--r--spec/graphql/types/extended_issue_type_spec.rb19
-rw-r--r--spec/graphql/types/issue_type_spec.rb5
-rw-r--r--spec/graphql/types/project_type_spec.rb18
-rw-r--r--spec/javascripts/flash_spec.js12
-rw-r--r--spec/presenters/issue_presenter_spec.rb18
-rw-r--r--spec/spec_helper.rb1
142 files changed, 1010 insertions, 830 deletions
diff --git a/Gemfile b/Gemfile
index 67c0e6b4ce0..460d161587d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -355,7 +355,7 @@ group :development, :test do
gem 'fuubar', '~> 2.2.0'
gem 'database_cleaner', '~> 1.7.0'
- gem 'factory_bot_rails', '~> 4.8.2'
+ gem 'factory_bot_rails', '~> 5.1.0'
gem 'rspec-rails', '~> 3.8.0'
gem 'rspec-retry', '~> 0.6.1'
gem 'rspec_profiling', '~> 0.0.5'
diff --git a/Gemfile.lock b/Gemfile.lock
index 4a2016c8a8b..c6828ecb2cd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -254,7 +254,7 @@ GEM
mail (~> 2.7)
encryptor (3.0.0)
equalizer (0.0.11)
- erubi (1.8.0)
+ erubi (1.9.0)
escape_utils (1.2.1)
et-orbi (1.2.1)
tzinfo
@@ -264,11 +264,11 @@ GEM
expression_parser (0.9.0)
extended-markdown-filter (0.6.0)
html-pipeline (~> 2.0)
- factory_bot (4.8.2)
- activesupport (>= 3.0.0)
- factory_bot_rails (4.8.2)
- factory_bot (~> 4.8.2)
- railties (>= 3.0.0)
+ factory_bot (5.1.0)
+ activesupport (>= 4.2.0)
+ factory_bot_rails (5.1.0)
+ factory_bot (~> 5.1.0)
+ railties (>= 4.2.0)
faraday (0.12.2)
multipart-post (>= 1.2, < 3)
faraday-http-cache (2.0.0)
@@ -565,7 +565,7 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
- loofah (2.2.3)
+ loofah (2.3.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
@@ -783,7 +783,7 @@ GEM
thor (>= 0.19.0, < 2.0)
rainbow (3.0.0)
raindrops (0.19.0)
- rake (12.3.2)
+ rake (12.3.3)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
@@ -1144,7 +1144,7 @@ DEPENDENCIES
email_reply_trimmer (~> 0.1)
email_spec (~> 2.2.0)
escape_utils (~> 1.1)
- factory_bot_rails (~> 4.8.2)
+ factory_bot_rails (~> 5.1.0)
faraday (~> 0.12)
faraday_middleware-aws-signers-v4
fast_blank
diff --git a/app/assets/javascripts/flash.js b/app/assets/javascripts/flash.js
index 660f0f0ba3e..fc9c5827ed4 100644
--- a/app/assets/javascripts/flash.js
+++ b/app/assets/javascripts/flash.js
@@ -40,13 +40,17 @@ const createFlashEl = (message, type) => `
<div class="flash-content flash-${type} rounded">
<div class="flash-text">
${_.escape(message)}
- ${spriteIcon('close', 'close-icon')}
+ <div class="close-icon-wrapper js-close-icon">
+ ${spriteIcon('close', 'close-icon')}
+ </div>
</div>
</div>
`;
const removeFlashClickListener = (flashEl, fadeTransition) => {
- flashEl.addEventListener('click', () => hideFlash(flashEl, fadeTransition));
+ flashEl
+ .querySelector('.js-close-icon')
+ .addEventListener('click', () => hideFlash(flashEl, fadeTransition));
};
/*
@@ -78,7 +82,6 @@ const createFlash = function createFlash(
flashContainer.innerHTML = createFlashEl(message, type);
const flashEl = flashContainer.querySelector(`.flash-${type}`);
- removeFlashClickListener(flashEl, fadeTransition);
if (actionConfig) {
flashEl.innerHTML += createAction(actionConfig);
@@ -90,6 +93,8 @@ const createFlash = function createFlash(
}
}
+ removeFlashClickListener(flashEl, fadeTransition);
+
flashContainer.style.display = 'block';
if (addBodyClass) document.body.classList.add('flash-shown');
diff --git a/app/assets/stylesheets/framework/flash.scss b/app/assets/stylesheets/framework/flash.scss
index 13a2a74fdab..8fc2fd5f53b 100644
--- a/app/assets/stylesheets/framework/flash.scss
+++ b/app/assets/stylesheets/framework/flash.scss
@@ -1,7 +1,6 @@
$notification-box-shadow-color: rgba(0, 0, 0, 0.25);
.flash-container {
- cursor: pointer;
margin: 0;
margin-bottom: $gl-padding;
font-size: 14px;
@@ -19,12 +18,17 @@ $notification-box-shadow-color: rgba(0, 0, 0, 0.25);
}
}
- .close-icon {
- width: 16px;
- height: 16px;
+ .close-icon-wrapper {
+ padding: ($gl-btn-padding + $gl-padding-4) $gl-padding $gl-btn-padding;
position: absolute;
- right: $gl-padding;
- top: $gl-padding;
+ right: 0;
+ top: 0;
+ cursor: pointer;
+
+ .close-icon {
+ width: 16px;
+ height: 16px;
+ }
}
.flash-notice,
diff --git a/app/graphql/types/extended_issue_type.rb b/app/graphql/types/extended_issue_type.rb
new file mode 100644
index 00000000000..e007c1109a3
--- /dev/null
+++ b/app/graphql/types/extended_issue_type.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module Types
+ class ExtendedIssueType < IssueType
+ graphql_name 'ExtendedIssue'
+
+ authorize :read_issue
+ expose_permissions Types::PermissionTypes::Issue
+ present_using IssuePresenter
+
+ field :subscribed, GraphQL::BOOLEAN_TYPE, method: :subscribed?, null: false, complexity: 5,
+ description: 'Boolean flag for whether the currently logged in user is subscribed to this issue'
+ end
+end
diff --git a/app/graphql/types/issue_type.rb b/app/graphql/types/issue_type.rb
index 09e51ae4bc0..432f3e1255f 100644
--- a/app/graphql/types/issue_type.rb
+++ b/app/graphql/types/issue_type.rb
@@ -49,6 +49,11 @@ module Types
field :web_url, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
field :relative_position, GraphQL::INT_TYPE, null: true # rubocop:disable Graphql/Descriptions
+ field :epic, ::Types::EpicType, null: true, description: 'The epic to which issue belongs'
+ field :participants, Types::UserType.connection_type, null: true, complexity: 5, description: 'List of participants for the issue'
+ field :time_estimate, GraphQL::INT_TYPE, null: false, description: 'The time estimate on the issue'
+ field :total_time_spent, GraphQL::INT_TYPE, null: false, description: 'Total time reported as spent on the issue'
+
field :closed_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
diff --git a/app/graphql/types/project_type.rb b/app/graphql/types/project_type.rb
index 7184cf42284..5663f833b7a 100644
--- a/app/graphql/types/project_type.rb
+++ b/app/graphql/types/project_type.rb
@@ -92,7 +92,7 @@ module Types
resolver: Resolvers::IssuesResolver
field :issue, # rubocop:disable Graphql/Descriptions
- Types::IssueType,
+ Types::ExtendedIssueType,
null: true,
resolver: Resolvers::IssuesResolver.single
diff --git a/app/presenters/issue_presenter.rb b/app/presenters/issue_presenter.rb
index c9dc0dbf443..3d55b00ac3b 100644
--- a/app/presenters/issue_presenter.rb
+++ b/app/presenters/issue_presenter.rb
@@ -11,6 +11,10 @@ class IssuePresenter < Gitlab::View::Presenter::Delegated
url_builder.issue_path(issue)
end
+ def subscribed?
+ issue.subscribed?(current_user, issue.project)
+ end
+
private
def url_builder
diff --git a/app/views/layouts/_flash.html.haml b/app/views/layouts/_flash.html.haml
index d673d7164b3..92572f0308c 100644
--- a/app/views/layouts/_flash.html.haml
+++ b/app/views/layouts/_flash.html.haml
@@ -5,4 +5,5 @@
- if value
%div{ class: "flash-content flash-#{key} rounded" }
%span= value
- = sprite_icon('close', size: 16, css_class: 'close-icon')
+ %div{ class: "close-icon-wrapper js-close-icon" }
+ = sprite_icon('close', size: 16, css_class: 'close-icon')
diff --git a/bin/background_jobs b/bin/background_jobs
index 9d12422b81a..06f26df5409 100755
--- a/bin/background_jobs
+++ b/bin/background_jobs
@@ -28,7 +28,7 @@ restart()
stop
fi
killall
- start_sidekiq -d -L $sidekiq_logfile >> $sidekiq_logfile 2>&1
+ start_sidekiq -P $sidekiq_pidfile -d -L $sidekiq_logfile >> $sidekiq_logfile 2>&1
}
start_no_deamonize()
@@ -45,7 +45,7 @@ start_sidekiq()
cmd="${cmd} ${chpst} -P"
fi
- ${cmd} bundle exec sidekiq -C "${sidekiq_config}" -e $RAILS_ENV -P $sidekiq_pidfile "$@"
+ ${cmd} bundle exec sidekiq -C "${sidekiq_config}" -e $RAILS_ENV "$@"
}
load_ok()
diff --git a/changelogs/unreleased/20718-extend-issue-attributes-returned-by-graphql.yml b/changelogs/unreleased/20718-extend-issue-attributes-returned-by-graphql.yml
new file mode 100644
index 00000000000..1142772f434
--- /dev/null
+++ b/changelogs/unreleased/20718-extend-issue-attributes-returned-by-graphql.yml
@@ -0,0 +1,5 @@
+---
+title: Add more attributes to issues GraphQL endpoint
+merge_request: 17802
+author:
+type: changed
diff --git a/changelogs/unreleased/31492-banners-should-only-be-dismissable-by-clicking-x.yml b/changelogs/unreleased/31492-banners-should-only-be-dismissable-by-clicking-x.yml
new file mode 100644
index 00000000000..322f006e8af
--- /dev/null
+++ b/changelogs/unreleased/31492-banners-should-only-be-dismissable-by-clicking-x.yml
@@ -0,0 +1,5 @@
+---
+title: Banners should only be dismissable by clicking x button
+merge_request: 17642
+author:
+type: changed
diff --git a/doc/ci/enable_or_disable_ci.md b/doc/ci/enable_or_disable_ci.md
index 56200142055..dcf4d8dde2d 100644
--- a/doc/ci/enable_or_disable_ci.md
+++ b/doc/ci/enable_or_disable_ci.md
@@ -28,18 +28,28 @@ either:
- Site-wide by modifying the settings in `gitlab.yml` and `gitlab.rb` for source
and Omnibus installations respectively.
+NOTE: **Note:**
+This only applies to pipelines run as part of GitLab CI/CD. This will not enable or disable
+pipelines that are run from an [external integration](../user/project/integrations/project_services.md#services).
+
## Per-project user setting
-The setting to enable or disable GitLab CI/CD can be found under your project's
-**Settings > General > Permissions**. Choose one of "Disabled", "Only team members"
-or "Everyone with access" and hit **Save changes** for the settings to take effect.
+The setting to enable or disable GitLab CI/CD Pipelines can be found in your project in
+**Settings > General > Visibility, project features, permissions**. If the project
+visibility is set to:
+
+- **Private**, only project members can access pipelines.
+- **Internal** or **Public**, pipelines can be made accessible to either
+ project members only or everyone with access.
+
+Press **Save changes** for the settings to take effect.
-![Sharing & Permissions settings](../user/project/settings/img/sharing_and_permissions_settings.png)
+![Sharing & Permissions settings](../user/project/settings/img/sharing_and_permissions_settings_v12_3.png)
## Site-wide admin setting
You can disable GitLab CI/CD site-wide, by modifying the settings in `gitlab.yml`
-and `gitlab.rb` for source and Omnibus installations respectively.
+for source installations, and `gitlab.rb` for Omnibus installations.
Two things to note:
diff --git a/doc/development/testing_guide/best_practices.md b/doc/development/testing_guide/best_practices.md
index 223ebdc6ee4..01db92b09c9 100644
--- a/doc/development/testing_guide/best_practices.md
+++ b/doc/development/testing_guide/best_practices.md
@@ -202,8 +202,36 @@ so we need to set some guidelines for their use going forward:
order is required, otherwise `let` will suffice. Remember that `let` is lazy and won't
be evaluated until it is referenced.
+### `let_it_be` variables
+
+In some cases there is no need to recreate the same object for tests
+again for each example. For example, a project is needed to test issues
+on the same project, one project will do for the entire file. This can
+be achieved by using
+[`let_it_be`](https://test-prof.evilmartians.io/#/let_it_be) variables
+from the [`test-prof` gem](https://rubygems.org/gems/test-prof).
+
+Note that if you modify an object defined inside a `let_it_be` block,
+then you will need to reload the object as needed, or specify the `reload`
+option to reload for every example.
+
+```
+let_it_be(:project, reload: true) { create(:project) }
+```
+
+You can also specify the `refind` option as well to completely load a
+new object.
+
+```
+let_it_be(:project, refind: true) { create(:project) }
+```
+
### `set` variables
+NOTE: **Note:**
+We are incrementally removing `set` in favour of `let_it_be`. See the
+[removal issue](https://gitlab.com/gitlab-org/gitlab/issues/27922).
+
In some cases there is no need to recreate the same object for tests again for
each example. For example, a project is needed to test issues on the same
project, one project will do for the entire file. This can be achieved by using
diff --git a/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md b/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md
index b717cb0ec24..dab2184448a 100644
--- a/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md
+++ b/doc/user/project/merge_requests/merge_when_pipeline_succeeds.md
@@ -36,11 +36,19 @@ changes to be reviewed.
## Only allow merge requests to be merged if the pipeline succeeds
You can prevent merge requests from being merged if their pipeline did not succeed
-or if there are threads to be resolved.
+or if there are threads to be resolved. This works for both:
-Navigate to your project's settings page and expand the **Merge requests** section.
-In the **Merge checks** subsection, select the **Pipelines must succeed** check
-box and hit **Save** for the changes to take effect.
+- GitLab CI/CD pipelines
+- Pipelines run from an [external CI integration](../integrations/project_services.md#services)
+
+As a result, [disabling GitLab CI/CD pipelines](../../../ci/enable_or_disable_ci.md)
+will not disable this feature, as it will still be possible to use pipelines from external
+CI providers with this feature. To enable it, you must:
+
+1. Navigate to your project's **Settings > General** page.
+1. Expand the **Merge requests** section.
+1. In the **Merge checks** subsection, select the **Pipelines must succeed** checkbox.
+1. Press **Save** for the changes to take effect.
NOTE: **Note:** This setting also prevents merge requests from being merged if there is no pipeline.
diff --git a/doc/user/project/settings/img/sharing_and_permissions_settings.png b/doc/user/project/settings/img/sharing_and_permissions_settings.png
deleted file mode 100644
index 6cb89c6ea1d..00000000000
--- a/doc/user/project/settings/img/sharing_and_permissions_settings.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/project/settings/img/sharing_and_permissions_settings_v12_3.png b/doc/user/project/settings/img/sharing_and_permissions_settings_v12_3.png
new file mode 100644
index 00000000000..cf7fdfe4cce
--- /dev/null
+++ b/doc/user/project/settings/img/sharing_and_permissions_settings_v12_3.png
Binary files differ
diff --git a/doc/user/project/settings/index.md b/doc/user/project/settings/index.md
index 66a861faf93..131999dbf60 100644
--- a/doc/user/project/settings/index.md
+++ b/doc/user/project/settings/index.md
@@ -24,7 +24,7 @@ The project description also partially supports [standard markdown](../../markdo
Set up your project's access, [visibility](../../../public_access/public_access.md), and enable [Container Registry](../../packages/container_registry/index.md) for your projects:
-![projects sharing permissions](img/sharing_and_permissions_settings.png)
+![projects sharing permissions](img/sharing_and_permissions_settings_v12_3.png)
If Issues are disabled, or you can't access Issues because you're not a project member, then Labels and Milestones
links will be missing from the sidebar UI.
diff --git a/spec/controllers/admin/clusters_controller_spec.rb b/spec/controllers/admin/clusters_controller_spec.rb
index afc059d7561..233710b9fc3 100644
--- a/spec/controllers/admin/clusters_controller_spec.rb
+++ b/spec/controllers/admin/clusters_controller_spec.rb
@@ -469,7 +469,7 @@ describe Admin::ClustersController do
end
describe 'security' do
- set(:cluster) { create(:cluster, :provided_by_gcp, :instance) }
+ let_it_be(:cluster) { create(:cluster, :provided_by_gcp, :instance) }
it { expect { put_update }.to be_allowed_for(:admin) }
it { expect { put_update }.to be_denied_for(:user) }
@@ -531,7 +531,7 @@ describe Admin::ClustersController do
end
describe 'security' do
- set(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, :instance) }
+ let_it_be(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, :instance) }
it { expect { delete_destroy }.to be_allowed_for(:admin) }
it { expect { delete_destroy }.to be_denied_for(:user) }
diff --git a/spec/controllers/admin/requests_profiles_controller_spec.rb b/spec/controllers/admin/requests_profiles_controller_spec.rb
index 345f7720c25..853767199bc 100644
--- a/spec/controllers/admin/requests_profiles_controller_spec.rb
+++ b/spec/controllers/admin/requests_profiles_controller_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
describe Admin::RequestsProfilesController do
- set(:admin) { create(:admin) }
+ let_it_be(:admin) { create(:admin) }
before do
sign_in(admin)
diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb
index d7428f8b52c..28d53a7f830 100644
--- a/spec/controllers/admin/users_controller_spec.rb
+++ b/spec/controllers/admin/users_controller_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
describe Admin::UsersController do
let(:user) { create(:user) }
- set(:admin) { create(:admin) }
+ let_it_be(:admin) { create(:admin) }
before do
sign_in(admin)
diff --git a/spec/controllers/groups/clusters_controller_spec.rb b/spec/controllers/groups/clusters_controller_spec.rb
index 5a3ba51d4df..51a6dcca640 100644
--- a/spec/controllers/groups/clusters_controller_spec.rb
+++ b/spec/controllers/groups/clusters_controller_spec.rb
@@ -6,7 +6,7 @@ describe Groups::ClustersController do
include AccessMatchersForController
include GoogleApi::CloudPlatformHelpers
- set(:group) { create(:group) }
+ let_it_be(:group) { create(:group) }
let(:user) { create(:user) }
@@ -536,7 +536,7 @@ describe Groups::ClustersController do
end
describe 'security' do
- set(:cluster) { create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group]) }
+ let_it_be(:cluster) { create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group]) }
it { expect { go }.to be_allowed_for(:admin) }
it { expect { go }.to be_allowed_for(:owner).of(group) }
@@ -604,7 +604,7 @@ describe Groups::ClustersController do
end
describe 'security' do
- set(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group]) }
+ let_it_be(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group]) }
it { expect { go }.to be_allowed_for(:admin) }
it { expect { go }.to be_allowed_for(:owner).of(group) }
diff --git a/spec/controllers/groups/labels_controller_spec.rb b/spec/controllers/groups/labels_controller_spec.rb
index 98a4c50fc49..d4780fa2675 100644
--- a/spec/controllers/groups/labels_controller_spec.rb
+++ b/spec/controllers/groups/labels_controller_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
describe Groups::LabelsController do
- set(:group) { create(:group) }
- set(:user) { create(:user) }
- set(:project) { create(:project, namespace: group) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, namespace: group) }
before do
group.add_owner(user)
@@ -14,8 +14,8 @@ describe Groups::LabelsController do
end
describe 'GET #index' do
- set(:label_1) { create(:label, project: project, title: 'label_1') }
- set(:group_label_1) { create(:group_label, group: group, title: 'group_label_1') }
+ let_it_be(:label_1) { create(:label, project: project, title: 'label_1') }
+ let_it_be(:group_label_1) { create(:group_label, group: group, title: 'group_label_1') }
it 'returns group and project labels by default' do
get :index, params: { group_id: group }, format: :json
@@ -25,8 +25,8 @@ describe Groups::LabelsController do
end
context 'with ancestor group' do
- set(:subgroup) { create(:group, parent: group) }
- set(:subgroup_label_1) { create(:group_label, group: subgroup, title: 'subgroup_label_1') }
+ let_it_be(:subgroup) { create(:group, parent: group) }
+ let_it_be(:subgroup_label_1) { create(:group_label, group: subgroup, title: 'subgroup_label_1') }
before do
subgroup.add_owner(user)
diff --git a/spec/controllers/groups/shared_projects_controller_spec.rb b/spec/controllers/groups/shared_projects_controller_spec.rb
index 9f6c558c931..a4b2efa7c43 100644
--- a/spec/controllers/groups/shared_projects_controller_spec.rb
+++ b/spec/controllers/groups/shared_projects_controller_spec.rb
@@ -17,9 +17,9 @@ describe Groups::SharedProjectsController do
).execute(group)
end
- set(:group) { create(:group) }
- set(:user) { create(:user) }
- set(:shared_project) do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:shared_project) do
shared_project = create(:project, namespace: user.namespace)
share_project(shared_project)
diff --git a/spec/controllers/import/bitbucket_server_controller_spec.rb b/spec/controllers/import/bitbucket_server_controller_spec.rb
index e1aeab46fca..f30eace7d30 100644
--- a/spec/controllers/import/bitbucket_server_controller_spec.rb
+++ b/spec/controllers/import/bitbucket_server_controller_spec.rb
@@ -39,7 +39,7 @@ describe Import::BitbucketServerController do
assign_session_tokens
end
- set(:project) { create(:project) }
+ let_it_be(:project) { create(:project) }
it 'returns the new project' do
allow(Gitlab::BitbucketServerImport::ProjectCreator)
diff --git a/spec/controllers/import/gitlab_projects_controller_spec.rb b/spec/controllers/import/gitlab_projects_controller_spec.rb
index 51b398895bc..a3f6d8dcea2 100644
--- a/spec/controllers/import/gitlab_projects_controller_spec.rb
+++ b/spec/controllers/import/gitlab_projects_controller_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Import::GitlabProjectsController do
- set(:namespace) { create(:namespace) }
- set(:user) { namespace.owner }
+ let_it_be(:namespace) { create(:namespace) }
+ let_it_be(:user) { namespace.owner }
let(:file) { fixture_file_upload('spec/fixtures/project_export.tar.gz', 'text/plain') }
before do
diff --git a/spec/controllers/projects/artifacts_controller_spec.rb b/spec/controllers/projects/artifacts_controller_spec.rb
index e42e35bc6e0..acc6935cb71 100644
--- a/spec/controllers/projects/artifacts_controller_spec.rb
+++ b/spec/controllers/projects/artifacts_controller_spec.rb
@@ -4,9 +4,9 @@ require 'spec_helper'
describe Projects::ArtifactsController do
let(:user) { project.owner }
- set(:project) { create(:project, :repository, :public) }
+ let_it_be(:project) { create(:project, :repository, :public) }
- set(:pipeline) do
+ let_it_be(:pipeline, reload: true) do
create(:ci_pipeline,
project: project,
sha: project.commit.sha,
@@ -48,7 +48,7 @@ describe Projects::ArtifactsController do
it 'paginates artifacts' do
subject
- expect(assigns(:artifacts)).to contain_exactly(project.job_artifacts.last)
+ expect(assigns(:artifacts)).to contain_exactly(project.reload.job_artifacts.last)
end
end
end
diff --git a/spec/controllers/projects/autocomplete_sources_controller_spec.rb b/spec/controllers/projects/autocomplete_sources_controller_spec.rb
index a9a058e7e17..34765ae3951 100644
--- a/spec/controllers/projects/autocomplete_sources_controller_spec.rb
+++ b/spec/controllers/projects/autocomplete_sources_controller_spec.rb
@@ -3,10 +3,10 @@
require 'spec_helper'
describe Projects::AutocompleteSourcesController do
- set(:group) { create(:group) }
- set(:project) { create(:project, namespace: group) }
- set(:issue) { create(:issue, project: project) }
- set(:user) { create(:user) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, namespace: group) }
+ let_it_be(:issue) { create(:issue, project: project) }
+ let_it_be(:user) { create(:user) }
describe 'GET members' do
before do
diff --git a/spec/controllers/projects/clusters_controller_spec.rb b/spec/controllers/projects/clusters_controller_spec.rb
index 8ac72df5d20..e1f6d571d27 100644
--- a/spec/controllers/projects/clusters_controller_spec.rb
+++ b/spec/controllers/projects/clusters_controller_spec.rb
@@ -7,7 +7,7 @@ describe Projects::ClustersController do
include GoogleApi::CloudPlatformHelpers
include KubernetesHelpers
- set(:project) { create(:project) }
+ let_it_be(:project) { create(:project) }
let(:user) { create(:user) }
@@ -536,7 +536,7 @@ describe Projects::ClustersController do
end
describe 'security' do
- set(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) }
+ let_it_be(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) }
it { expect { go }.to be_allowed_for(:admin) }
it { expect { go }.to be_allowed_for(:owner).of(project) }
@@ -605,7 +605,7 @@ describe Projects::ClustersController do
end
describe 'security' do
- set(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, projects: [project]) }
+ let_it_be(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, projects: [project]) }
it { expect { go }.to be_allowed_for(:admin) }
it { expect { go }.to be_allowed_for(:owner).of(project) }
diff --git a/spec/controllers/projects/commit_controller_spec.rb b/spec/controllers/projects/commit_controller_spec.rb
index afd5cb15e0f..95112cfeabe 100644
--- a/spec/controllers/projects/commit_controller_spec.rb
+++ b/spec/controllers/projects/commit_controller_spec.rb
@@ -3,9 +3,10 @@
require 'spec_helper'
describe Projects::CommitController do
- set(:project) { create(:project, :repository) }
- set(:user) { create(:user) }
- let(:commit) { project.commit("master") }
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:user) { create(:user) }
+
+ let(:commit) { project.commit("master") }
let(:master_pickable_sha) { '7d3b0f7cff5f37573aea97cebfd5692ea1689924' }
let(:master_pickable_commit) { project.commit(master_pickable_sha) }
diff --git a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb b/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
index 45328482ad7..b12964f8d8b 100644
--- a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
+++ b/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
@@ -3,9 +3,9 @@
require 'spec_helper'
describe Projects::Environments::PrometheusApiController do
- set(:project) { create(:project) }
- set(:environment) { create(:environment, project: project) }
- set(:user) { create(:user) }
+ let_it_be(:project) { create(:project) }
+ let_it_be(:environment) { create(:environment, project: project) }
+ let_it_be(:user) { create(:user) }
before do
project.add_reporter(user)
diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb
index 50666c8016d..d8e3ea8ba39 100644
--- a/spec/controllers/projects/environments_controller_spec.rb
+++ b/spec/controllers/projects/environments_controller_spec.rb
@@ -5,10 +5,10 @@ require 'spec_helper'
describe Projects::EnvironmentsController do
include MetricsDashboardHelpers
- set(:user) { create(:user) }
- set(:project) { create(:project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project) }
- set(:environment) do
+ let_it_be(:environment) do
create(:environment, name: 'production', project: project)
end
diff --git a/spec/controllers/projects/error_tracking_controller_spec.rb b/spec/controllers/projects/error_tracking_controller_spec.rb
index d11ef24ef96..4c224e960a6 100644
--- a/spec/controllers/projects/error_tracking_controller_spec.rb
+++ b/spec/controllers/projects/error_tracking_controller_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Projects::ErrorTrackingController do
- set(:project) { create(:project) }
- set(:user) { create(:user) }
+ let_it_be(:project) { create(:project) }
+ let_it_be(:user) { create(:user) }
before do
sign_in(user)
diff --git a/spec/controllers/projects/mirrors_controller_spec.rb b/spec/controllers/projects/mirrors_controller_spec.rb
index 51ce9e2544f..fb3dd75460a 100644
--- a/spec/controllers/projects/mirrors_controller_spec.rb
+++ b/spec/controllers/projects/mirrors_controller_spec.rb
@@ -6,7 +6,7 @@ describe Projects::MirrorsController do
include ReactiveCachingHelpers
describe 'setting up a remote mirror' do
- set(:project) { create(:project, :repository) }
+ let_it_be(:project) { create(:project, :repository) }
context 'when the current project is not a mirror' do
it 'allows to create a remote mirror' do
diff --git a/spec/controllers/projects/pipeline_schedules_controller_spec.rb b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
index 850ef9c92fb..63e2c8a339c 100644
--- a/spec/controllers/projects/pipeline_schedules_controller_spec.rb
+++ b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
@@ -5,9 +5,9 @@ require 'spec_helper'
describe Projects::PipelineSchedulesController do
include AccessMatchersForController
- set(:user) { create(:user) }
- set(:project) { create(:project, :public, :repository) }
- set(:pipeline_schedule) { create(:ci_pipeline_schedule, project: project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let_it_be(:pipeline_schedule) { create(:ci_pipeline_schedule, project: project) }
before do
project.add_developer(user)
@@ -60,8 +60,6 @@ describe Projects::PipelineSchedulesController do
end
describe 'GET #new' do
- set(:user) { create(:user) }
-
before do
project.add_developer(user)
sign_in(user)
@@ -77,8 +75,6 @@ describe Projects::PipelineSchedulesController do
describe 'POST #create' do
describe 'functionality' do
- set(:user) { create(:user) }
-
before do
project.add_developer(user)
sign_in(user)
@@ -149,7 +145,6 @@ describe Projects::PipelineSchedulesController do
describe 'PUT #update' do
describe 'functionality' do
- set(:user) { create(:user) }
let!(:pipeline_schedule) { create(:ci_pipeline_schedule, project: project, owner: user) }
before do
@@ -383,7 +378,6 @@ describe Projects::PipelineSchedulesController do
end
describe 'POST #play', :clean_gitlab_redis_cache do
- set(:user) { create(:user) }
let(:ref) { 'master' }
before do
@@ -442,8 +436,6 @@ describe Projects::PipelineSchedulesController do
end
describe 'DELETE #destroy' do
- set(:user) { create(:user) }
-
context 'when a developer makes the request' do
before do
project.add_developer(user)
diff --git a/spec/controllers/projects/pipelines_controller_spec.rb b/spec/controllers/projects/pipelines_controller_spec.rb
index 212d8b15252..3c2cb9ede40 100644
--- a/spec/controllers/projects/pipelines_controller_spec.rb
+++ b/spec/controllers/projects/pipelines_controller_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
describe Projects::PipelinesController do
include ApiHelpers
- set(:user) { create(:user) }
+ let_it_be(:user) { create(:user) }
let(:project) { create(:project, :public, :repository) }
let(:feature) { ProjectFeature::ENABLED }
diff --git a/spec/controllers/projects/pipelines_settings_controller_spec.rb b/spec/controllers/projects/pipelines_settings_controller_spec.rb
index 3656b4e3771..16a43f62bd5 100644
--- a/spec/controllers/projects/pipelines_settings_controller_spec.rb
+++ b/spec/controllers/projects/pipelines_settings_controller_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Projects::PipelinesSettingsController do
- set(:user) { create(:user) }
- set(:project_auto_devops) { create(:project_auto_devops) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project_auto_devops) { create(:project_auto_devops) }
let(:project) { project_auto_devops.project }
before do
diff --git a/spec/controllers/projects/settings/ci_cd_controller_spec.rb b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
index 5bfbcf6eeb5..f4dbfbe15e8 100644
--- a/spec/controllers/projects/settings/ci_cd_controller_spec.rb
+++ b/spec/controllers/projects/settings/ci_cd_controller_spec.rb
@@ -3,8 +3,8 @@
require('spec_helper')
describe Projects::Settings::CiCdController do
- set(:user) { create(:user) }
- set(:project_auto_devops) { create(:project_auto_devops) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project_auto_devops) { create(:project_auto_devops) }
let(:project) { project_auto_devops.project }
before do
diff --git a/spec/controllers/projects/settings/operations_controller_spec.rb b/spec/controllers/projects/settings/operations_controller_spec.rb
index aa9cd41ed19..3a56511a8d6 100644
--- a/spec/controllers/projects/settings/operations_controller_spec.rb
+++ b/spec/controllers/projects/settings/operations_controller_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Projects::Settings::OperationsController do
- set(:user) { create(:user) }
- set(:project) { create(:project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project) }
before do
sign_in(user)
diff --git a/spec/controllers/projects/wikis_controller_spec.rb b/spec/controllers/projects/wikis_controller_spec.rb
index 6fea6bca4f2..f46da908218 100644
--- a/spec/controllers/projects/wikis_controller_spec.rb
+++ b/spec/controllers/projects/wikis_controller_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Projects::WikisController do
- set(:project) { create(:project, :public, :repository) }
- set(:user) { project.owner }
+ let_it_be(:project) { create(:project, :public, :repository) }
+ let(:user) { project.owner }
let(:project_wiki) { ProjectWiki.new(project, user) }
let(:wiki) { project_wiki.wiki }
let(:wiki_title) { 'page title test' }
diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb
index c732caa6160..ea7dd78329a 100644
--- a/spec/controllers/projects_controller_spec.rb
+++ b/spec/controllers/projects_controller_spec.rb
@@ -149,7 +149,7 @@ describe ProjectsController do
end
context 'when the storage is not available', :broken_storage do
- set(:project) { create(:project, :broken_storage) }
+ let_it_be(:project) { create(:project, :broken_storage) }
before do
project.add_developer(user)
diff --git a/spec/controllers/search_controller_spec.rb b/spec/controllers/search_controller_spec.rb
index 3e0d53a6573..3dcafae295a 100644
--- a/spec/controllers/search_controller_spec.rb
+++ b/spec/controllers/search_controller_spec.rb
@@ -67,7 +67,7 @@ describe SearchController do
using RSpec::Parameterized::TableSyntax
render_views
- set(:project) { create(:project, :public, :repository, :wiki_repo) }
+ let_it_be(:project) { create(:project, :public, :repository, :wiki_repo) }
before do
expect(::Gitlab::GitalyClient).to receive(:allow_ref_name_caching).and_call_original
diff --git a/spec/factories/abuse_reports.rb b/spec/factories/abuse_reports.rb
index 578af9ed895..4174faae1ed 100644
--- a/spec/factories/abuse_reports.rb
+++ b/spec/factories/abuse_reports.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :abuse_report do
reporter factory: :user
user
- message 'User sends spam'
+ message { 'User sends spam' }
end
end
diff --git a/spec/factories/appearances.rb b/spec/factories/appearances.rb
index bdd5964fb93..e2922662ea4 100644
--- a/spec/factories/appearances.rb
+++ b/spec/factories/appearances.rb
@@ -4,9 +4,9 @@
FactoryBot.define do
factory :appearance do
- title "GitLab Community Edition"
- description "Open source software to collaborate on code"
- new_project_guidelines "Custom project guidelines"
+ title { "GitLab Community Edition" }
+ description { "Open source software to collaborate on code" }
+ new_project_guidelines { "Custom project guidelines" }
end
trait :with_logo do
diff --git a/spec/factories/application_settings.rb b/spec/factories/application_settings.rb
index 90b6b9e648a..d4571b9861d 100644
--- a/spec/factories/application_settings.rb
+++ b/spec/factories/application_settings.rb
@@ -2,6 +2,6 @@
FactoryBot.define do
factory :application_setting do
- default_projects_limit 42
+ default_projects_limit { 42 }
end
end
diff --git a/spec/factories/award_emoji.rb b/spec/factories/award_emoji.rb
index a8bb806381e..a430210ab49 100644
--- a/spec/factories/award_emoji.rb
+++ b/spec/factories/award_emoji.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :award_emoji do
- name "thumbsup"
+ name { "thumbsup" }
user
awardable factory: :issue
@@ -12,7 +12,7 @@ FactoryBot.define do
trait :upvote
trait :downvote do
- name "thumbsdown"
+ name { "thumbsdown" }
end
end
end
diff --git a/spec/factories/boards.rb b/spec/factories/boards.rb
index a5aff5c7504..29cfe8fb295 100644
--- a/spec/factories/boards.rb
+++ b/spec/factories/boards.rb
@@ -3,11 +3,11 @@
FactoryBot.define do
factory :board do
transient do
- project nil
- group nil
- project_id nil
- group_id nil
- parent nil
+ project { nil }
+ group { nil }
+ project_id { nil }
+ group_id { nil }
+ parent { nil }
end
after(:build, :stub) do |board, evaluator|
diff --git a/spec/factories/broadcast_messages.rb b/spec/factories/broadcast_messages.rb
index 2a30e2034b1..ed6e267e7c4 100644
--- a/spec/factories/broadcast_messages.rb
+++ b/spec/factories/broadcast_messages.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :broadcast_message do
- message "MyText"
+ message { "MyText" }
starts_at { 1.day.ago }
ends_at { 1.day.from_now }
diff --git a/spec/factories/chat_names.rb b/spec/factories/chat_names.rb
index 07bf990162f..ace5d5e83c9 100644
--- a/spec/factories/chat_names.rb
+++ b/spec/factories/chat_names.rb
@@ -5,8 +5,8 @@ FactoryBot.define do
user factory: :user
service factory: :service
- team_id 'T0001'
- team_domain 'Awesome Team'
+ team_id { 'T0001' }
+ team_domain { 'Awesome Team' }
sequence(:chat_id) { |n| "U#{n}" }
chat_name { generate(:username) }
diff --git a/spec/factories/ci/bridge.rb b/spec/factories/ci/bridge.rb
index b1b714277e4..60219b07cf0 100644
--- a/spec/factories/ci/bridge.rb
+++ b/spec/factories/ci/bridge.rb
@@ -2,22 +2,26 @@
FactoryBot.define do
factory :ci_bridge, class: Ci::Bridge do
- name 'bridge'
- stage 'test'
- stage_idx 0
- ref 'master'
- tag false
- created_at 'Di 29. Okt 09:50:00 CET 2013'
- status :created
+ name { 'bridge' }
+ stage { 'test' }
+ stage_idx { 0 }
+ ref { 'master' }
+ tag { false }
+ created_at { 'Di 29. Okt 09:50:00 CET 2013' }
+ status { :created }
pipeline factory: :ci_pipeline
trait :variables do
- yaml_variables [{ key: 'BRIDGE', value: 'cross', public: true }]
+ yaml_variables do
+ [{ key: 'BRIDGE', value: 'cross', public: true }]
+ end
end
- transient { downstream nil }
- transient { upstream nil }
+ transient do
+ downstream { nil }
+ upstream { nil }
+ end
after(:build) do |bridge, evaluator|
bridge.project ||= bridge.pipeline.project
diff --git a/spec/factories/ci/build_trace_chunks.rb b/spec/factories/ci/build_trace_chunks.rb
index 492dc47f083..22f091f8e76 100644
--- a/spec/factories/ci/build_trace_chunks.rb
+++ b/spec/factories/ci/build_trace_chunks.rb
@@ -3,14 +3,14 @@
FactoryBot.define do
factory :ci_build_trace_chunk, class: Ci::BuildTraceChunk do
build factory: :ci_build
- chunk_index 0
- data_store :redis
+ chunk_index { 0 }
+ data_store { :redis }
trait :redis_with_data do
- data_store :redis
+ data_store { :redis }
transient do
- initial_data 'test data'
+ initial_data { 'test data' }
end
after(:create) do |build_trace_chunk, evaluator|
@@ -19,14 +19,14 @@ FactoryBot.define do
end
trait :redis_without_data do
- data_store :redis
+ data_store { :redis }
end
trait :database_with_data do
- data_store :database
+ data_store { :database}
transient do
- initial_data 'test data'
+ initial_data { 'test data' }
end
after(:build) do |build_trace_chunk, evaluator|
@@ -35,14 +35,14 @@ FactoryBot.define do
end
trait :database_without_data do
- data_store :database
+ data_store { :database }
end
trait :fog_with_data do
- data_store :fog
+ data_store { :fog }
transient do
- initial_data 'test data'
+ initial_data { 'test data' }
end
after(:create) do |build_trace_chunk, evaluator|
@@ -51,7 +51,7 @@ FactoryBot.define do
end
trait :fog_without_data do
- data_store :fog
+ data_store { :fog }
end
end
end
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index e3b7c64176a..6725cde08f2 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -4,13 +4,13 @@ include ActionDispatch::TestProcess
FactoryBot.define do
factory :ci_build, class: Ci::Build do
- name 'test'
- stage 'test'
- stage_idx 0
- ref 'master'
- tag false
- protected false
- created_at 'Di 29. Okt 09:50:00 CET 2013'
+ name { 'test' }
+ stage { 'test' }
+ stage_idx { 0 }
+ ref { 'master' }
+ tag { false }
+ add_attribute(:protected) { false }
+ created_at { 'Di 29. Okt 09:50:00 CET 2013' }
pending
options do
@@ -30,127 +30,127 @@ FactoryBot.define do
pipeline factory: :ci_pipeline
trait :degenerated do
- options nil
- yaml_variables nil
+ options { nil }
+ yaml_variables { nil }
end
trait :started do
- started_at 'Di 29. Okt 09:51:28 CET 2013'
+ started_at { 'Di 29. Okt 09:51:28 CET 2013' }
end
trait :finished do
started
- finished_at 'Di 29. Okt 09:53:28 CET 2013'
+ finished_at { 'Di 29. Okt 09:53:28 CET 2013' }
end
trait :success do
finished
- status 'success'
+ status { 'success' }
end
trait :failed do
finished
- status 'failed'
+ status { 'failed' }
end
trait :canceled do
finished
- status 'canceled'
+ status { 'canceled' }
end
trait :skipped do
started
- status 'skipped'
+ status { 'skipped' }
end
trait :running do
started
- status 'running'
+ status { 'running' }
end
trait :pending do
- queued_at 'Di 29. Okt 09:50:59 CET 2013'
- status 'pending'
+ queued_at { 'Di 29. Okt 09:50:59 CET 2013' }
+ status { 'pending' }
end
trait :created do
- status 'created'
+ status { 'created' }
end
trait :preparing do
- status 'preparing'
+ status { 'preparing' }
end
trait :scheduled do
schedulable
- status 'scheduled'
+ status { 'scheduled' }
scheduled_at { 1.minute.since }
end
trait :expired_scheduled do
schedulable
- status 'scheduled'
+ status { 'scheduled' }
scheduled_at { 1.minute.ago }
end
trait :manual do
- status 'manual'
- self.when 'manual'
+ status { 'manual' }
+ self.when { 'manual' }
end
trait :teardown_environment do
- environment 'staging'
+ environment { 'staging' }
options do
{
script: %w(ls),
environment: { name: 'staging',
- action: 'stop',
- url: 'http://staging.example.com/$CI_JOB_NAME' }
+ action: 'stop',
+ url: 'http://staging.example.com/$CI_JOB_NAME' }
}
end
end
trait :deploy_to_production do
- environment 'production'
+ environment { 'production' }
options do
{
script: %w(ls),
environment: { name: 'production',
- url: 'http://prd.example.com/$CI_JOB_NAME' }
+ url: 'http://prd.example.com/$CI_JOB_NAME' }
}
end
end
trait :start_review_app do
- environment 'review/$CI_COMMIT_REF_NAME'
+ environment { 'review/$CI_COMMIT_REF_NAME' }
options do
{
script: %w(ls),
environment: { name: 'review/$CI_COMMIT_REF_NAME',
- url: 'http://staging.example.com/$CI_JOB_NAME',
- on_stop: 'stop_review_app' }
+ url: 'http://staging.example.com/$CI_JOB_NAME',
+ on_stop: 'stop_review_app' }
}
end
end
trait :stop_review_app do
- name 'stop_review_app'
- environment 'review/$CI_COMMIT_REF_NAME'
+ name { 'stop_review_app' }
+ environment { 'review/$CI_COMMIT_REF_NAME' }
options do
{
script: %w(ls),
environment: { name: 'review/$CI_COMMIT_REF_NAME',
- url: 'http://staging.example.com/$CI_JOB_NAME',
- action: 'stop' }
+ url: 'http://staging.example.com/$CI_JOB_NAME',
+ action: 'stop' }
}
end
end
trait :allowed_to_fail do
- allow_failure true
+ allow_failure { true }
end
trait :ignored do
@@ -166,7 +166,7 @@ FactoryBot.define do
end
trait :schedulable do
- self.when 'delayed'
+ self.when { 'delayed' }
options do
{
@@ -177,11 +177,11 @@ FactoryBot.define do
end
trait :actionable do
- self.when 'manual'
+ self.when { 'manual' }
end
trait :retried do
- retried true
+ retried { true }
end
trait :cancelable do
@@ -194,11 +194,13 @@ FactoryBot.define do
end
trait :tags do
- tag_list [:docker, :ruby]
+ tag_list do
+ [:docker, :ruby]
+ end
end
trait :on_tag do
- tag true
+ tag { true }
end
trait :triggered do
@@ -210,12 +212,12 @@ FactoryBot.define do
end
trait :tag do
- tag true
+ tag { true }
end
trait :coverage do
- coverage 99.9
- coverage_regex '/(d+)/'
+ coverage { 99.9 }
+ coverage_regex { '/(d+)/' }
end
trait :trace_live do
@@ -303,23 +305,23 @@ FactoryBot.define do
trait :extended_options do
options do
{
- image: { name: 'ruby:2.1', entrypoint: '/bin/sh' },
- services: ['postgres', { name: 'docker:stable-dind', entrypoint: '/bin/sh', command: 'sleep 30', alias: 'docker' }],
- script: %w(echo),
- after_script: %w(ls date),
- artifacts: {
- name: 'artifacts_file',
- untracked: false,
- paths: ['out/'],
- when: 'always',
- expire_in: '7d'
- },
- cache: {
- key: 'cache_key',
- untracked: false,
- paths: ['vendor/*'],
- policy: 'pull-push'
- }
+ image: { name: 'ruby:2.1', entrypoint: '/bin/sh' },
+ services: ['postgres', { name: 'docker:stable-dind', entrypoint: '/bin/sh', command: 'sleep 30', alias: 'docker' }],
+ script: %w(echo),
+ after_script: %w(ls date),
+ artifacts: {
+ name: 'artifacts_file',
+ untracked: false,
+ paths: ['out/'],
+ when: 'always',
+ expire_in: '7d'
+ },
+ cache: {
+ key: 'cache_key',
+ untracked: false,
+ paths: ['vendor/*'],
+ policy: 'pull-push'
+ }
}
end
end
@@ -329,27 +331,27 @@ FactoryBot.define do
end
trait :non_playable do
- status 'created'
- self.when 'manual'
+ status { 'created' }
+ self.when { 'manual' }
end
trait :protected do
- protected true
+ add_attribute(:protected) { true }
end
trait :script_failure do
failed
- failure_reason 1
+ failure_reason { 1 }
end
trait :api_failure do
failed
- failure_reason 2
+ failure_reason { 2 }
end
trait :prerequisite_failure do
failed
- failure_reason 10
+ failure_reason { 10 }
end
trait :with_runner_session do
diff --git a/spec/factories/ci/group_variables.rb b/spec/factories/ci/group_variables.rb
index 13c2b78e61b..217f05a088e 100644
--- a/spec/factories/ci/group_variables.rb
+++ b/spec/factories/ci/group_variables.rb
@@ -3,11 +3,11 @@
FactoryBot.define do
factory :ci_group_variable, class: Ci::GroupVariable do
sequence(:key) { |n| "VARIABLE_#{n}" }
- value 'VARIABLE_VALUE'
- masked false
+ value { 'VARIABLE_VALUE' }
+ masked { false }
trait(:protected) do
- protected true
+ add_attribute(:protected) { true }
end
group factory: :group
diff --git a/spec/factories/ci/job_artifacts.rb b/spec/factories/ci/job_artifacts.rb
index 6f553cadfa3..bdc6cc2f169 100644
--- a/spec/factories/ci/job_artifacts.rb
+++ b/spec/factories/ci/job_artifacts.rb
@@ -5,15 +5,15 @@ include ActionDispatch::TestProcess
FactoryBot.define do
factory :ci_job_artifact, class: Ci::JobArtifact do
job factory: :ci_build
- file_type :archive
- file_format :zip
+ file_type { :archive }
+ file_format { :zip }
trait :expired do
expire_at { Date.yesterday }
end
trait :remote_store do
- file_store JobArtifactUploader::Store::REMOTE
+ file_store { JobArtifactUploader::Store::REMOTE}
end
after :build do |artifact|
@@ -21,7 +21,7 @@ FactoryBot.define do
end
trait :raw do
- file_format :raw
+ file_format { :raw }
after(:build) do |artifact, _|
artifact.file = fixture_file_upload(
@@ -30,7 +30,7 @@ FactoryBot.define do
end
trait :zip do
- file_format :zip
+ file_format { :zip }
after(:build) do |artifact, _|
artifact.file = fixture_file_upload(
@@ -39,7 +39,7 @@ FactoryBot.define do
end
trait :gzip do
- file_format :gzip
+ file_format { :gzip }
after(:build) do |artifact, _|
artifact.file = fixture_file_upload(
@@ -48,8 +48,8 @@ FactoryBot.define do
end
trait :archive do
- file_type :archive
- file_format :zip
+ file_type { :archive }
+ file_format { :zip }
transient do
file { fixture_file_upload(Rails.root.join('spec/fixtures/ci_build_artifacts.zip'), 'application/zip') }
@@ -63,12 +63,12 @@ FactoryBot.define do
trait :legacy_archive do
archive
- file_location :legacy_path
+ file_location { :legacy_path }
end
trait :metadata do
- file_type :metadata
- file_format :gzip
+ file_type { :metadata }
+ file_format { :gzip }
transient do
file { fixture_file_upload(Rails.root.join('spec/fixtures/ci_build_artifacts_metadata.gz'), 'application/x-gzip') }
@@ -80,8 +80,8 @@ FactoryBot.define do
end
trait :trace do
- file_type :trace
- file_format :raw
+ file_type { :trace }
+ file_format { :raw }
after(:build) do |artifact, evaluator|
artifact.file = fixture_file_upload(
@@ -90,8 +90,8 @@ FactoryBot.define do
end
trait :junit do
- file_type :junit
- file_format :gzip
+ file_type { :junit }
+ file_format { :gzip }
after(:build) do |artifact, evaluator|
artifact.file = fixture_file_upload(
@@ -100,8 +100,8 @@ FactoryBot.define do
end
trait :junit_with_ant do
- file_type :junit
- file_format :gzip
+ file_type { :junit }
+ file_format { :gzip }
after(:build) do |artifact, evaluator|
artifact.file = fixture_file_upload(
@@ -110,8 +110,8 @@ FactoryBot.define do
end
trait :junit_with_three_testsuites do
- file_type :junit
- file_format :gzip
+ file_type { :junit }
+ file_format { :gzip }
after(:build) do |artifact, evaluator|
artifact.file = fixture_file_upload(
@@ -120,8 +120,8 @@ FactoryBot.define do
end
trait :junit_with_corrupted_data do
- file_type :junit
- file_format :gzip
+ file_type { :junit }
+ file_format { :gzip }
after(:build) do |artifact, evaluator|
artifact.file = fixture_file_upload(
@@ -130,8 +130,8 @@ FactoryBot.define do
end
trait :codequality do
- file_type :codequality
- file_format :raw
+ file_type { :codequality }
+ file_format { :raw }
after(:build) do |artifact, evaluator|
artifact.file = fixture_file_upload(
diff --git a/spec/factories/ci/job_variables.rb b/spec/factories/ci/job_variables.rb
index d664b763abd..bfc631b8126 100644
--- a/spec/factories/ci/job_variables.rb
+++ b/spec/factories/ci/job_variables.rb
@@ -3,7 +3,7 @@
FactoryBot.define do
factory :ci_job_variable, class: Ci::JobVariable do
sequence(:key) { |n| "VARIABLE_#{n}" }
- value 'VARIABLE_VALUE'
+ value { 'VARIABLE_VALUE' }
job factory: :ci_build
end
diff --git a/spec/factories/ci/pipeline_schedule.rb b/spec/factories/ci/pipeline_schedule.rb
index 8fae6986869..c752dc1c9dd 100644
--- a/spec/factories/ci/pipeline_schedule.rb
+++ b/spec/factories/ci/pipeline_schedule.rb
@@ -2,40 +2,40 @@
FactoryBot.define do
factory :ci_pipeline_schedule, class: Ci::PipelineSchedule do
- cron '0 1 * * *'
- cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
- ref 'master'
- active true
- description "pipeline schedule"
+ cron { '0 1 * * *' }
+ cron_timezone { Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE }
+ ref { 'master' }
+ active { true }
+ description { "pipeline schedule" }
project
trait :every_minute do
- cron '*/1 * * * *'
- cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron { '*/1 * * * *' }
+ cron_timezone { Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE }
end
trait :hourly do
- cron '* */1 * * *'
- cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron { '* */1 * * *' }
+ cron_timezone { Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE }
end
trait :nightly do
- cron '0 1 * * *'
- cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron { '0 1 * * *' }
+ cron_timezone { Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE }
end
trait :weekly do
- cron '0 1 * * 6'
- cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron { '0 1 * * 6' }
+ cron_timezone { Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE }
end
trait :monthly do
- cron '0 1 22 * *'
- cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron { '0 1 22 * *' }
+ cron_timezone { Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE }
end
trait :inactive do
- active false
+ active { false }
end
end
end
diff --git a/spec/factories/ci/pipeline_schedule_variables.rb b/spec/factories/ci/pipeline_schedule_variables.rb
index fd7cfada65b..24913c614f4 100644
--- a/spec/factories/ci/pipeline_schedule_variables.rb
+++ b/spec/factories/ci/pipeline_schedule_variables.rb
@@ -3,8 +3,8 @@
FactoryBot.define do
factory :ci_pipeline_schedule_variable, class: Ci::PipelineScheduleVariable do
sequence(:key) { |n| "VARIABLE_#{n}" }
- value 'VARIABLE_VALUE'
- variable_type 'env_var'
+ value { 'VARIABLE_VALUE' }
+ variable_type { 'env_var' }
pipeline_schedule factory: :ci_pipeline_schedule
end
diff --git a/spec/factories/ci/pipeline_variables.rb b/spec/factories/ci/pipeline_variables.rb
index af0982124d7..48f6e35fe70 100644
--- a/spec/factories/ci/pipeline_variables.rb
+++ b/spec/factories/ci/pipeline_variables.rb
@@ -3,7 +3,7 @@
FactoryBot.define do
factory :ci_pipeline_variable, class: Ci::PipelineVariable do
sequence(:key) { |n| "VARIABLE_#{n}" }
- value 'VARIABLE_VALUE'
+ value { 'VARIABLE_VALUE' }
pipeline factory: :ci_empty_pipeline
end
diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb
index 9652b0000a9..fefd89728e6 100644
--- a/spec/factories/ci/pipelines.rb
+++ b/spec/factories/ci/pipelines.rb
@@ -2,11 +2,11 @@
FactoryBot.define do
factory :ci_empty_pipeline, class: Ci::Pipeline do
- source :push
- ref 'master'
- sha '97de212e80737a608d939f648d959671fb0a0142'
- status 'pending'
- protected false
+ source { :push }
+ ref { 'master' }
+ sha { '97de212e80737a608d939f648d959671fb0a0142' }
+ status { 'pending' }
+ add_attribute(:protected) { false }
project
@@ -26,7 +26,7 @@ FactoryBot.define do
# Persist merge request head_pipeline_id
# on pipeline factories to avoid circular references
- transient { head_pipeline_of nil }
+ transient { head_pipeline_of { nil } }
after(:create) do |pipeline, evaluator|
merge_request = evaluator.head_pipeline_of
@@ -34,7 +34,7 @@ FactoryBot.define do
end
factory :ci_pipeline do
- transient { config nil }
+ transient { config { nil } }
after(:build) do |pipeline, evaluator|
if evaluator.config
@@ -48,44 +48,47 @@ FactoryBot.define do
end
trait :invalid do
- config(rspec: nil)
- failure_reason :config_error
+ config do
+ { rspec: nil }
+ end
+
+ failure_reason { :config_error }
end
trait :created do
- status :created
+ status { :created }
end
trait :preparing do
- status :preparing
+ status { :preparing }
end
trait :blocked do
- status :manual
+ status { :manual }
end
trait :scheduled do
- status :scheduled
+ status { :scheduled }
end
trait :success do
- status :success
+ status { :success }
end
trait :running do
- status :running
+ status { :running }
end
trait :failed do
- status :failed
+ status { :failed }
end
trait :protected do
- protected true
+ add_attribute(:protected) { true }
end
trait :with_test_reports do
- status :success
+ status { :success }
after(:build) do |pipeline, evaluator|
pipeline.builds << build(:ci_build, :test_reports, pipeline: pipeline, project: pipeline.project)
diff --git a/spec/factories/ci/runners.rb b/spec/factories/ci/runners.rb
index 1e4344b814d..3697970721b 100644
--- a/spec/factories/ci/runners.rb
+++ b/spec/factories/ci/runners.rb
@@ -4,22 +4,22 @@ FactoryBot.define do
factory :ci_runner, class: Ci::Runner do
sequence(:description) { |n| "My runner#{n}" }
- platform "darwin"
- active true
- access_level :not_protected
+ platform { "darwin" }
+ active { true }
+ access_level { :not_protected }
- runner_type :instance_type
+ runner_type { :instance_type }
trait :online do
contacted_at { Time.now }
end
trait :instance do
- runner_type :instance_type
+ runner_type { :instance_type }
end
trait :group do
- runner_type :group_type
+ runner_type { :group_type }
after(:build) do |runner, evaluator|
runner.groups << build(:group) if runner.groups.empty?
@@ -27,7 +27,7 @@ FactoryBot.define do
end
trait :project do
- runner_type :project_type
+ runner_type { :project_type }
after(:build) do |runner, evaluator|
runner.projects << build(:project) if runner.projects.empty?
@@ -43,21 +43,21 @@ FactoryBot.define do
end
trait :inactive do
- active false
+ active { false }
end
trait :ref_protected do
- access_level :ref_protected
+ access_level { :ref_protected }
end
trait :tagged_only do
- run_untagged false
+ run_untagged { false }
- tag_list %w(tag1 tag2)
+ tag_list { %w(tag1 tag2) }
end
trait :locked do
- locked true
+ locked { true }
end
end
end
diff --git a/spec/factories/ci/stages.rb b/spec/factories/ci/stages.rb
index 88ff8d7dc53..67f4db41d96 100644
--- a/spec/factories/ci/stages.rb
+++ b/spec/factories/ci/stages.rb
@@ -5,16 +5,16 @@ FactoryBot.define do
skip_create
transient do
- name 'test'
- status nil
- warnings nil
+ name { 'test' }
+ status { nil }
+ warnings { nil }
pipeline factory: :ci_empty_pipeline
end
initialize_with do
Ci::LegacyStage.new(pipeline, name: name,
- status: status,
- warnings: warnings)
+ status: status,
+ warnings: warnings)
end
end
@@ -22,8 +22,8 @@ FactoryBot.define do
project factory: :project
pipeline factory: :ci_empty_pipeline
- name 'test'
- position 1
- status 'pending'
+ name { 'test' }
+ position { 1 }
+ status { 'pending' }
end
end
diff --git a/spec/factories/ci/variables.rb b/spec/factories/ci/variables.rb
index 55d11085040..9d2501c4e18 100644
--- a/spec/factories/ci/variables.rb
+++ b/spec/factories/ci/variables.rb
@@ -3,11 +3,11 @@
FactoryBot.define do
factory :ci_variable, class: Ci::Variable do
sequence(:key) { |n| "VARIABLE_#{n}" }
- value 'VARIABLE_VALUE'
- masked false
+ value { 'VARIABLE_VALUE' }
+ masked { false }
trait(:protected) do
- protected true
+ add_attribute(:protected) { true }
end
project
diff --git a/spec/factories/clusters/applications/helm.rb b/spec/factories/clusters/applications/helm.rb
index 89f7bc15217..c7ec7c11743 100644
--- a/spec/factories/clusters/applications/helm.rb
+++ b/spec/factories/clusters/applications/helm.rb
@@ -19,50 +19,50 @@ FactoryBot.define do
end
trait :not_installable do
- status(-2)
+ status { -2 }
end
trait :errored do
- status(-1)
- status_reason 'something went wrong'
+ status { -1 }
+ status_reason { 'something went wrong' }
end
trait :installable do
- status 0
+ status { 0 }
end
trait :scheduled do
- status 1
+ status { 1 }
end
trait :installing do
- status 2
+ status { 2 }
end
trait :installed do
- status 3
+ status { 3 }
end
trait :updating do
- status 4
+ status { 4 }
end
trait :updated do
- status 5
+ status { 5 }
end
trait :update_errored do
- status(6)
- status_reason 'something went wrong'
+ status { 6 }
+ status_reason { 'something went wrong' }
end
trait :uninstalling do
- status 7
+ status { 7 }
end
trait :uninstall_errored do
- status(8)
- status_reason 'something went wrong'
+ status { 8 }
+ status_reason { 'something went wrong' }
end
trait :timed_out do
@@ -75,7 +75,7 @@ FactoryBot.define do
end
factory :clusters_applications_cert_manager, class: Clusters::Applications::CertManager do
- email 'admin@example.com'
+ email { 'admin@example.com' }
cluster factory: %i(cluster with_installed_helm provided_by_gcp)
end
@@ -89,7 +89,7 @@ FactoryBot.define do
end
factory :clusters_applications_knative, class: Clusters::Applications::Knative do
- hostname 'example.com'
+ hostname { 'example.com' }
cluster factory: %i(cluster with_installed_helm provided_by_gcp)
end
diff --git a/spec/factories/clusters/clusters.rb b/spec/factories/clusters/clusters.rb
index 29aea5e403e..74c42c81399 100644
--- a/spec/factories/clusters/clusters.rb
+++ b/spec/factories/clusters/clusters.rb
@@ -3,10 +3,10 @@
FactoryBot.define do
factory :cluster, class: Clusters::Cluster do
user
- name 'test-cluster'
- cluster_type :project_type
- managed true
- namespace_per_environment true
+ name { 'test-cluster' }
+ cluster_type { :project_type }
+ managed { true }
+ namespace_per_environment { true }
factory :cluster_for_group, traits: [:provided_by_gcp, :group]
@@ -31,26 +31,26 @@ FactoryBot.define do
end
trait :namespace_per_environment_disabled do
- namespace_per_environment false
+ namespace_per_environment { false }
end
trait :provided_by_user do
- provider_type :user
- platform_type :kubernetes
+ provider_type { :user }
+ platform_type { :kubernetes }
platform_kubernetes factory: [:cluster_platform_kubernetes, :configured]
end
trait :provided_by_gcp do
- provider_type :gcp
- platform_type :kubernetes
+ provider_type { :gcp }
+ platform_type { :kubernetes }
provider_gcp factory: [:cluster_provider_gcp, :created]
platform_kubernetes factory: [:cluster_platform_kubernetes, :configured]
end
trait :providing_by_gcp do
- provider_type :gcp
+ provider_type { :gcp }
provider_gcp factory: [:cluster_provider_gcp, :creating]
end
@@ -63,7 +63,7 @@ FactoryBot.define do
end
trait :disabled do
- enabled false
+ enabled { false }
end
trait :production_environment do
@@ -75,11 +75,11 @@ FactoryBot.define do
end
trait :with_domain do
- domain 'example.com'
+ domain { 'example.com' }
end
trait :not_managed do
- managed false
+ managed { false }
end
end
end
diff --git a/spec/factories/clusters/kubernetes_namespaces.rb b/spec/factories/clusters/kubernetes_namespaces.rb
index 8d6ad1b9f79..75895e1c020 100644
--- a/spec/factories/clusters/kubernetes_namespaces.rb
+++ b/spec/factories/clusters/kubernetes_namespaces.rb
@@ -27,7 +27,7 @@ FactoryBot.define do
end
trait :without_token do
- service_account_token nil
+ service_account_token { nil }
end
end
end
diff --git a/spec/factories/clusters/platforms/kubernetes.rb b/spec/factories/clusters/platforms/kubernetes.rb
index d5dc288fddb..2757498e36b 100644
--- a/spec/factories/clusters/platforms/kubernetes.rb
+++ b/spec/factories/clusters/platforms/kubernetes.rb
@@ -3,14 +3,14 @@
FactoryBot.define do
factory :cluster_platform_kubernetes, class: Clusters::Platforms::Kubernetes do
cluster
- namespace nil
- api_url 'https://kubernetes.example.com'
+ namespace { nil }
+ api_url { 'https://kubernetes.example.com' }
token { 'a' * 40 }
trait :configured do
- api_url 'https://kubernetes.example.com'
- username 'xxxxxx'
- password 'xxxxxx'
+ api_url { 'https://kubernetes.example.com' }
+ username { 'xxxxxx' }
+ password { 'xxxxxx' }
before(:create) do |platform_kubernetes, evaluator|
pem_file = File.expand_path(Rails.root.join('spec/fixtures/clusters/sample_cert.pem'))
@@ -19,7 +19,7 @@ FactoryBot.define do
end
trait :rbac_disabled do
- authorization_type :abac
+ authorization_type { :abac }
end
end
end
diff --git a/spec/factories/clusters/providers/gcp.rb b/spec/factories/clusters/providers/gcp.rb
index 7fdcdebad34..83b65dc8087 100644
--- a/spec/factories/clusters/providers/gcp.rb
+++ b/spec/factories/clusters/providers/gcp.rb
@@ -3,14 +3,14 @@
FactoryBot.define do
factory :cluster_provider_gcp, class: Clusters::Providers::Gcp do
cluster
- gcp_project_id 'test-gcp-project'
+ gcp_project_id { 'test-gcp-project' }
trait :scheduled do
- access_token 'access_token_123'
+ access_token { 'access_token_123' }
end
trait :creating do
- access_token 'access_token_123'
+ access_token { 'access_token_123' }
after(:build) do |gcp, evaluator|
gcp.make_creating('operation-123')
@@ -18,7 +18,7 @@ FactoryBot.define do
end
trait :created do
- endpoint '111.111.111.111'
+ endpoint { '111.111.111.111' }
after(:build) do |gcp, evaluator|
gcp.make_created
@@ -32,11 +32,11 @@ FactoryBot.define do
end
trait :abac_enabled do
- legacy_abac true
+ legacy_abac { true }
end
trait :cloud_run_enabled do
- cloud_run true
+ cloud_run { true }
end
end
end
diff --git a/spec/factories/commit_statuses.rb b/spec/factories/commit_statuses.rb
index a76da30217e..3ce71a1b05d 100644
--- a/spec/factories/commit_statuses.rb
+++ b/spec/factories/commit_statuses.rb
@@ -2,53 +2,53 @@
FactoryBot.define do
factory :commit_status, class: CommitStatus do
- name 'default'
- stage 'test'
- stage_idx 0
- status 'success'
- description 'commit status'
+ name { 'default' }
+ stage { 'test' }
+ stage_idx { 0 }
+ status { 'success' }
+ description { 'commit status'}
pipeline factory: :ci_pipeline_with_one_job
- started_at 'Tue, 26 Jan 2016 08:21:42 +0100'
- finished_at 'Tue, 26 Jan 2016 08:23:42 +0100'
+ started_at { 'Tue, 26 Jan 2016 08:21:42 +0100'}
+ finished_at { 'Tue, 26 Jan 2016 08:23:42 +0100'}
trait :success do
- status 'success'
+ status { 'success' }
end
trait :failed do
- status 'failed'
+ status { 'failed' }
end
trait :canceled do
- status 'canceled'
+ status { 'canceled' }
end
trait :skipped do
- status 'skipped'
+ status { 'skipped' }
end
trait :running do
- status 'running'
+ status { 'running' }
end
trait :pending do
- status 'pending'
+ status { 'pending' }
end
trait :preparing do
- status 'preparing'
+ status { 'preparing' }
end
trait :created do
- status 'created'
+ status { 'created' }
end
trait :manual do
- status 'manual'
+ status { 'manual' }
end
trait :scheduled do
- status 'scheduled'
+ status { 'scheduled' }
end
after(:build) do |build, evaluator|
@@ -56,8 +56,8 @@ FactoryBot.define do
end
factory :generic_commit_status, class: GenericCommitStatus do
- name 'generic'
- description 'external commit status'
+ name { 'generic' }
+ description { 'external commit status' }
end
end
end
diff --git a/spec/factories/commits.rb b/spec/factories/commits.rb
index d1554426a76..d006f9baf1f 100644
--- a/spec/factories/commits.rb
+++ b/spec/factories/commits.rb
@@ -5,7 +5,7 @@ require_relative '../support/helpers/repo_helpers'
FactoryBot.define do
factory :commit do
transient do
- author nil
+ author { nil }
end
git_commit do
diff --git a/spec/factories/container_repositories.rb b/spec/factories/container_repositories.rb
index 0b756220d68..b2862e41e65 100644
--- a/spec/factories/container_repositories.rb
+++ b/spec/factories/container_repositories.rb
@@ -6,11 +6,11 @@ FactoryBot.define do
project
transient do
- tags []
+ tags { [] }
end
trait :root do
- name ''
+ name { '' }
end
after(:build) do |repository, evaluator|
diff --git a/spec/factories/conversational_development_index_metrics.rb b/spec/factories/conversational_development_index_metrics.rb
index ea5816684c6..f039bac81d0 100644
--- a/spec/factories/conversational_development_index_metrics.rb
+++ b/spec/factories/conversational_development_index_metrics.rb
@@ -2,44 +2,44 @@
FactoryBot.define do
factory :conversational_development_index_metric, class: ConversationalDevelopmentIndex::Metric do
- leader_issues 9.256
- instance_issues 1.234
- percentage_issues 13.331
+ leader_issues { 9.256 }
+ instance_issues { 1.234 }
+ percentage_issues { 13.331 }
- leader_notes 30.33333
- instance_notes 28.123
- percentage_notes 92.713
+ leader_notes { 30.33333 }
+ instance_notes { 28.123 }
+ percentage_notes { 92.713 }
- leader_milestones 16.2456
- instance_milestones 1.234
- percentage_milestones 7.595
+ leader_milestones { 16.2456 }
+ instance_milestones { 1.234 }
+ percentage_milestones { 7.595 }
- leader_boards 5.2123
- instance_boards 3.254
- percentage_boards 62.429
+ leader_boards { 5.2123 }
+ instance_boards { 3.254 }
+ percentage_boards { 62.429 }
- leader_merge_requests 1.2
- instance_merge_requests 0.6
- percentage_merge_requests 50.0
+ leader_merge_requests { 1.2 }
+ instance_merge_requests { 0.6 }
+ percentage_merge_requests { 50.0 }
- leader_ci_pipelines 12.1234
- instance_ci_pipelines 2.344
- percentage_ci_pipelines 19.334
+ leader_ci_pipelines { 12.1234 }
+ instance_ci_pipelines { 2.344 }
+ percentage_ci_pipelines { 19.334 }
- leader_environments 3.3333
- instance_environments 2.2222
- percentage_environments 66.672
+ leader_environments { 3.3333 }
+ instance_environments { 2.2222 }
+ percentage_environments { 66.672 }
- leader_deployments 1.200
- instance_deployments 0.771
- percentage_deployments 64.25
+ leader_deployments { 1.200 }
+ instance_deployments { 0.771 }
+ percentage_deployments { 64.25 }
- leader_projects_prometheus_active 0.111
- instance_projects_prometheus_active 0.109
- percentage_projects_prometheus_active 98.198
+ leader_projects_prometheus_active { 0.111 }
+ instance_projects_prometheus_active { 0.109 }
+ percentage_projects_prometheus_active { 98.198 }
- leader_service_desk_issues 15.891
- instance_service_desk_issues 13.345
- percentage_service_desk_issues 83.978
+ leader_service_desk_issues { 15.891 }
+ instance_service_desk_issues { 13.345 }
+ percentage_service_desk_issues { 83.978 }
end
end
diff --git a/spec/factories/deploy_keys_projects.rb b/spec/factories/deploy_keys_projects.rb
index 7f82902dee7..2a429bf8e56 100644
--- a/spec/factories/deploy_keys_projects.rb
+++ b/spec/factories/deploy_keys_projects.rb
@@ -6,7 +6,7 @@ FactoryBot.define do
project
trait :write_access do
- can_push true
+ can_push { true }
end
end
end
diff --git a/spec/factories/deploy_tokens.rb b/spec/factories/deploy_tokens.rb
index 99486acc2ab..42ed66ac191 100644
--- a/spec/factories/deploy_tokens.rb
+++ b/spec/factories/deploy_tokens.rb
@@ -2,20 +2,20 @@
FactoryBot.define do
factory :deploy_token do
- token nil
- token_encrypted { Gitlab::CryptoHelper.aes256_gcm_encrypt( SecureRandom.hex(50) ) }
+ token { nil }
+ token_encrypted { Gitlab::CryptoHelper.aes256_gcm_encrypt(SecureRandom.hex(50)) }
sequence(:name) { |n| "PDT #{n}" }
- read_repository true
- read_registry true
- revoked false
+ read_repository { true }
+ read_registry { true }
+ revoked { false }
expires_at { 5.days.from_now }
trait :revoked do
- revoked true
+ revoked { true }
end
trait :gitlab_deploy_token do
- name DeployToken::GITLAB_DEPLOY_TOKEN_NAME
+ name { DeployToken::GITLAB_DEPLOY_TOKEN_NAME }
end
trait :expired do
diff --git a/spec/factories/deployments.rb b/spec/factories/deployments.rb
index 50dc304a10e..f4da206990c 100644
--- a/spec/factories/deployments.rb
+++ b/spec/factories/deployments.rb
@@ -2,11 +2,11 @@
FactoryBot.define do
factory :deployment, class: Deployment do
- sha 'b83d6e391c22777fca1ed3012fce84f633d7fed0'
- ref 'master'
- tag false
- user nil
- project nil
+ sha { 'b83d6e391c22777fca1ed3012fce84f633d7fed0' }
+ ref { 'master' }
+ tag { false }
+ user { nil }
+ project { nil }
deployable factory: :ci_build
environment factory: :environment
@@ -25,7 +25,7 @@ FactoryBot.define do
trait :review_app do
sha { TestEnv::BRANCH_SHA['pages-deploy'] }
- ref 'pages-deploy'
+ ref { 'pages-deploy' }
end
trait :on_cluster do
@@ -33,21 +33,21 @@ FactoryBot.define do
end
trait :running do
- status :running
+ status { :running }
end
trait :success do
- status :success
+ status { :success }
finished_at { Time.now }
end
trait :failed do
- status :failed
+ status { :failed }
finished_at { Time.now }
end
trait :canceled do
- status :canceled
+ status { :canceled }
finished_at { Time.now }
end
diff --git a/spec/factories/environments.rb b/spec/factories/environments.rb
index b5c8f0ca4f0..9286f49bc59 100644
--- a/spec/factories/environments.rb
+++ b/spec/factories/environments.rb
@@ -9,7 +9,7 @@ FactoryBot.define do
trait :with_review_app do |environment|
transient do
- ref 'master'
+ ref { 'master' }
end
# At this point `review app` is an ephemeral concept related to
@@ -41,8 +41,8 @@ FactoryBot.define do
end
trait :non_playable do
- status 'created'
- self.when 'manual'
+ status { 'created' }
+ self.when { 'manual' }
end
end
end
diff --git a/spec/factories/error_tracking/error.rb b/spec/factories/error_tracking/error.rb
index ff883a3d22c..541bc410462 100644
--- a/spec/factories/error_tracking/error.rb
+++ b/spec/factories/error_tracking/error.rb
@@ -2,22 +2,22 @@
FactoryBot.define do
factory :error_tracking_error, class: Gitlab::ErrorTracking::Error do
- id 'id'
- title 'title'
- type 'error'
- user_count 1
- count 2
+ id { 'id' }
+ title { 'title' }
+ type { 'error' }
+ user_count { 1 }
+ count { 2 }
first_seen { Time.now }
last_seen { Time.now }
- message 'message'
- culprit 'culprit'
- external_url 'http://example.com/id'
- project_id 'project1'
- project_name 'project name'
- project_slug 'project_name'
- short_id 'ID'
- status 'unresolved'
- frequency []
+ message { 'message' }
+ culprit { 'culprit' }
+ external_url { 'http://example.com/id' }
+ project_id { 'project1' }
+ project_name { 'project name' }
+ project_slug { 'project_name' }
+ short_id { 'ID' }
+ status { 'unresolved' }
+ frequency { [] }
skip_create
end
diff --git a/spec/factories/error_tracking/project.rb b/spec/factories/error_tracking/project.rb
index 5e9219b241f..885d398d433 100644
--- a/spec/factories/error_tracking/project.rb
+++ b/spec/factories/error_tracking/project.rb
@@ -2,13 +2,13 @@
FactoryBot.define do
factory :error_tracking_project, class: Gitlab::ErrorTracking::Project do
- id '1'
- name 'Sentry Example'
- slug 'sentry-example'
- status 'active'
- organization_name 'Sentry'
- organization_id '1'
- organization_slug 'sentry'
+ id { '1' }
+ name { 'Sentry Example' }
+ slug { 'sentry-example' }
+ status { 'active' }
+ organization_name { 'Sentry' }
+ organization_id { '1' }
+ organization_slug { 'sentry' }
skip_create
end
diff --git a/spec/factories/events.rb b/spec/factories/events.rb
index b15eb1592fc..4eedcd02c9a 100644
--- a/spec/factories/events.rb
+++ b/spec/factories/events.rb
@@ -4,19 +4,19 @@ FactoryBot.define do
factory :event do
project
author(factory: :user) { project.creator }
- action Event::JOINED
+ action { Event::JOINED }
- trait(:created) { action Event::CREATED }
- trait(:updated) { action Event::UPDATED }
- trait(:closed) { action Event::CLOSED }
- trait(:reopened) { action Event::REOPENED }
- trait(:pushed) { action Event::PUSHED }
- trait(:commented) { action Event::COMMENTED }
- trait(:merged) { action Event::MERGED }
- trait(:joined) { action Event::JOINED }
- trait(:left) { action Event::LEFT }
- trait(:destroyed) { action Event::DESTROYED }
- trait(:expired) { action Event::EXPIRED }
+ trait(:created) { action { Event::CREATED } }
+ trait(:updated) { action { Event::UPDATED } }
+ trait(:closed) { action { Event::CLOSED } }
+ trait(:reopened) { action { Event::REOPENED } }
+ trait(:pushed) { action { Event::PUSHED } }
+ trait(:commented) { action { Event::COMMENTED } }
+ trait(:merged) { action { Event::MERGED } }
+ trait(:joined) { action { Event::JOINED } }
+ trait(:left) { action { Event::LEFT } }
+ trait(:destroyed) { action { Event::DESTROYED } }
+ trait(:expired) { action { Event::EXPIRED } }
factory :closed_issue_event do
action { Event::CLOSED }
@@ -27,15 +27,15 @@ FactoryBot.define do
factory :push_event, class: PushEvent do
project factory: :project_empty_repo
author(factory: :user) { project.creator }
- action Event::PUSHED
+ action { Event::PUSHED }
end
factory :push_event_payload do
event
- commit_count 1
- action :pushed
- ref_type :branch
- ref 'master'
- commit_to '3cdce97ed87c91368561584e7358f4d46e3e173c'
+ commit_count { 1 }
+ action { :pushed }
+ ref_type { :branch }
+ ref { 'master' }
+ commit_to { '3cdce97ed87c91368561584e7358f4d46e3e173c' }
end
end
diff --git a/spec/factories/external_pull_requests.rb b/spec/factories/external_pull_requests.rb
index 08d0fa4d419..7a6e77f8572 100644
--- a/spec/factories/external_pull_requests.rb
+++ b/spec/factories/external_pull_requests.rb
@@ -4,14 +4,14 @@ FactoryBot.define do
factory :external_pull_request do
sequence(:pull_request_iid)
project
- source_branch 'feature'
- source_repository 'the-repository'
- source_sha '97de212e80737a608d939f648d959671fb0a0142'
- target_branch 'master'
- target_repository 'the-repository'
- target_sha 'a09386439ca39abe575675ffd4b89ae824fec22f'
- status :open
+ source_branch { 'feature' }
+ source_repository { 'the-repository' }
+ source_sha { '97de212e80737a608d939f648d959671fb0a0142' }
+ target_branch { 'master' }
+ target_repository { 'the-repository' }
+ target_sha { 'a09386439ca39abe575675ffd4b89ae824fec22f' }
+ status { :open }
- trait(:closed) { status 'closed' }
+ trait(:closed) { status { 'closed'} }
end
end
diff --git a/spec/factories/file_uploaders.rb b/spec/factories/file_uploaders.rb
index ec8f5c9af2d..dc888fdd535 100644
--- a/spec/factories/file_uploaders.rb
+++ b/spec/factories/file_uploaders.rb
@@ -5,7 +5,7 @@ FactoryBot.define do
skip_create
project
- secret nil
+ secret { nil }
transient do
fixture { 'rails_sample.jpg' }
diff --git a/spec/factories/gpg_signature.rb b/spec/factories/gpg_signature.rb
index a0fc1740d77..2ab4d190276 100644
--- a/spec/factories/gpg_signature.rb
+++ b/spec/factories/gpg_signature.rb
@@ -6,6 +6,6 @@ FactoryBot.define do
project
gpg_key
gpg_key_primary_keyid { gpg_key.keyid }
- verification_status :verified
+ verification_status { :verified }
end
end
diff --git a/spec/factories/group_members.rb b/spec/factories/group_members.rb
index a93f13395a2..3c9d469f23c 100644
--- a/spec/factories/group_members.rb
+++ b/spec/factories/group_members.rb
@@ -6,23 +6,23 @@ FactoryBot.define do
group
user
- trait(:guest) { access_level GroupMember::GUEST }
- trait(:reporter) { access_level GroupMember::REPORTER }
- trait(:developer) { access_level GroupMember::DEVELOPER }
- trait(:maintainer) { access_level GroupMember::MAINTAINER }
- trait(:owner) { access_level GroupMember::OWNER }
+ trait(:guest) { access_level { GroupMember::GUEST } }
+ trait(:reporter) { access_level { GroupMember::REPORTER } }
+ trait(:developer) { access_level { GroupMember::DEVELOPER } }
+ trait(:maintainer) { access_level { GroupMember::MAINTAINER } }
+ trait(:owner) { access_level { GroupMember::OWNER } }
trait(:access_request) { requested_at { Time.now } }
trait(:invited) do
- user_id nil
- invite_token 'xxx'
+ user_id { nil }
+ invite_token { 'xxx' }
sequence :invite_email do |n|
"email#{n}@email.com"
end
end
trait(:ldap) do
- ldap true
+ ldap { true }
end
trait :blocked do
diff --git a/spec/factories/groups.rb b/spec/factories/groups.rb
index d3c6101bad4..ba1a4883f85 100644
--- a/spec/factories/groups.rb
+++ b/spec/factories/groups.rb
@@ -4,9 +4,9 @@ FactoryBot.define do
factory :group, class: Group, parent: :namespace do
sequence(:name) { |n| "group#{n}" }
path { name.downcase.gsub(/\s/, '_') }
- type 'Group'
- owner nil
- project_creation_level ::Gitlab::Access::MAINTAINER_PROJECT_ACCESS
+ type { 'Group' }
+ owner { nil }
+ project_creation_level { ::Gitlab::Access::MAINTAINER_PROJECT_ACCESS}
after(:create) do |group|
if group.owner
@@ -17,15 +17,15 @@ FactoryBot.define do
end
trait :public do
- visibility_level Gitlab::VisibilityLevel::PUBLIC
+ visibility_level { Gitlab::VisibilityLevel::PUBLIC}
end
trait :internal do
- visibility_level Gitlab::VisibilityLevel::INTERNAL
+ visibility_level {Gitlab::VisibilityLevel::INTERNAL}
end
trait :private do
- visibility_level Gitlab::VisibilityLevel::PRIVATE
+ visibility_level { Gitlab::VisibilityLevel::PRIVATE}
end
trait :with_avatar do
@@ -33,7 +33,7 @@ FactoryBot.define do
end
trait :access_requestable do
- request_access_enabled true
+ request_access_enabled { true }
end
trait :nested do
@@ -41,15 +41,15 @@ FactoryBot.define do
end
trait :auto_devops_enabled do
- auto_devops_enabled true
+ auto_devops_enabled { true }
end
trait :auto_devops_disabled do
- auto_devops_enabled false
+ auto_devops_enabled { false }
end
trait :owner_subgroup_creation_only do
- subgroup_creation_level ::Gitlab::Access::OWNER_SUBGROUP_ACCESS
+ subgroup_creation_level { ::Gitlab::Access::OWNER_SUBGROUP_ACCESS}
end
end
end
diff --git a/spec/factories/identities.rb b/spec/factories/identities.rb
index 21cfe7fe623..a2615ce30c3 100644
--- a/spec/factories/identities.rb
+++ b/spec/factories/identities.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :identity do
- provider 'ldapmain'
- extern_uid 'my-ldap-id'
+ provider { 'ldapmain' }
+ extern_uid { 'my-ldap-id' }
end
end
diff --git a/spec/factories/import_states.rb b/spec/factories/import_states.rb
index 8e778200389..576f68ab57f 100644
--- a/spec/factories/import_states.rb
+++ b/spec/factories/import_states.rb
@@ -2,12 +2,12 @@
FactoryBot.define do
factory :import_state, class: ProjectImportState do
- status :none
+ status { :none }
association :project, factory: :project
transient do
import_url { generate(:url) }
- import_type nil
+ import_type { nil }
end
trait :repository do
@@ -15,23 +15,23 @@ FactoryBot.define do
end
trait :none do
- status :none
+ status { :none }
end
trait :scheduled do
- status :scheduled
+ status { :scheduled }
end
trait :started do
- status :started
+ status { :started }
end
trait :finished do
- status :finished
+ status { :finished }
end
trait :failed do
- status :failed
+ status { :failed }
end
after(:create) do |import_state, evaluator|
diff --git a/spec/factories/internal_ids.rb b/spec/factories/internal_ids.rb
index df5c5beeb42..bc6ea41ec06 100644
--- a/spec/factories/internal_ids.rb
+++ b/spec/factories/internal_ids.rb
@@ -3,7 +3,7 @@
FactoryBot.define do
factory :internal_id do
project
- usage :issues
+ usage { :issues }
last_value { project.issues.maximum(:iid) || 0 }
end
end
diff --git a/spec/factories/issues.rb b/spec/factories/issues.rb
index 434225f7022..70f480a3bcb 100644
--- a/spec/factories/issues.rb
+++ b/spec/factories/issues.rb
@@ -8,19 +8,19 @@ FactoryBot.define do
updated_by { author }
trait :confidential do
- confidential true
+ confidential { true }
end
trait :opened do
- state :opened
+ state { :opened }
end
trait :locked do
- discussion_locked true
+ discussion_locked { true }
end
trait :closed do
- state :closed
+ state { :closed }
closed_at { Time.now }
end
@@ -29,7 +29,7 @@ FactoryBot.define do
factory :labeled_issue do
transient do
- labels []
+ labels { [] }
end
after(:create) do |issue, evaluator|
diff --git a/spec/factories/labels.rb b/spec/factories/labels.rb
index 3eed750be03..89fcd8b1a9d 100644
--- a/spec/factories/labels.rb
+++ b/spec/factories/labels.rb
@@ -3,14 +3,14 @@
FactoryBot.define do
trait :base_label do
title { generate(:label_title) }
- color "#990000"
+ color { "#990000" }
end
factory :label, traits: [:base_label], class: ProjectLabel do
project
transient do
- priority nil
+ priority { nil }
end
after(:create) do |label, evaluator|
diff --git a/spec/factories/lfs_file_locks.rb b/spec/factories/lfs_file_locks.rb
index 73675d076ab..a676dabeff2 100644
--- a/spec/factories/lfs_file_locks.rb
+++ b/spec/factories/lfs_file_locks.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :lfs_file_lock do
user
project
- path 'README.md'
+ path { 'README.md' }
end
end
diff --git a/spec/factories/lfs_objects.rb b/spec/factories/lfs_objects.rb
index 631d87cfb12..35fc4db8519 100644
--- a/spec/factories/lfs_objects.rb
+++ b/spec/factories/lfs_objects.rb
@@ -5,7 +5,7 @@ include ActionDispatch::TestProcess
FactoryBot.define do
factory :lfs_object do
sequence(:oid) { |n| "b68143e6463773b1b6c6fd009a76c32aeec041faff32ba2ed42fd7f708a%05x" % n }
- size 499013
+ size { 499013 }
end
trait :with_file do
@@ -15,8 +15,8 @@ FactoryBot.define do
# The uniqueness constraint means we can't use the correct OID for all LFS
# objects, so the test needs to decide which (if any) object gets it
trait :correct_oid do
- oid 'b804383982bb89b00e828e3f44c038cc991d3d1768009fc39ba8e2c081b9fb75'
- size 1062
+ oid { 'b804383982bb89b00e828e3f44c038cc991d3d1768009fc39ba8e2c081b9fb75' }
+ size { 1062 }
end
trait :object_storage do
diff --git a/spec/factories/lfs_objects_projects.rb b/spec/factories/lfs_objects_projects.rb
index 7b55cc57f75..7d3e61ea2b1 100644
--- a/spec/factories/lfs_objects_projects.rb
+++ b/spec/factories/lfs_objects_projects.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :lfs_objects_project do
lfs_object
project
- repository_type :project
+ repository_type { :project }
end
end
diff --git a/spec/factories/lists.rb b/spec/factories/lists.rb
index e68611ec518..8785d3f0468 100644
--- a/spec/factories/lists.rb
+++ b/spec/factories/lists.rb
@@ -4,19 +4,19 @@ FactoryBot.define do
factory :list do
board
label
- list_type :label
+ list_type { :label }
sequence(:position)
end
factory :backlog_list, parent: :list do
- list_type :backlog
- label nil
- position nil
+ list_type { :backlog }
+ label { nil }
+ position { nil }
end
factory :closed_list, parent: :list do
- list_type :closed
- label nil
- position nil
+ list_type { :closed }
+ label { nil }
+ position { nil }
end
end
diff --git a/spec/factories/merge_request_diff_files.rb b/spec/factories/merge_request_diff_files.rb
index 469a7a0ac8d..86eff445ec8 100644
--- a/spec/factories/merge_request_diff_files.rb
+++ b/spec/factories/merge_request_diff_files.rb
@@ -4,44 +4,44 @@ FactoryBot.define do
factory :merge_request_diff_file do
association :merge_request_diff
- relative_order 0
- new_file true
- renamed_file false
- deleted_file false
- too_large false
- a_mode 0
- b_mode 100644
- new_path 'foo'
- old_path 'foo'
- diff ''
- binary false
+ relative_order { 0 }
+ new_file { true }
+ renamed_file { false }
+ deleted_file { false }
+ too_large { false }
+ a_mode { 0 }
+ b_mode { 100644 }
+ new_path { 'foo' }
+ old_path { 'foo' }
+ diff { '' }
+ binary { false }
trait :new_file do
- relative_order 0
- new_file true
- renamed_file false
- deleted_file false
- too_large false
- a_mode 0
- b_mode 100644
- new_path 'foo'
- old_path 'foo'
- diff ''
- binary false
+ relative_order { 0 }
+ new_file { true }
+ renamed_file { false }
+ deleted_file { false }
+ too_large { false }
+ a_mode { 0 }
+ b_mode { 100644 }
+ new_path { 'foo' }
+ old_path { 'foo' }
+ diff { '' }
+ binary { false }
end
trait :renamed_file do
- relative_order 662
- new_file false
- renamed_file true
- deleted_file false
- too_large false
- a_mode 100644
- b_mode 100644
- new_path 'bar'
- old_path 'baz'
- diff ''
- binary false
+ relative_order { 662 }
+ new_file { false }
+ renamed_file { true }
+ deleted_file { false }
+ too_large { false }
+ a_mode { 100644 }
+ b_mode { 100644 }
+ new_path { 'bar' }
+ old_path { 'baz' }
+ diff { '' }
+ binary { false }
end
end
end
diff --git a/spec/factories/merge_request_diffs.rb b/spec/factories/merge_request_diffs.rb
index e7b51189538..0c4c3244af5 100644
--- a/spec/factories/merge_request_diffs.rb
+++ b/spec/factories/merge_request_diffs.rb
@@ -3,8 +3,8 @@
FactoryBot.define do
factory :merge_request_diff do
association :merge_request
- state :collected
- commits_count 1
+ state { :collected }
+ commits_count { 1 }
base_commit_sha { Digest::SHA1.hexdigest(SecureRandom.hex) }
head_commit_sha { Digest::SHA1.hexdigest(SecureRandom.hex) }
diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb
index 3d12ff98257..28a3f76d485 100644
--- a/spec/factories/merge_requests.rb
+++ b/spec/factories/merge_requests.rb
@@ -16,36 +16,36 @@ FactoryBot.define do
#
# See also RepoHelpers.sample_compare
#
- source_branch "master"
- target_branch "feature"
+ source_branch { "master" }
+ target_branch { "feature" }
- merge_status "can_be_merged"
+ merge_status { "can_be_merged" }
trait :with_diffs do
end
trait :with_image_diffs do
- source_branch "add_images_and_changes"
- target_branch "master"
+ source_branch { "add_images_and_changes" }
+ target_branch { "master" }
end
trait :without_diffs do
- source_branch "improve/awesome"
- target_branch "master"
+ source_branch { "improve/awesome" }
+ target_branch { "master" }
end
trait :conflict do
- source_branch "feature_conflict"
- target_branch "feature"
+ source_branch { "feature_conflict" }
+ target_branch { "feature" }
end
trait :merged do
- state :merged
+ state { :merged }
end
trait :merged_target do
- source_branch "merged-target"
- target_branch "improve/awesome"
+ source_branch { "merged-target" }
+ target_branch { "improve/awesome" }
end
trait :merged_last_month do
@@ -57,7 +57,7 @@ FactoryBot.define do
end
trait :closed do
- state :closed
+ state { :closed }
end
trait :closed_last_month do
@@ -69,36 +69,36 @@ FactoryBot.define do
end
trait :opened do
- state :opened
+ state { :opened }
end
trait :invalid do
- source_branch "feature_one"
- target_branch "feature_two"
+ source_branch { "feature_one" }
+ target_branch { "feature_two" }
end
trait :locked do
- state :locked
+ state { :locked }
end
trait :simple do
- source_branch "feature"
- target_branch "master"
+ source_branch { "feature" }
+ target_branch { "master" }
end
trait :rebased do
- source_branch "markdown"
- target_branch "improve/awesome"
+ source_branch { "markdown" }
+ target_branch { "improve/awesome" }
end
trait :diverged do
- source_branch "feature"
- target_branch "master"
+ source_branch { "feature" }
+ target_branch { "master" }
end
trait :merge_when_pipeline_succeeds do
- auto_merge_enabled true
- auto_merge_strategy AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS
+ auto_merge_enabled { true }
+ auto_merge_strategy { AutoMergeService::STRATEGY_MERGE_WHEN_PIPELINE_SUCCEEDS }
merge_user { author }
end
@@ -162,7 +162,7 @@ FactoryBot.define do
end
trait :deployed_review_app do
- target_branch 'pages-deploy-target'
+ target_branch { 'pages-deploy-target' }
transient do
deployment { create(:deployment, :review_app) }
@@ -203,7 +203,7 @@ FactoryBot.define do
factory :labeled_merge_request do
transient do
- labels []
+ labels { [] }
end
after(:create) do |merge_request, evaluator|
diff --git a/spec/factories/milestones.rb b/spec/factories/milestones.rb
index 7d623000fc9..75ff925774a 100644
--- a/spec/factories/milestones.rb
+++ b/spec/factories/milestones.rb
@@ -5,19 +5,19 @@ FactoryBot.define do
title
transient do
- project nil
- group nil
- project_id nil
- group_id nil
- parent nil
+ project { nil }
+ group { nil }
+ project_id { nil }
+ group_id { nil }
+ parent { nil }
end
trait :active do
- state "active"
+ state { "active" }
end
trait :closed do
- state "closed"
+ state { "closed" }
end
trait :with_dates do
diff --git a/spec/factories/notes.rb b/spec/factories/notes.rb
index 5b9a7e6f864..8304b718136 100644
--- a/spec/factories/notes.rb
+++ b/spec/factories/notes.rb
@@ -41,14 +41,14 @@ FactoryBot.define do
factory :legacy_diff_note_on_merge_request, traits: [:on_merge_request, :legacy_diff_note], class: LegacyDiffNote do
association :project, :repository
- position ''
+ position { '' }
end
factory :diff_note_on_merge_request, traits: [:on_merge_request], class: DiffNote do
association :project, :repository
transient do
- line_number 14
+ line_number { 14 }
diff_refs { noteable.try(:diff_refs) }
end
@@ -87,7 +87,7 @@ FactoryBot.define do
association :project, :repository
transient do
- line_number 14
+ line_number { 14 }
diff_refs { project.commit(commit_id).try(:diff_refs) }
end
@@ -104,14 +104,14 @@ FactoryBot.define do
trait :on_commit do
association :project, :repository
- noteable nil
- noteable_type 'Commit'
- noteable_id nil
+ noteable { nil }
+ noteable_type { 'Commit' }
+ noteable_id { nil }
commit_id { RepoHelpers.sample_commit.id }
end
trait :legacy_diff_note do
- line_code "0_184_184"
+ line_code { "0_184_184" }
end
trait :on_issue do
@@ -132,19 +132,19 @@ FactoryBot.define do
trait :on_personal_snippet do
noteable { create(:personal_snippet) }
- project nil
+ project { nil }
end
trait :system do
- system true
+ system { true }
end
trait :downvote do
- note "thumbsdown"
+ note { "thumbsdown" }
end
trait :upvote do
- note "thumbsup"
+ note { "thumbsup" }
end
trait :with_attachment do
@@ -156,7 +156,7 @@ FactoryBot.define do
end
transient do
- in_reply_to nil
+ in_reply_to { nil }
end
before(:create) do |note, evaluator|
diff --git a/spec/factories/notification_settings.rb b/spec/factories/notification_settings.rb
index c16b0e456ba..025120fefc1 100644
--- a/spec/factories/notification_settings.rb
+++ b/spec/factories/notification_settings.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :notification_setting do
source factory: :project
user
- level 3
+ level { 3 }
end
end
diff --git a/spec/factories/oauth_applications.rb b/spec/factories/oauth_applications.rb
index 4748b320298..aff32805f03 100644
--- a/spec/factories/oauth_applications.rb
+++ b/spec/factories/oauth_applications.rb
@@ -6,6 +6,6 @@ FactoryBot.define do
uid { Doorkeeper::OAuth::Helpers::UniqueToken.generate }
redirect_uri { generate(:url) }
owner
- owner_type 'User'
+ owner_type { 'User' }
end
end
diff --git a/spec/factories/pages_domains.rb b/spec/factories/pages_domains.rb
index ae3988bdd69..91423832888 100644
--- a/spec/factories/pages_domains.rb
+++ b/spec/factories/pages_domains.rb
@@ -6,7 +6,8 @@ FactoryBot.define do
verified_at { Time.now }
enabled_until { 1.week.from_now }
- certificate '-----BEGIN CERTIFICATE-----
+ certificate do
+ '-----BEGIN CERTIFICATE-----
MIICGzCCAYSgAwIBAgIBATANBgkqhkiG9w0BAQUFADAbMRkwFwYDVQQDExB0ZXN0
LWNlcnRpZmljYXRlMB4XDTE2MDIxMjE0MzIwMFoXDTIwMDQxMjE0MzIwMFowGzEZ
MBcGA1UEAxMQdGVzdC1jZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
@@ -20,8 +21,10 @@ joZp2JHYvNlTPkRJ/J4TcXxBTJmArcQgTIuNoBtC+0A/SwdK4MfTCUY4vNWNdese
5A4K65Nb7Oh1AdQieTBHNXXCdyFsva9/ScfQGEl7p55a52jOPs0StPd7g64uvjlg
YHi2yesCrOvVXt+lgPTd
-----END CERTIFICATE-----'
+ end
- key '-----BEGIN PRIVATE KEY-----
+ key do
+ '-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKS+CfS9GcRSdYSN
SzyH5QJQBr5umRL6E+KilOV39iYFO/9oHjUdapTRWkrwnNPCp7qaeck4Jr8iv14t
PVNDfNr76eGb6/3YknOAP0QOjLWunoC8kjU+N/JHU52NrUeX3qEy8EKV9LeCDJcB
@@ -37,10 +40,11 @@ EPjGlXIT+aW2XiPmK3ZlCDcWIenE+lmtbOpI159Wpk8BGXs/s/xBAkEAlAY3ymgx
63BDJEwvOb2IaP8lDDxNsXx9XJNVvQbv5n15vNsLHbjslHfAhAbxnLQ1fLhUPqSi
nNp/xedE1YxutQ==
-----END PRIVATE KEY-----'
+ end
trait :disabled do
- verified_at nil
- enabled_until nil
+ verified_at { nil }
+ enabled_until { nil }
end
trait :scheduled_for_removal do
@@ -52,7 +56,7 @@ nNp/xedE1YxutQ==
end
trait :unverified do
- verified_at nil
+ verified_at { nil }
end
trait :reverify do
@@ -64,17 +68,18 @@ nNp/xedE1YxutQ==
end
trait :without_certificate do
- certificate nil
+ certificate { nil }
end
trait :without_key do
- key nil
+ key { nil }
end
trait :with_missing_chain do
# This certificate is signed with different key
# And misses the CA to build trust chain
- certificate '-----BEGIN CERTIFICATE-----
+ certificate do
+ '-----BEGIN CERTIFICATE-----
MIIDGTCCAgGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwdUZXN0
IENBMB4XDTE2MDIxMjE0MjMwMFoXDTE3MDIxMTE0MjMwMFowHTEbMBkGA1UEAxMS
dGVzdC1jZXJ0aWZpY2F0ZS0yMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
@@ -93,13 +98,15 @@ WlU8raZoPIqf6H/8JA97pM/nk/3CqCoHsouSQv+jGY4pSL22RqsO0ylIM0LDBbmF
m4AEaojTljX1tMJAF9Rbiw/omam5bDPq2JWtosrz/zB69y5FaQjc6FnCk0M4oN/+
VM+d42lQAgoq318A84Xu5vRh1KCAJuztkhNbM+w=
-----END CERTIFICATE-----'
+ end
end
trait :with_trusted_chain do
# This contains
# [Intermediate #2 (SHA-2)] 'Comodo RSA Domain Validation Secure Server CA'
# [Intermediate #1 (SHA-2)] 'COMODO RSA Certification Authority'
- certificate '-----BEGIN CERTIFICATE-----
+ certificate do
+ '-----BEGIN CERTIFICATE-----
MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
@@ -166,13 +173,15 @@ B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
pu/xO28QOG8=
-----END CERTIFICATE-----'
+ end
end
trait :with_trusted_expired_chain do
# This contains
# Let's Encrypt Authority X3
# DST Root CA X3
- certificate '-----BEGIN CERTIFICATE-----
+ certificate do
+ '-----BEGIN CERTIFICATE-----
MIIFSjCCBDKgAwIBAgISAw24xGWrFotvTBa6AZI/pzq1MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTAzMDcxNzU5NTZaFw0x
@@ -250,10 +259,12 @@ R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----'
+ end
end
trait :with_expired_certificate do
- certificate '-----BEGIN CERTIFICATE-----
+ certificate do
+ '-----BEGIN CERTIFICATE-----
MIIBsDCCARmgAwIBAgIBATANBgkqhkiG9w0BAQUFADAeMRwwGgYDVQQDExNleHBp
cmVkLWNlcnRpZmljYXRlMB4XDTE1MDIxMjE0MzMwMFoXDTE2MDIwMTE0MzMwMFow
HjEcMBoGA1UEAxMTZXhwaXJlZC1jZXJ0aWZpY2F0ZTCBnzANBgkqhkiG9w0BAQEF
@@ -265,6 +276,7 @@ Hq9LkWn6WP4EHsesHyslgTQZF8C7kVLTbLn2noLnOE+Mp3vcWlZxl3Yk6aZMhKS+
Iy6oRpHaCF/2obZdIdgf9rlyz0fkqyHJc9GkioSoOhJZxEV2SgAkap8yS0sX2tJ9
ZDXgrA==
-----END CERTIFICATE-----'
+ end
end
trait :letsencrypt do
@@ -273,7 +285,8 @@ ZDXgrA==
end
trait :explicit_ecdsa do
- certificate '-----BEGIN CERTIFICATE-----
+ certificate do
+ '-----BEGIN CERTIFICATE-----
MIID1zCCAzkCCQDatOIwBlktwjAKBggqhkjOPQQDAjBPMQswCQYDVQQGEwJVUzEL
MAkGA1UECAwCTlkxCzAJBgNVBAcMAk5ZMQswCQYDVQQLDAJJVDEZMBcGA1UEAwwQ
dGVzdC1jZXJ0aWZpY2F0ZTAeFw0xOTA4MjkxMTE1NDBaFw0yMTA4MjgxMTE1NDBa
@@ -296,8 +309,10 @@ OjSJpIDdFWGVYJHyMDI5WgQyhm4hAioXJ0T22Zab8Wmq+hBYRJNcHoaV894blfqR
V3ZJgam8EQJCAcnPpJQ0IqoT1pAQkaL3+Ka8ZaaCd6/8RnoDtGvWljisuyH65SRu
kmYv87bZe1KqOZDoaDBdfVsoxcGbik19lBPV
-----END CERTIFICATE-----'
+ end
- key '-----BEGIN EC PARAMETERS-----
+ key do
+ '-----BEGIN EC PARAMETERS-----
MIIBwgIBATBNBgcqhkjOPQEBAkIB////////////////////////////////////
//////////////////////////////////////////////////8wgZ4EQgH/////
////////////////////////////////////////////////////////////////
@@ -326,10 +341,12 @@ ZAkCAQGhgYkDgYYABAFUb/hz+GCXfq2geP54Yvimq/uXsz5kpAni/PRj0TrEjH6C
+Iu6YSMSWFwExlVeJeFvm3F/XW5cBafmfpCF7Llgo8w2MsuoOpobX158IsJ3bUDR
Nw==
-----END EC PRIVATE KEY-----'
+ end
end
trait :ecdsa do
- certificate '-----BEGIN CERTIFICATE-----
+ certificate do
+ '-----BEGIN CERTIFICATE-----
MIIB8zCCAVUCCQCGKuPQ6SBxUTAKBggqhkjOPQQDAjA+MQswCQYDVQQGEwJVUzEL
MAkGA1UECAwCVVMxCzAJBgNVBAcMAlVTMRUwEwYDVQQDDAxzaHVzaGxpbi5kZXYw
HhcNMTkwOTAyMDkyMDUxWhcNMjEwOTAxMDkyMDUxWjA+MQswCQYDVQQGEwJVUzEL
@@ -342,8 +359,10 @@ R9WYUg5+PQMg7kS+4K/5+5gonWCvaMcP+2P7hltUcvq41l3uMKKCZRU/x60/FMHc
1ZXdAkIBuVtm9RJXziNOKS4TcpH9os/FuREW8YQlpec58LDZdlivcHnikHZ4LCri
T7zu3VY6Rq+V/IKpsQwQjmoTJ0IpCM8=
-----END CERTIFICATE-----'
+ end
- key '-----BEGIN EC PARAMETERS-----
+ key do
+ '-----BEGIN EC PARAMETERS-----
BgUrgQQAIw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
@@ -353,6 +372,7 @@ dNqyCW1lFsgyt6KHJw6H8bhNemSny1O0Sy4P6yHxq7cnLCyLz1FJnq+BWgJjv/8N
Da9qZifIFmpsv5xNAGxDvANQRpLI/RHc/hvo7HfjuljNfBJ1I6tr0KbhMxB76mtU
x6zG6WoibsbsJMj70nwseUnPTBQNDP+j61RJjC/r
-----END EC PRIVATE KEY-----'
+ end
end
end
end
diff --git a/spec/factories/personal_access_tokens.rb b/spec/factories/personal_access_tokens.rb
index cc9b2328705..d8ff2e08657 100644
--- a/spec/factories/personal_access_tokens.rb
+++ b/spec/factories/personal_access_tokens.rb
@@ -4,19 +4,19 @@ FactoryBot.define do
factory :personal_access_token do
user
sequence(:name) { |n| "PAT #{n}" }
- revoked false
+ revoked { false }
expires_at { 5.days.from_now }
- scopes ['api']
- impersonation false
+ scopes { ['api'] }
+ impersonation { false }
after(:build) { |personal_access_token| personal_access_token.ensure_token }
trait :impersonation do
- impersonation true
+ impersonation { true }
end
trait :revoked do
- revoked true
+ revoked { true }
end
trait :expired do
@@ -24,7 +24,7 @@ FactoryBot.define do
end
trait :invalid do
- token_digest nil
+ token_digest { nil }
end
end
end
diff --git a/spec/factories/pool_repositories.rb b/spec/factories/pool_repositories.rb
index 7a8946d47b0..f0905d28c70 100644
--- a/spec/factories/pool_repositories.rb
+++ b/spec/factories/pool_repositories.rb
@@ -3,7 +3,7 @@
FactoryBot.define do
factory :pool_repository do
shard { Shard.by_name("default") }
- state :none
+ state { :none }
before(:create) do |pool|
pool.source_project = create(:project, :repository)
@@ -11,19 +11,19 @@ FactoryBot.define do
end
trait :scheduled do
- state :scheduled
+ state { :scheduled }
end
trait :failed do
- state :failed
+ state { :failed }
end
trait :obsolete do
- state :obsolete
+ state { :obsolete }
end
trait :ready do
- state :ready
+ state { :ready }
after(:create) do |pool|
pool.create_object_pool
diff --git a/spec/factories/programming_languages.rb b/spec/factories/programming_languages.rb
index ee8e7765ec9..7baa63cd4f8 100644
--- a/spec/factories/programming_languages.rb
+++ b/spec/factories/programming_languages.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :programming_language do
- name 'Ruby'
- color '#123456'
+ name { 'Ruby' }
+ color { '#123456' }
end
end
diff --git a/spec/factories/project_auto_devops.rb b/spec/factories/project_auto_devops.rb
index 4cc59c7095c..c87de30211c 100644
--- a/spec/factories/project_auto_devops.rb
+++ b/spec/factories/project_auto_devops.rb
@@ -3,23 +3,23 @@
FactoryBot.define do
factory :project_auto_devops do
project
- enabled true
- deploy_strategy :continuous
+ enabled { true }
+ deploy_strategy { :continuous }
trait :continuous_deployment do
- deploy_strategy ProjectAutoDevops.deploy_strategies[:continuous] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically
+ deploy_strategy { ProjectAutoDevops.deploy_strategies[:continuous] }
end
trait :manual_deployment do
- deploy_strategy ProjectAutoDevops.deploy_strategies[:manual] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically
+ deploy_strategy { ProjectAutoDevops.deploy_strategies[:manual] }
end
trait :timed_incremental_deployment do
- deploy_strategy ProjectAutoDevops.deploy_strategies[:timed_incremental] # rubocop:disable FactoryBot/DynamicAttributeDefinedStatically
+ deploy_strategy { ProjectAutoDevops.deploy_strategies[:timed_incremental] }
end
trait :disabled do
- enabled false
+ enabled { false }
end
end
end
diff --git a/spec/factories/project_daily_statistics.rb b/spec/factories/project_daily_statistics.rb
index 7e4142fa401..7aeee55c327 100644
--- a/spec/factories/project_daily_statistics.rb
+++ b/spec/factories/project_daily_statistics.rb
@@ -3,6 +3,6 @@
FactoryBot.define do
factory :project_daily_statistic do
project
- fetch_count 1
+ fetch_count { 1 }
end
end
diff --git a/spec/factories/project_error_tracking_settings.rb b/spec/factories/project_error_tracking_settings.rb
index be30bd0260a..f90a2d17846 100644
--- a/spec/factories/project_error_tracking_settings.rb
+++ b/spec/factories/project_error_tracking_settings.rb
@@ -3,10 +3,10 @@
FactoryBot.define do
factory :project_error_tracking_setting, class: ErrorTracking::ProjectErrorTrackingSetting do
project
- api_url 'https://gitlab.com/api/0/projects/sentry-org/sentry-project'
- enabled true
- token 'access_token_123'
- project_name 'Sentry Project'
- organization_name 'Sentry Org'
+ api_url { 'https://gitlab.com/api/0/projects/sentry-org/sentry-project' }
+ enabled { true }
+ token { 'access_token_123' }
+ project_name { 'Sentry Project' }
+ organization_name { 'Sentry Org' }
end
end
diff --git a/spec/factories/project_group_links.rb b/spec/factories/project_group_links.rb
index b02d167a950..3c8c7a34680 100644
--- a/spec/factories/project_group_links.rb
+++ b/spec/factories/project_group_links.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :project_group_link do
project
group
- expires_at nil
+ expires_at { nil }
end
end
diff --git a/spec/factories/project_hooks.rb b/spec/factories/project_hooks.rb
index 96c9742c7d0..6592141e26d 100644
--- a/spec/factories/project_hooks.rb
+++ b/spec/factories/project_hooks.rb
@@ -3,7 +3,7 @@
FactoryBot.define do
factory :project_hook do
url { generate(:url) }
- enable_ssl_verification false
+ enable_ssl_verification { false }
project
trait :token do
@@ -11,16 +11,16 @@ FactoryBot.define do
end
trait :all_events_enabled do
- push_events true
- merge_requests_events true
- tag_push_events true
- issues_events true
- confidential_issues_events true
- note_events true
- confidential_note_events true
- job_events true
- pipeline_events true
- wiki_page_events true
+ push_events { true }
+ merge_requests_events { true }
+ tag_push_events { true }
+ issues_events { true }
+ confidential_issues_events { true }
+ note_events { true }
+ confidential_note_events { true }
+ job_events { true }
+ pipeline_events { true }
+ wiki_page_events { true }
end
end
end
diff --git a/spec/factories/project_members.rb b/spec/factories/project_members.rb
index 723fa6058fe..e7004937be3 100644
--- a/spec/factories/project_members.rb
+++ b/spec/factories/project_members.rb
@@ -6,16 +6,16 @@ FactoryBot.define do
project
maintainer
- trait(:guest) { access_level ProjectMember::GUEST }
- trait(:reporter) { access_level ProjectMember::REPORTER }
- trait(:developer) { access_level ProjectMember::DEVELOPER }
- trait(:maintainer) { access_level ProjectMember::MAINTAINER }
+ trait(:guest) { access_level { ProjectMember::GUEST } }
+ trait(:reporter) { access_level { ProjectMember::REPORTER } }
+ trait(:developer) { access_level { ProjectMember::DEVELOPER } }
+ trait(:maintainer) { access_level { ProjectMember::MAINTAINER } }
trait(:access_request) { requested_at { Time.now } }
trait(:invited) do
- user_id nil
- invite_token 'xxx'
- invite_email 'email@email.com'
+ user_id { nil }
+ invite_token { 'xxx' }
+ invite_email { 'email@email.com' }
end
trait :blocked do
diff --git a/spec/factories/project_metrics_settings.rb b/spec/factories/project_metrics_settings.rb
index 234753f9b87..51b2ce0e0e9 100644
--- a/spec/factories/project_metrics_settings.rb
+++ b/spec/factories/project_metrics_settings.rb
@@ -3,6 +3,6 @@
FactoryBot.define do
factory :project_metrics_setting, class: ProjectMetricsSetting do
project
- external_dashboard_url 'https://grafana.com'
+ external_dashboard_url { 'https://grafana.com' }
end
end
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index ea89555b0d5..ae1feb73e4d 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -13,7 +13,7 @@ FactoryBot.define do
sequence(:name) { |n| "project#{n}" }
path { name.downcase.gsub(/\s/, '_') }
# Behaves differently to nil due to cache_has_external_issue_tracker
- has_external_issue_tracker false
+ has_external_issue_tracker { false }
# Associations
namespace
@@ -21,21 +21,21 @@ FactoryBot.define do
transient do
# Nest Project Feature attributes
- wiki_access_level ProjectFeature::ENABLED
- builds_access_level ProjectFeature::ENABLED
- snippets_access_level ProjectFeature::ENABLED
- issues_access_level ProjectFeature::ENABLED
- merge_requests_access_level ProjectFeature::ENABLED
- repository_access_level ProjectFeature::ENABLED
+ wiki_access_level { ProjectFeature::ENABLED }
+ builds_access_level { ProjectFeature::ENABLED }
+ snippets_access_level { ProjectFeature::ENABLED }
+ issues_access_level { ProjectFeature::ENABLED }
+ merge_requests_access_level { ProjectFeature::ENABLED }
+ repository_access_level { ProjectFeature::ENABLED }
pages_access_level do
visibility_level == Gitlab::VisibilityLevel::PUBLIC ? ProjectFeature::ENABLED : ProjectFeature::PRIVATE
end
# we can't assign the delegated `#ci_cd_settings` attributes directly, as the
# `#ci_cd_settings` relation needs to be created first
- group_runners_enabled nil
- import_status nil
- import_jid nil
+ group_runners_enabled { nil }
+ import_status { nil }
+ import_jid { nil }
end
after(:create) do |project, evaluator|
@@ -80,45 +80,45 @@ FactoryBot.define do
end
trait :public do
- visibility_level Gitlab::VisibilityLevel::PUBLIC
+ visibility_level { Gitlab::VisibilityLevel::PUBLIC }
end
trait :internal do
- visibility_level Gitlab::VisibilityLevel::INTERNAL
+ visibility_level { Gitlab::VisibilityLevel::INTERNAL }
end
trait :private do
- visibility_level Gitlab::VisibilityLevel::PRIVATE
+ visibility_level { Gitlab::VisibilityLevel::PRIVATE }
end
trait :import_scheduled do
- import_status :scheduled
+ import_status { :scheduled }
end
trait :import_started do
- import_status :started
+ import_status { :started }
end
trait :import_finished do
- import_status :finished
+ import_status { :finished }
end
trait :import_failed do
- import_status :failed
+ import_status { :failed }
end
trait :archived do
- archived true
+ archived { true }
end
- storage_version Project::LATEST_STORAGE_VERSION
+ storage_version { Project::LATEST_STORAGE_VERSION }
trait :legacy_storage do
- storage_version nil
+ storage_version { nil }
end
trait :access_requestable do
- request_access_enabled true
+ request_access_enabled { true }
end
trait :with_avatar do
@@ -146,7 +146,7 @@ FactoryBot.define do
# will create a repository containing two files, and two commits, in master
trait :custom_repo do
transient do
- files {}
+ files { {} }
end
after :create do |project, evaluator|
@@ -169,7 +169,7 @@ FactoryBot.define do
test_repo
transient do
- create_templates nil
+ create_templates { nil }
end
after :create do |project, evaluator|
@@ -206,9 +206,9 @@ FactoryBot.define do
trait :remote_mirror do
transient do
- remote_name "remote_mirror_#{SecureRandom.hex}"
- url "http://foo.com"
- enabled true
+ remote_name { "remote_mirror_#{SecureRandom.hex}" }
+ url { "http://foo.com" }
+ enabled { true }
end
after(:create) do |project, evaluator|
project.remote_mirrors.create!(url: evaluator.url, enabled: evaluator.enabled)
@@ -229,7 +229,7 @@ FactoryBot.define do
end
trait :read_only do
- repository_read_only true
+ repository_read_only { true }
end
trait :broken_repo do
@@ -249,29 +249,29 @@ FactoryBot.define do
end
end
- trait(:wiki_enabled) { wiki_access_level ProjectFeature::ENABLED }
- trait(:wiki_disabled) { wiki_access_level ProjectFeature::DISABLED }
- trait(:wiki_private) { wiki_access_level ProjectFeature::PRIVATE }
- trait(:builds_enabled) { builds_access_level ProjectFeature::ENABLED }
- trait(:builds_disabled) { builds_access_level ProjectFeature::DISABLED }
- trait(:builds_private) { builds_access_level ProjectFeature::PRIVATE }
- trait(:snippets_enabled) { snippets_access_level ProjectFeature::ENABLED }
- trait(:snippets_disabled) { snippets_access_level ProjectFeature::DISABLED }
- trait(:snippets_private) { snippets_access_level ProjectFeature::PRIVATE }
- trait(:issues_disabled) { issues_access_level ProjectFeature::DISABLED }
- trait(:issues_enabled) { issues_access_level ProjectFeature::ENABLED }
- trait(:issues_private) { issues_access_level ProjectFeature::PRIVATE }
- trait(:merge_requests_enabled) { merge_requests_access_level ProjectFeature::ENABLED }
- trait(:merge_requests_disabled) { merge_requests_access_level ProjectFeature::DISABLED }
- trait(:merge_requests_private) { merge_requests_access_level ProjectFeature::PRIVATE }
- trait(:merge_requests_public) { merge_requests_access_level ProjectFeature::PUBLIC }
- trait(:repository_enabled) { repository_access_level ProjectFeature::ENABLED }
- trait(:repository_disabled) { repository_access_level ProjectFeature::DISABLED }
- trait(:repository_private) { repository_access_level ProjectFeature::PRIVATE }
- trait(:pages_public) { pages_access_level ProjectFeature::PUBLIC }
- trait(:pages_enabled) { pages_access_level ProjectFeature::ENABLED }
- trait(:pages_disabled) { pages_access_level ProjectFeature::DISABLED }
- trait(:pages_private) { pages_access_level ProjectFeature::PRIVATE }
+ trait(:wiki_enabled) { wiki_access_level { ProjectFeature::ENABLED } }
+ trait(:wiki_disabled) { wiki_access_level { ProjectFeature::DISABLED } }
+ trait(:wiki_private) { wiki_access_level { ProjectFeature::PRIVATE } }
+ trait(:builds_enabled) { builds_access_level { ProjectFeature::ENABLED } }
+ trait(:builds_disabled) { builds_access_level { ProjectFeature::DISABLED } }
+ trait(:builds_private) { builds_access_level { ProjectFeature::PRIVATE } }
+ trait(:snippets_enabled) { snippets_access_level { ProjectFeature::ENABLED } }
+ trait(:snippets_disabled) { snippets_access_level { ProjectFeature::DISABLED } }
+ trait(:snippets_private) { snippets_access_level { ProjectFeature::PRIVATE } }
+ trait(:issues_disabled) { issues_access_level { ProjectFeature::DISABLED } }
+ trait(:issues_enabled) { issues_access_level { ProjectFeature::ENABLED } }
+ trait(:issues_private) { issues_access_level { ProjectFeature::PRIVATE } }
+ trait(:merge_requests_enabled) { merge_requests_access_level { ProjectFeature::ENABLED } }
+ trait(:merge_requests_disabled) { merge_requests_access_level { ProjectFeature::DISABLED } }
+ trait(:merge_requests_private) { merge_requests_access_level { ProjectFeature::PRIVATE } }
+ trait(:merge_requests_public) { merge_requests_access_level { ProjectFeature::PUBLIC } }
+ trait(:repository_enabled) { repository_access_level { ProjectFeature::ENABLED } }
+ trait(:repository_disabled) { repository_access_level { ProjectFeature::DISABLED } }
+ trait(:repository_private) { repository_access_level { ProjectFeature::PRIVATE } }
+ trait(:pages_public) { pages_access_level { ProjectFeature::PUBLIC } }
+ trait(:pages_enabled) { pages_access_level { ProjectFeature::ENABLED } }
+ trait(:pages_disabled) { pages_access_level { ProjectFeature::DISABLED } }
+ trait(:pages_private) { pages_access_level { ProjectFeature::PRIVATE } }
trait :auto_devops do
association :auto_devops, factory: :project_auto_devops
@@ -308,19 +308,19 @@ FactoryBot.define do
end
factory :redmine_project, parent: :project do
- has_external_issue_tracker true
+ has_external_issue_tracker { true }
redmine_service
end
factory :youtrack_project, parent: :project do
- has_external_issue_tracker true
+ has_external_issue_tracker { true }
youtrack_service
end
factory :jira_project, parent: :project do
- has_external_issue_tracker true
+ has_external_issue_tracker { true }
jira_service
end
diff --git a/spec/factories/prometheus_metrics.rb b/spec/factories/prometheus_metrics.rb
index c56644bfb96..f6b58cf84c3 100644
--- a/spec/factories/prometheus_metrics.rb
+++ b/spec/factories/prometheus_metrics.rb
@@ -2,17 +2,17 @@
FactoryBot.define do
factory :prometheus_metric, class: PrometheusMetric do
- title 'title'
- query 'avg(metric)'
- y_label 'y_label'
- unit 'm/s'
- group :business
+ title { 'title' }
+ query { 'avg(metric)' }
+ y_label { 'y_label' }
+ unit { 'm/s' }
+ group { :business }
project
- legend 'legend'
+ legend { 'legend' }
trait :common do
- common true
- project nil
+ common { true }
+ project { nil }
end
end
end
diff --git a/spec/factories/protected_branches.rb b/spec/factories/protected_branches.rb
index 741615bc0d3..2d3abc77350 100644
--- a/spec/factories/protected_branches.rb
+++ b/spec/factories/protected_branches.rb
@@ -6,14 +6,14 @@ FactoryBot.define do
project
transient do
- default_push_level true
- default_merge_level true
- default_access_level true
+ default_push_level { true }
+ default_merge_level { true }
+ default_access_level { true }
end
trait :developers_can_push do
transient do
- default_push_level false
+ default_push_level { false }
end
after(:build) do |protected_branch|
@@ -23,7 +23,7 @@ FactoryBot.define do
trait :developers_can_merge do
transient do
- default_merge_level false
+ default_merge_level { false }
end
after(:build) do |protected_branch|
@@ -33,7 +33,7 @@ FactoryBot.define do
trait :no_one_can_push do
transient do
- default_push_level false
+ default_push_level { false }
end
after(:build) do |protected_branch|
@@ -43,7 +43,7 @@ FactoryBot.define do
trait :maintainers_can_push do
transient do
- default_push_level false
+ default_push_level { false }
end
after(:build) do |protected_branch|
diff --git a/spec/factories/protected_tags.rb b/spec/factories/protected_tags.rb
index 6ff2a245b58..3859267ecaf 100644
--- a/spec/factories/protected_tags.rb
+++ b/spec/factories/protected_tags.rb
@@ -6,12 +6,12 @@ FactoryBot.define do
project
transient do
- default_access_level true
+ default_access_level { true }
end
trait :developers_can_create do
transient do
- default_access_level false
+ default_access_level { false }
end
after(:build) do |protected_tag|
@@ -21,7 +21,7 @@ FactoryBot.define do
trait :no_one_can_create do
transient do
- default_access_level false
+ default_access_level { false }
end
after(:build) do |protected_tag|
@@ -31,7 +31,7 @@ FactoryBot.define do
trait :maintainers_can_create do
transient do
- default_access_level false
+ default_access_level { false }
end
after(:build) do |protected_tag|
diff --git a/spec/factories/releases.rb b/spec/factories/releases.rb
index 34794f57284..2f77bb95ea3 100644
--- a/spec/factories/releases.rb
+++ b/spec/factories/releases.rb
@@ -2,17 +2,17 @@
FactoryBot.define do
factory :release do
- tag "v1.1.0"
- sha 'b83d6e391c22777fca1ed3012fce84f633d7fed0'
+ tag { "v1.1.0" }
+ sha { 'b83d6e391c22777fca1ed3012fce84f633d7fed0' }
name { tag }
- description "Awesome release"
+ description { "Awesome release" }
project
author
released_at { Time.zone.parse('2018-10-20T18:00:00Z') }
trait :legacy do
- sha nil
- author nil
+ sha { nil }
+ author { nil }
end
end
end
diff --git a/spec/factories/remote_mirrors.rb b/spec/factories/remote_mirrors.rb
index ff1d751c86c..124c0510cab 100644
--- a/spec/factories/remote_mirrors.rb
+++ b/spec/factories/remote_mirrors.rb
@@ -3,6 +3,6 @@
FactoryBot.define do
factory :remote_mirror, class: 'RemoteMirror' do
association :project, :repository
- url "http://foo:bar@test.com"
+ url { "http://foo:bar@test.com" }
end
end
diff --git a/spec/factories/repository_languages.rb b/spec/factories/repository_languages.rb
index b2b17ebbce2..884298033ac 100644
--- a/spec/factories/repository_languages.rb
+++ b/spec/factories/repository_languages.rb
@@ -4,6 +4,6 @@ FactoryBot.define do
factory :repository_language do
project
programming_language
- share 98.5
+ share { 98.5 }
end
end
diff --git a/spec/factories/resource_label_events.rb b/spec/factories/resource_label_events.rb
index 739ba901052..b59da465fc3 100644
--- a/spec/factories/resource_label_events.rb
+++ b/spec/factories/resource_label_events.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :resource_label_event do
- action :add
+ action { :add }
label
user { issuable&.author || create(:user) }
diff --git a/spec/factories/services.rb b/spec/factories/services.rb
index e063b888d77..f9c77dbf87f 100644
--- a/spec/factories/services.rb
+++ b/spec/factories/services.rb
@@ -3,54 +3,58 @@
FactoryBot.define do
factory :service do
project
- type 'Service'
+ type { 'Service' }
end
factory :custom_issue_tracker_service, class: CustomIssueTrackerService do
project
- active true
+ active { true }
issue_tracker
end
factory :emails_on_push_service do
project
- type 'EmailsOnPushService'
- active true
- push_events true
- tag_push_events true
- properties(
- recipients: 'test@example.com',
- disable_diffs: true,
- send_from_committer_email: true
- )
+ type { 'EmailsOnPushService' }
+ active { true }
+ push_events { true }
+ tag_push_events { true }
+ properties do
+ {
+ recipients: 'test@example.com',
+ disable_diffs: true,
+ send_from_committer_email: true
+ }
+ end
end
factory :mock_deployment_service do
project
- type 'MockDeploymentService'
- active true
+ type { 'MockDeploymentService' }
+ active { true }
end
factory :prometheus_service do
project
- active true
- properties({
- api_url: 'https://prometheus.example.com/',
- manual_configuration: true
- })
+ active { true }
+ properties do
+ {
+ api_url: 'https://prometheus.example.com/',
+ manual_configuration: true
+ }
+ end
end
factory :jira_service do
project
- active true
+ active { true }
transient do
- create_data true
- url 'https://jira.example.com'
- api_url nil
- username 'jira_username'
- password 'jira_password'
- jira_issue_transition_id '56-1'
+ create_data { true }
+ url { 'https://jira.example.com' }
+ api_url { nil }
+ username { 'jira_username' }
+ password { 'jira_password' }
+ jira_issue_transition_id { '56-1' }
end
after(:build) do |service, evaluator|
@@ -65,34 +69,34 @@ FactoryBot.define do
factory :bugzilla_service do
project
- active true
+ active { true }
issue_tracker
end
factory :redmine_service do
project
- active true
+ active { true }
issue_tracker
end
factory :youtrack_service do
project
- active true
+ active { true }
issue_tracker
end
factory :gitlab_issue_tracker_service do
project
- active true
+ active { true }
issue_tracker
end
trait :issue_tracker do
transient do
- create_data true
- project_url 'http://issuetracker.example.com'
- issues_url 'http://issues.example.com/issues/:id'
- new_issue_url 'http://new-issue.example.com'
+ create_data { true }
+ project_url { 'http://issuetracker.example.com' }
+ issues_url { 'http://issues.example.com/issues/:id' }
+ new_issue_url { 'http://new-issue.example.com' }
end
after(:build) do |service, evaluator|
@@ -105,29 +109,29 @@ FactoryBot.define do
end
trait :jira_cloud_service do
- url 'https://mysite.atlassian.net'
- username 'jira_user'
- password 'my-secret-password'
+ url { 'https://mysite.atlassian.net' }
+ username { 'jira_user' }
+ password { 'my-secret-password' }
end
factory :hipchat_service do
project
- type 'HipchatService'
- token 'test_token'
+ type { 'HipchatService' }
+ token { 'test_token' }
end
# this is for testing storing values inside properties, which is deprecated and will be removed in
# https://gitlab.com/gitlab-org/gitlab/issues/29404
trait :without_properties_callback do
- jira_tracker_data nil
- issue_tracker_data nil
- create_data false
+ jira_tracker_data { nil }
+ issue_tracker_data { nil }
+ create_data { false }
after(:build) do |service|
IssueTrackerService.skip_callback(:validation, :before, :handle_properties)
end
- to_create { |instance| instance.save(validate: false)}
+ to_create { |instance| instance.save(validate: false) }
after(:create) do
IssueTrackerService.set_callback(:validation, :before, :handle_properties)
diff --git a/spec/factories/shards.rb b/spec/factories/shards.rb
index c30a38180e8..357d3bfbfa1 100644
--- a/spec/factories/shards.rb
+++ b/spec/factories/shards.rb
@@ -2,6 +2,6 @@
FactoryBot.define do
factory :shard do
- name "default"
+ name { "default" }
end
end
diff --git a/spec/factories/snippets.rb b/spec/factories/snippets.rb
index 9c3a0fbe9b3..ede071ae70c 100644
--- a/spec/factories/snippets.rb
+++ b/spec/factories/snippets.rb
@@ -9,15 +9,15 @@ FactoryBot.define do
file_name { generate(:filename) }
trait :public do
- visibility_level Snippet::PUBLIC
+ visibility_level { Snippet::PUBLIC }
end
trait :internal do
- visibility_level Snippet::INTERNAL
+ visibility_level { Snippet::INTERNAL }
end
trait :private do
- visibility_level Snippet::PRIVATE
+ visibility_level { Snippet::PRIVATE }
end
end
diff --git a/spec/factories/spam_logs.rb b/spec/factories/spam_logs.rb
index 42a856832e7..ec4454cac57 100644
--- a/spec/factories/spam_logs.rb
+++ b/spec/factories/spam_logs.rb
@@ -4,7 +4,7 @@ FactoryBot.define do
factory :spam_log do
user
sequence(:source_ip) { |n| "42.42.42.#{n % 255}" }
- noteable_type 'Issue'
+ noteable_type { 'Issue' }
sequence(:title) { |n| "Spam title #{n}" }
description { "Spam description\nwith\nmultiple\nlines" }
end
diff --git a/spec/factories/suggestions.rb b/spec/factories/suggestions.rb
index b1427e0211f..420c59df40e 100644
--- a/spec/factories/suggestions.rb
+++ b/spec/factories/suggestions.rb
@@ -2,18 +2,18 @@
FactoryBot.define do
factory :suggestion do
- relative_order 0
+ relative_order { 0 }
association :note, factory: :diff_note_on_merge_request
- from_content " vars = {\n"
- to_content " vars = [\n"
+ from_content { " vars = {\n" }
+ to_content { " vars = [\n" }
trait :unappliable do
- from_content "foo"
- to_content "foo"
+ from_content { "foo" }
+ to_content { "foo" }
end
trait :applied do
- applied true
+ applied { true }
commit_id { RepoHelpers.sample_commit.id }
end
diff --git a/spec/factories/system_note_metadata.rb b/spec/factories/system_note_metadata.rb
index 8cd4b77799c..56941edba1f 100644
--- a/spec/factories/system_note_metadata.rb
+++ b/spec/factories/system_note_metadata.rb
@@ -3,6 +3,6 @@
FactoryBot.define do
factory :system_note_metadata do
note
- action 'merge'
+ action { 'merge' }
end
end
diff --git a/spec/factories/term_agreements.rb b/spec/factories/term_agreements.rb
index b7e259bd44b..150948df044 100644
--- a/spec/factories/term_agreements.rb
+++ b/spec/factories/term_agreements.rb
@@ -7,10 +7,10 @@ FactoryBot.define do
end
trait :declined do
- accepted false
+ accepted { false }
end
trait :accepted do
- accepted true
+ accepted { true }
end
end
diff --git a/spec/factories/terms.rb b/spec/factories/terms.rb
index b890261d293..b98a2453f7e 100644
--- a/spec/factories/terms.rb
+++ b/spec/factories/terms.rb
@@ -2,6 +2,6 @@
FactoryBot.define do
factory :term, class: ApplicationSetting::Term do
- terms "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
+ terms { "Lorem ipsum dolor sit amet, consectetur adipiscing elit." }
end
end
diff --git a/spec/factories/timelogs.rb b/spec/factories/timelogs.rb
index 056a8833c46..5d34acc635d 100644
--- a/spec/factories/timelogs.rb
+++ b/spec/factories/timelogs.rb
@@ -4,7 +4,7 @@
FactoryBot.define do
factory :timelog do
- time_spent 3600
+ time_spent { 3600 }
issue
user { issue.project.creator }
end
diff --git a/spec/factories/todos.rb b/spec/factories/todos.rb
index 2ff024112a4..bb91fc9ac8e 100644
--- a/spec/factories/todos.rb
+++ b/spec/factories/todos.rb
@@ -38,11 +38,11 @@ FactoryBot.define do
end
trait :pending do
- state :pending
+ state { :pending }
end
trait :done do
- state :done
+ state { :done }
end
end
@@ -52,6 +52,6 @@ FactoryBot.define do
user
action { Todo::ASSIGNED }
commit_id { RepoHelpers.sample_commit.id }
- target_type "Commit"
+ target_type { "Commit" }
end
end
diff --git a/spec/factories/u2f_registrations.rb b/spec/factories/u2f_registrations.rb
index c968468834b..7017b0ee9e7 100644
--- a/spec/factories/u2f_registrations.rb
+++ b/spec/factories/u2f_registrations.rb
@@ -5,6 +5,6 @@ FactoryBot.define do
certificate { FFaker::BaconIpsum.characters(728) }
key_handle { FFaker::BaconIpsum.characters(86) }
public_key { FFaker::BaconIpsum.characters(88) }
- counter 0
+ counter { 0 }
end
end
diff --git a/spec/factories/uploads.rb b/spec/factories/uploads.rb
index 3f6326114c9..bfe02c6010b 100644
--- a/spec/factories/uploads.rb
+++ b/spec/factories/uploads.rb
@@ -4,28 +4,28 @@ FactoryBot.define do
factory :upload do
model { build(:project) }
size { 100.kilobytes }
- uploader "AvatarUploader"
- mount_point :avatar
- secret nil
- store ObjectStorage::Store::LOCAL
+ uploader { "AvatarUploader" }
+ mount_point { :avatar }
+ secret { nil }
+ store { ObjectStorage::Store::LOCAL }
# we should build a mount agnostic upload by default
transient do
- filename 'myfile.jpg'
+ filename { 'myfile.jpg' }
end
# this needs to comply with RecordsUpload::Concern#upload_path
path { File.join("uploads/-/system", model.class.underscore, mount_point.to_s, 'avatar.jpg') }
trait :personal_snippet_upload do
- uploader "PersonalFileUploader"
+ uploader { "PersonalFileUploader" }
path { File.join(secret, filename) }
model { build(:personal_snippet) }
secret { SecureRandom.hex }
end
trait :issuable_upload do
- uploader "FileUploader"
+ uploader { "FileUploader" }
path { File.join(secret, filename) }
secret { SecureRandom.hex }
end
@@ -38,27 +38,27 @@ FactoryBot.define do
end
trait :object_storage do
- store ObjectStorage::Store::REMOTE
+ store { ObjectStorage::Store::REMOTE }
end
trait :namespace_upload do
model { build(:group) }
path { File.join(secret, filename) }
- uploader "NamespaceFileUploader"
+ uploader { "NamespaceFileUploader" }
secret { SecureRandom.hex }
end
trait :favicon_upload do
model { build(:appearance) }
path { File.join(secret, filename) }
- uploader "FaviconUploader"
+ uploader { "FaviconUploader" }
secret { SecureRandom.hex }
end
trait :attachment_upload do
- mount_point :attachment
+ mount_point { :attachment }
model { build(:note) }
- uploader "AttachmentUploader"
+ uploader { "AttachmentUploader" }
end
end
end
diff --git a/spec/factories/user_agent_details.rb b/spec/factories/user_agent_details.rb
index 055aea50585..3185ded26ce 100644
--- a/spec/factories/user_agent_details.rb
+++ b/spec/factories/user_agent_details.rb
@@ -2,8 +2,8 @@
FactoryBot.define do
factory :user_agent_detail do
- ip_address '127.0.0.1'
- user_agent 'AppleWebKit/537.36'
+ ip_address { '127.0.0.1' }
+ user_agent { 'AppleWebKit/537.36' }
association :subject, factory: :issue
end
end
diff --git a/spec/factories/user_callouts.rb b/spec/factories/user_callouts.rb
index c4a217fd357..cedc6efd8d7 100644
--- a/spec/factories/user_callouts.rb
+++ b/spec/factories/user_callouts.rb
@@ -2,7 +2,7 @@
FactoryBot.define do
factory :user_callout do
- feature_name :gke_cluster_integration
+ feature_name { :gke_cluster_integration }
user
end
diff --git a/spec/factories/user_statuses.rb b/spec/factories/user_statuses.rb
index 9998ae9609c..dbed6031ce1 100644
--- a/spec/factories/user_statuses.rb
+++ b/spec/factories/user_statuses.rb
@@ -3,7 +3,7 @@
FactoryBot.define do
factory :user_status do
user
- emoji 'coffee'
- message 'I crave coffee'
+ emoji { 'coffee' }
+ message { 'I crave coffee' }
end
end
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
index 57e58513529..e3d20c1f46c 100644
--- a/spec/factories/users.rb
+++ b/spec/factories/users.rb
@@ -5,17 +5,17 @@ FactoryBot.define do
email { generate(:email) }
name { generate(:name) }
username { generate(:username) }
- password "12345678"
+ password { "12345678" }
confirmed_at { Time.now }
confirmation_token { nil }
- can_create_group true
+ can_create_group { true }
after(:stub) do |user|
user.notification_email = user.email
end
trait :admin do
- admin true
+ admin { true }
end
trait :blocked do
@@ -23,7 +23,7 @@ FactoryBot.define do
end
trait :external do
- external true
+ external { true }
end
trait :two_factor do
@@ -31,7 +31,7 @@ FactoryBot.define do
end
trait :ghost do
- ghost true
+ ghost { true }
after(:build) { |user, _| user.block! }
end
@@ -40,11 +40,11 @@ FactoryBot.define do
end
trait :with_sign_ins do
- sign_in_count 3
+ sign_in_count { 3 }
current_sign_in_at { Time.now }
last_sign_in_at { FFaker::Time.between(10.days.ago, 1.day.ago) }
- current_sign_in_ip '127.0.0.1'
- last_sign_in_ip '127.0.0.1'
+ current_sign_in_ip { '127.0.0.1' }
+ last_sign_in_ip { '127.0.0.1' }
end
trait :two_factor_via_otp do
@@ -57,7 +57,7 @@ FactoryBot.define do
end
trait :two_factor_via_u2f do
- transient { registrations_count 5 }
+ transient { registrations_count { 5 } }
after(:create) do |user, evaluator|
create_list(:u2f_registration, evaluator.registrations_count, user: user)
@@ -65,7 +65,7 @@ FactoryBot.define do
end
trait :readme do
- project_view :readme
+ project_view { :readme }
end
trait :commit_email do
@@ -77,7 +77,7 @@ FactoryBot.define do
end
transient do
- developer_projects []
+ developer_projects { [] }
end
after(:create) do |user, evaluator|
@@ -88,8 +88,8 @@ FactoryBot.define do
factory :omniauth_user do
transient do
- extern_uid '123456'
- provider 'ldapmain'
+ extern_uid { '123456' }
+ provider { 'ldapmain' }
end
after(:create) do |user, evaluator|
diff --git a/spec/factories/web_hook_log.rb b/spec/factories/web_hook_log.rb
index 5750af85662..65b91b7183a 100644
--- a/spec/factories/web_hook_log.rb
+++ b/spec/factories/web_hook_log.rb
@@ -3,14 +3,20 @@
FactoryBot.define do
factory :web_hook_log do
web_hook factory: :project_hook
- trigger 'push_hooks'
+ trigger { 'push_hooks' }
url { generate(:url) }
- request_headers {}
- request_data {}
- response_headers {}
- response_body ''
- response_status '200'
- execution_duration 2.0
- internal_error_message nil
+ request_headers do
+ {}
+ end
+ request_data do
+ {}
+ end
+ response_headers do
+ {}
+ end
+ response_body { '' }
+ response_status { '200' }
+ execution_duration { 2.0 }
+ internal_error_message { nil }
end
end
diff --git a/spec/factories/wiki_directories.rb b/spec/factories/wiki_directories.rb
index de23cf110b5..afa003617c4 100644
--- a/spec/factories/wiki_directories.rb
+++ b/spec/factories/wiki_directories.rb
@@ -4,7 +4,7 @@ FactoryBot.define do
factory :wiki_directory do
skip_create
- slug '/path_up_to/dir'
+ slug { '/path_up_to/dir' }
initialize_with { new(slug) }
end
end
diff --git a/spec/graphql/types/extended_issue_type_spec.rb b/spec/graphql/types/extended_issue_type_spec.rb
new file mode 100644
index 00000000000..047f4a90d54
--- /dev/null
+++ b/spec/graphql/types/extended_issue_type_spec.rb
@@ -0,0 +1,19 @@
+require 'spec_helper'
+
+describe GitlabSchema.types['ExtendedIssue'] do
+ it { expect(described_class).to expose_permissions_using(Types::PermissionTypes::Issue) }
+
+ it { expect(described_class.graphql_name).to eq('ExtendedIssue') }
+
+ it { expect(described_class).to require_graphql_authorizations(:read_issue) }
+
+ it { expect(described_class.interfaces).to include(Types::Notes::NoteableType.to_graphql) }
+
+ it 'has specific fields' do
+ fields = Types::IssueType.fields.keys + [:subscribed]
+
+ fields.each do |field_name|
+ expect(described_class).to have_graphql_field(field_name)
+ end
+ end
+end
diff --git a/spec/graphql/types/issue_type_spec.rb b/spec/graphql/types/issue_type_spec.rb
index 734e5af3cd8..1621319e618 100644
--- a/spec/graphql/types/issue_type_spec.rb
+++ b/spec/graphql/types/issue_type_spec.rb
@@ -10,8 +10,9 @@ describe GitlabSchema.types['Issue'] do
it { expect(described_class.interfaces).to include(Types::Notes::NoteableType.to_graphql) }
it 'has specific fields' do
- fields = %i[title_html description_html relative_position web_path web_url
- reference]
+ fields = %i[iid title description state reference author assignees participants labels epic milestone due_date
+ confidential discussion_locked upvotes downvotes user_notes_count web_path web_url relative_position
+ time_estimate total_time_spent closed_at created_at updated_at task_completion_status]
fields.each do |field_name|
expect(described_class).to have_graphql_field(field_name)
diff --git a/spec/graphql/types/project_type_spec.rb b/spec/graphql/types/project_type_spec.rb
index 69fbc72bdf5..739e48044d1 100644
--- a/spec/graphql/types/project_type_spec.rb
+++ b/spec/graphql/types/project_type_spec.rb
@@ -25,4 +25,22 @@ describe GitlabSchema.types['Project'] do
is_expected.to have_graphql_fields(*expected_fields)
end
+
+ describe 'issue field' do
+ subject { described_class.fields['issue'] }
+
+ it 'returns issue' do
+ is_expected.to have_graphql_type(Types::ExtendedIssueType)
+ is_expected.to have_graphql_resolver(Resolvers::IssuesResolver.single)
+ end
+ end
+
+ describe 'issues field' do
+ subject { described_class.fields['issues'] }
+
+ it 'returns issue' do
+ is_expected.to have_graphql_type(Types::IssueType.connection_type)
+ is_expected.to have_graphql_resolver(Resolvers::IssuesResolver)
+ end
+ end
end
diff --git a/spec/javascripts/flash_spec.js b/spec/javascripts/flash_spec.js
index bd8608b6bac..28fa87ac097 100644
--- a/spec/javascripts/flash_spec.js
+++ b/spec/javascripts/flash_spec.js
@@ -176,7 +176,7 @@ describe('Flash', () => {
it('removes element after clicking', () => {
flash('test', 'alert', document, null, false, true);
- document.querySelector('.flash-alert').click();
+ document.querySelector('.flash-alert .js-close-icon').click();
expect(document.querySelector('.flash-alert')).toBeNull();
@@ -210,7 +210,13 @@ describe('Flash', () => {
describe('removeFlashClickListener', () => {
beforeEach(() => {
- document.body.innerHTML += '<div class="flash-container"><div class="flash"></div></div>';
+ document.body.innerHTML += `
+ <div class="flash-container">
+ <div class="flash">
+ <div class="close-icon js-close-icon"></div>
+ </div>
+ </div>
+ `;
});
it('removes global flash on click', done => {
@@ -218,7 +224,7 @@ describe('Flash', () => {
removeFlashClickListener(flashEl, false);
- flashEl.click();
+ flashEl.querySelector('.js-close-icon').click();
setTimeout(() => {
expect(document.querySelector('.flash')).toBeNull();
diff --git a/spec/presenters/issue_presenter_spec.rb b/spec/presenters/issue_presenter_spec.rb
index 8e24559341b..1eb674d1f8f 100644
--- a/spec/presenters/issue_presenter_spec.rb
+++ b/spec/presenters/issue_presenter_spec.rb
@@ -17,13 +17,27 @@ describe IssuePresenter do
describe '#web_url' do
it 'returns correct path' do
- expect(presenter.web_url).to eq "http://localhost/#{group.name}/#{project.name}/issues/#{issue.iid}"
+ expect(presenter.web_url).to eq("http://localhost/#{group.name}/#{project.name}/issues/#{issue.iid}")
+ end
+ end
+
+ describe '#subscribed?' do
+ subject { presenter.subscribed? }
+
+ it 'returns not subscribed' do
+ is_expected.to be(false)
+ end
+
+ it 'returns subscribed' do
+ create(:subscription, user: user, project: project, subscribable: issue, subscribed: true)
+
+ is_expected.to be(true)
end
end
describe '#issue_path' do
it 'returns correct path' do
- expect(presenter.issue_path).to eq "/#{group.name}/#{project.name}/issues/#{issue.iid}"
+ expect(presenter.issue_path).to eq("/#{group.name}/#{project.name}/issues/#{issue.iid}")
end
end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 364c033900f..ebfdc1bab44 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -10,6 +10,7 @@ require 'rspec/rails'
require 'shoulda/matchers'
require 'rspec/retry'
require 'rspec-parameterized'
+require "test_prof/recipes/rspec/let_it_be"
rspec_profiling_is_configured =
ENV['RSPEC_PROFILING_POSTGRES_URL'].present? ||