summaryrefslogtreecommitdiff
path: root/spec/factories
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-10-21 07:08:36 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-10-21 07:08:36 +0000
commit48aff82709769b098321c738f3444b9bdaa694c6 (patch)
treee00c7c43e2d9b603a5a6af576b1685e400410dee /spec/factories
parent879f5329ee916a948223f8f43d77fba4da6cd028 (diff)
downloadgitlab-ce-48aff82709769b098321c738f3444b9bdaa694c6.tar.gz
Add latest changes from gitlab-org/gitlab@13-5-stable-eev13.5.0-rc42
Diffstat (limited to 'spec/factories')
-rw-r--r--spec/factories/alert_management/alerts.rb22
-rw-r--r--spec/factories/alert_management/http_integrations.rb14
-rw-r--r--spec/factories/alerting/alert.rb25
-rw-r--r--spec/factories/authentication_event.rb11
-rw-r--r--spec/factories/bulk_import.rb8
-rw-r--r--spec/factories/bulk_import/entities.rb21
-rw-r--r--spec/factories/ci/bridge.rb13
-rw-r--r--spec/factories/ci/build_pending_states.rb2
-rw-r--r--spec/factories/ci/build_trace_chunks.rb13
-rw-r--r--spec/factories/ci/builds.rb3
-rw-r--r--spec/factories/ci/deleted_object.rb9
-rw-r--r--spec/factories/ci/pipelines.rb18
-rw-r--r--spec/factories/ci/test_case.rb2
-rw-r--r--spec/factories/design_management/designs.rb2
-rw-r--r--spec/factories/events.rb11
-rw-r--r--spec/factories/group_import_states.rb1
-rw-r--r--spec/factories/groups.rb4
-rw-r--r--spec/factories/instance_statistics/measurement.rb8
-rw-r--r--spec/factories/issue_email_participants.rb8
-rw-r--r--spec/factories/merge_request_diffs.rb8
-rw-r--r--spec/factories/merge_requests.rb6
-rw-r--r--spec/factories/namespaces.rb8
-rw-r--r--spec/factories/packages.rb164
-rw-r--r--spec/factories/packages/package_file.rb165
-rw-r--r--spec/factories/pages_deployments.rb9
-rw-r--r--spec/factories/project_repository_storage_moves.rb1
-rw-r--r--spec/factories/project_tracing_settings.rb8
-rw-r--r--spec/factories/projects.rb8
-rw-r--r--spec/factories/prometheus_alert.rb4
-rw-r--r--spec/factories/prometheus_metrics.rb1
-rw-r--r--spec/factories/resource_weight_events.rb8
-rw-r--r--spec/factories/services.rb6
-rw-r--r--spec/factories/terraform/state.rb10
-rw-r--r--spec/factories/terraform/state_version.rb8
-rw-r--r--spec/factories/todos.rb4
-rw-r--r--spec/factories/usage_data.rb23
-rw-r--r--spec/factories/users.rb8
-rw-r--r--spec/factories/wiki_pages.rb3
-rw-r--r--spec/factories/wikis.rb6
39 files changed, 416 insertions, 237 deletions
diff --git a/spec/factories/alert_management/alerts.rb b/spec/factories/alert_management/alerts.rb
index d931947fff1..e36e4c38013 100644
--- a/spec/factories/alert_management/alerts.rb
+++ b/spec/factories/alert_management/alerts.rb
@@ -56,22 +56,22 @@ FactoryBot.define do
end
trait :triggered do
- status { AlertManagement::Alert::STATUSES[:triggered] }
+ status { AlertManagement::Alert.status_value(:triggered) }
without_ended_at
end
trait :acknowledged do
- status { AlertManagement::Alert::STATUSES[:acknowledged] }
+ status { AlertManagement::Alert.status_value(:acknowledged) }
without_ended_at
end
trait :resolved do
- status { AlertManagement::Alert::STATUSES[:resolved] }
+ status { AlertManagement::Alert.status_value(:resolved) }
with_ended_at
end
trait :ignored do
- status { AlertManagement::Alert::STATUSES[:ignored] }
+ status { AlertManagement::Alert.status_value(:ignored) }
without_ended_at
end
@@ -100,7 +100,7 @@ FactoryBot.define do
end
trait :prometheus do
- monitoring_tool { Gitlab::AlertManagement::AlertParams::MONITORING_TOOLS[:prometheus] }
+ monitoring_tool { Gitlab::AlertManagement::Payload::MONITORING_TOOLS[:prometheus] }
payload do
{
annotations: {
@@ -123,5 +123,17 @@ FactoryBot.define do
with_description
low
end
+
+ trait :from_payload do
+ after(:build) do |alert|
+ alert_params = ::Gitlab::AlertManagement::Payload.parse(
+ alert.project,
+ alert.payload,
+ monitoring_tool: alert.monitoring_tool
+ ).alert_params
+
+ alert.assign_attributes(alert_params)
+ end
+ end
end
end
diff --git a/spec/factories/alert_management/http_integrations.rb b/spec/factories/alert_management/http_integrations.rb
new file mode 100644
index 00000000000..9311cb3e114
--- /dev/null
+++ b/spec/factories/alert_management/http_integrations.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :alert_management_http_integration, class: 'AlertManagement::HttpIntegration' do
+ project
+ active { true }
+ name { 'DataDog' }
+ endpoint_identifier { SecureRandom.hex(4) }
+
+ trait :inactive do
+ active { false }
+ end
+ end
+end
diff --git a/spec/factories/alerting/alert.rb b/spec/factories/alerting/alert.rb
deleted file mode 100644
index 285bb14efa2..00000000000
--- a/spec/factories/alerting/alert.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# frozen_string_literal: true
-
-FactoryBot.define do
- factory :alerting_alert, class: 'Gitlab::Alerting::Alert' do
- project
- payload { {} }
-
- transient do
- metric_id { nil }
-
- after(:build) do |alert, evaluator|
- unless alert.payload.key?('startsAt')
- alert.payload['startsAt'] = Time.now.rfc3339
- end
-
- if metric_id = evaluator.metric_id
- alert.payload['labels'] ||= {}
- alert.payload['labels']['gitlab_alert_id'] = metric_id.to_s
- end
- end
- end
-
- skip_create
- end
-end
diff --git a/spec/factories/authentication_event.rb b/spec/factories/authentication_event.rb
new file mode 100644
index 00000000000..ff539c6f5c4
--- /dev/null
+++ b/spec/factories/authentication_event.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :authentication_event do
+ user
+ provider { :standard }
+ user_name { 'Jane Doe' }
+ ip_address { '127.0.0.1' }
+ result { :failed }
+ end
+end
diff --git a/spec/factories/bulk_import.rb b/spec/factories/bulk_import.rb
new file mode 100644
index 00000000000..0231fe7cfef
--- /dev/null
+++ b/spec/factories/bulk_import.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :bulk_import, class: 'BulkImport' do
+ user
+ source_type { :gitlab }
+ end
+end
diff --git a/spec/factories/bulk_import/entities.rb b/spec/factories/bulk_import/entities.rb
new file mode 100644
index 00000000000..3bf6af92d00
--- /dev/null
+++ b/spec/factories/bulk_import/entities.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :bulk_import_entity, class: 'BulkImports::Entity' do
+ bulk_import
+
+ source_type { :group_entity }
+ sequence(:source_full_path) { |n| "source-path-#{n}" }
+
+ sequence(:destination_namespace) { |n| "destination-path-#{n}" }
+ destination_name { 'Imported Entity' }
+
+ trait(:group_entity) do
+ source_type { :group_entity }
+ end
+
+ trait(:project_entity) do
+ source_type { :project_entity }
+ end
+ end
+end
diff --git a/spec/factories/ci/bridge.rb b/spec/factories/ci/bridge.rb
index 5a33a30921b..7727a468633 100644
--- a/spec/factories/ci/bridge.rb
+++ b/spec/factories/ci/bridge.rb
@@ -40,6 +40,10 @@ FactoryBot.define do
end
end
+ trait :created do
+ status { 'created' }
+ end
+
trait :started do
started_at { '2013-10-29 09:51:28 CET' }
end
@@ -62,5 +66,14 @@ FactoryBot.define do
trait :strategy_depend do
options { { trigger: { strategy: 'depend' } } }
end
+
+ trait :manual do
+ status { 'manual' }
+ self.when { 'manual' }
+ end
+
+ trait :playable do
+ manual
+ end
end
end
diff --git a/spec/factories/ci/build_pending_states.rb b/spec/factories/ci/build_pending_states.rb
index 765b7f005b9..eddd74b1068 100644
--- a/spec/factories/ci/build_pending_states.rb
+++ b/spec/factories/ci/build_pending_states.rb
@@ -3,7 +3,7 @@
FactoryBot.define do
factory :ci_build_pending_state, class: 'Ci::BuildPendingState' do
build factory: :ci_build
- trace_checksum { 'crc32:12345678' }
+ trace_checksum { 'crc32:bc614e' }
state { 'success' }
end
end
diff --git a/spec/factories/ci/build_trace_chunks.rb b/spec/factories/ci/build_trace_chunks.rb
index 7c348f4b7e4..d996b41b648 100644
--- a/spec/factories/ci/build_trace_chunks.rb
+++ b/spec/factories/ci/build_trace_chunks.rb
@@ -53,5 +53,18 @@ FactoryBot.define do
trait :fog_without_data do
data_store { :fog }
end
+
+ trait :persisted do
+ data_store { :database}
+
+ transient do
+ initial_data { 'test data' }
+ end
+
+ after(:build) do |chunk, evaluator|
+ Ci::BuildTraceChunks::Database.new.set_data(chunk, evaluator.initial_data)
+ chunk.checksum = chunk.class.crc32(evaluator.initial_data)
+ end
+ end
end
end
diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb
index b3815b53c2b..73920b76025 100644
--- a/spec/factories/ci/builds.rb
+++ b/spec/factories/ci/builds.rb
@@ -384,7 +384,8 @@ FactoryBot.define do
key: 'cache_key',
untracked: false,
paths: ['vendor/*'],
- policy: 'pull-push'
+ policy: 'pull-push',
+ when: 'on_success'
}
}
end
diff --git a/spec/factories/ci/deleted_object.rb b/spec/factories/ci/deleted_object.rb
new file mode 100644
index 00000000000..c91d259ffeb
--- /dev/null
+++ b/spec/factories/ci/deleted_object.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :ci_deleted_object, class: 'Ci::DeletedObject' do
+ pick_up_at { Time.current }
+ store_dir { SecureRandom.uuid }
+ file { fixture_file_upload(Rails.root.join('spec/fixtures/ci_build_artifacts.zip'), 'application/zip') }
+ end
+end
diff --git a/spec/factories/ci/pipelines.rb b/spec/factories/ci/pipelines.rb
index 6174bfbfbb7..4fa5dde4eff 100644
--- a/spec/factories/ci/pipelines.rb
+++ b/spec/factories/ci/pipelines.rb
@@ -15,15 +15,31 @@ FactoryBot.define do
# on pipeline factories to avoid circular references
transient { head_pipeline_of { nil } }
+ transient { child_of { nil } }
+
+ after(:build) do |pipeline, evaluator|
+ if evaluator.child_of
+ pipeline.project = evaluator.child_of.project
+ pipeline.source = :parent_pipeline
+ end
+ end
+
after(:create) do |pipeline, evaluator|
merge_request = evaluator.head_pipeline_of
merge_request&.update!(head_pipeline: pipeline)
+
+ if evaluator.child_of
+ bridge = create(:ci_bridge, pipeline: evaluator.child_of)
+ create(:ci_sources_pipeline,
+ source_job: bridge,
+ pipeline: pipeline)
+ end
end
factory :ci_pipeline do
transient { ci_ref_presence { true } }
- after(:build) do |pipeline, evaluator|
+ before(:create) do |pipeline, evaluator|
pipeline.ensure_ci_ref! if evaluator.ci_ref_presence && pipeline.ci_ref_id.nil?
end
diff --git a/spec/factories/ci/test_case.rb b/spec/factories/ci/test_case.rb
index 0639aac566a..7f99f0e123e 100644
--- a/spec/factories/ci/test_case.rb
+++ b/spec/factories/ci/test_case.rb
@@ -2,6 +2,7 @@
FactoryBot.define do
factory :test_case, class: 'Gitlab::Ci::Reports::TestCase' do
+ suite_name { "rspec" }
name { "test-1" }
classname { "trace" }
file { "spec/trace_spec.rb" }
@@ -25,6 +26,7 @@ FactoryBot.define do
initialize_with do
new(
+ suite_name: suite_name,
name: name,
classname: classname,
file: file,
diff --git a/spec/factories/design_management/designs.rb b/spec/factories/design_management/designs.rb
index 66c33c9ece0..38d0545483c 100644
--- a/spec/factories/design_management/designs.rb
+++ b/spec/factories/design_management/designs.rb
@@ -75,7 +75,7 @@ FactoryBot.define do
end
# Use this trait if you want versions in a particular history, but don't
- # want to pay for gitlay calls.
+ # want to pay for gitaly calls.
trait :with_versions do
transient do
deleted { false }
diff --git a/spec/factories/events.rb b/spec/factories/events.rb
index ecbda5fbfd3..6c9f1ba0137 100644
--- a/spec/factories/events.rb
+++ b/spec/factories/events.rb
@@ -18,6 +18,7 @@ FactoryBot.define do
trait(:destroyed) { action { :destroyed } }
trait(:expired) { action { :expired } }
trait(:archived) { action { :archived } }
+ trait(:approved) { action { :approved } }
factory :closed_issue_event do
action { :closed }
@@ -55,6 +56,16 @@ FactoryBot.define do
action { :created }
target { design }
end
+
+ factory :project_created_event do
+ project factory: :project
+ action { :created }
+ end
+
+ factory :project_imported_event do
+ project factory: [:project, :with_import_url]
+ action { :created }
+ end
end
factory :push_event, class: 'PushEvent' do
diff --git a/spec/factories/group_import_states.rb b/spec/factories/group_import_states.rb
index 0b491d444fa..47d4b480b12 100644
--- a/spec/factories/group_import_states.rb
+++ b/spec/factories/group_import_states.rb
@@ -3,6 +3,7 @@
FactoryBot.define do
factory :group_import_state, class: 'GroupImportState', traits: %i[created] do
association :group, factory: :group
+ association :user, factory: :user
trait :created do
status { 0 }
diff --git a/spec/factories/groups.rb b/spec/factories/groups.rb
index 60d427dde00..17db69e4699 100644
--- a/spec/factories/groups.rb
+++ b/spec/factories/groups.rb
@@ -14,6 +14,8 @@ FactoryBot.define do
# https://gitlab.com/gitlab-org/gitlab-foss/issues/43292
raise "Don't set owner for groups, use `group.add_owner(user)` instead"
end
+
+ create(:namespace_settings, namespace: group)
end
trait :public do
@@ -21,7 +23,7 @@ FactoryBot.define do
end
trait :internal do
- visibility_level {Gitlab::VisibilityLevel::INTERNAL }
+ visibility_level { Gitlab::VisibilityLevel::INTERNAL }
end
trait :private do
diff --git a/spec/factories/instance_statistics/measurement.rb b/spec/factories/instance_statistics/measurement.rb
index fb180c23214..f9398cd3061 100644
--- a/spec/factories/instance_statistics/measurement.rb
+++ b/spec/factories/instance_statistics/measurement.rb
@@ -13,5 +13,13 @@ FactoryBot.define do
trait :group_count do
identifier { :groups }
end
+
+ trait :pipelines_succeeded_count do
+ identifier { :pipelines_succeeded }
+ end
+
+ trait :pipelines_skipped_count do
+ identifier { :pipelines_skipped }
+ end
end
end
diff --git a/spec/factories/issue_email_participants.rb b/spec/factories/issue_email_participants.rb
new file mode 100644
index 00000000000..730e224b01e
--- /dev/null
+++ b/spec/factories/issue_email_participants.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :issue_email_participant do
+ issue
+ email { generate(:email) }
+ end
+end
diff --git a/spec/factories/merge_request_diffs.rb b/spec/factories/merge_request_diffs.rb
index fdb7f52f3bd..481cabdae6d 100644
--- a/spec/factories/merge_request_diffs.rb
+++ b/spec/factories/merge_request_diffs.rb
@@ -2,13 +2,7 @@
FactoryBot.define do
factory :merge_request_diff do
- merge_request do
- build(:merge_request) do |merge_request|
- # MergeRequest should not create a MergeRequestDiff in the callback
- allow(merge_request).to receive(:ensure_merge_request_diff)
- end
- end
-
+ association :merge_request, factory: :merge_request_without_merge_request_diff
state { :collected }
commits_count { 1 }
diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb
index 6836d5d71f0..e5381071228 100644
--- a/spec/factories/merge_requests.rb
+++ b/spec/factories/merge_requests.rb
@@ -164,6 +164,10 @@ FactoryBot.define do
target_branch { generate(:branch) }
end
+ trait :unique_author do
+ author { association(:user) }
+ end
+
trait :with_coverage_reports do
after(:build) do |merge_request|
merge_request.head_pipeline = build(
@@ -286,5 +290,7 @@ FactoryBot.define do
merge_request.update!(labels: evaluator.labels)
end
end
+
+ factory :merge_request_without_merge_request_diff, class: 'MergeRequestWithoutMergeRequestDiff'
end
end
diff --git a/spec/factories/namespaces.rb b/spec/factories/namespaces.rb
index 0dcec086da9..0ec977b8234 100644
--- a/spec/factories/namespaces.rb
+++ b/spec/factories/namespaces.rb
@@ -63,5 +63,13 @@ FactoryBot.define do
)
end
end
+
+ trait :shared_runners_disabled do
+ shared_runners_enabled { false }
+ end
+
+ trait :allow_descendants_override_disabled_shared_runners do
+ allow_descendants_override_disabled_shared_runners { true }
+ end
end
end
diff --git a/spec/factories/packages.rb b/spec/factories/packages.rb
index 52b2a32cd3b..e2c5b000988 100644
--- a/spec/factories/packages.rb
+++ b/spec/factories/packages.rb
@@ -21,6 +21,10 @@ FactoryBot.define do
end
end
+ factory :debian_package do
+ package_type { :debian }
+ end
+
factory :npm_package do
sequence(:name) { |n| "@#{project.root_namespace.path}/package-#{n}"}
version { '1.0.0' }
@@ -91,6 +95,12 @@ FactoryBot.define do
end
end
+ factory :golang_package do
+ sequence(:name) { |n| "golang.org/x/pkg-#{n}"}
+ sequence(:version) { |n| "v1.0.#{n}" }
+ package_type { :golang }
+ end
+
factory :conan_package do
conan_metadatum
@@ -141,160 +151,6 @@ FactoryBot.define do
package
end
- factory :package_file, class: 'Packages::PackageFile' do
- package
-
- file_name { 'somefile.txt' }
-
- transient do
- file_fixture { 'spec/fixtures/packages/conan/recipe_files/conanfile.py' }
- end
-
- after(:build) do |package_file, evaluator|
- package_file.file = fixture_file_upload(evaluator.file_fixture)
- end
-
- factory :conan_package_file do
- package { create(:conan_package, without_package_files: true) }
-
- transient do
- without_loaded_metadatum { false }
- end
-
- trait(:conan_recipe_file) do
- after :create do |package_file, evaluator|
- unless evaluator.without_loaded_metadatum
- create :conan_file_metadatum, :recipe_file, package_file: package_file
- end
- end
-
- file_fixture { 'spec/fixtures/packages/conan/recipe_files/conanfile.py' }
- file_name { 'conanfile.py' }
- file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
- file_md5 { '12345abcde' }
- size { 400.kilobytes }
- end
-
- trait(:conan_recipe_manifest) do
- after :create do |package_file, evaluator|
- unless evaluator.without_loaded_metadatum
- create :conan_file_metadatum, :recipe_file, package_file: package_file
- end
- end
-
- file_fixture { 'spec/fixtures/packages/conan/recipe_files/conanmanifest.txt' }
- file_name { 'conanmanifest.txt' }
- file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
- file_md5 { '12345abcde' }
- size { 400.kilobytes }
- end
-
- trait(:conan_package_manifest) do
- after :create do |package_file, evaluator|
- unless evaluator.without_loaded_metadatum
- create :conan_file_metadatum, :package_file, package_file: package_file
- end
- end
-
- file_fixture { 'spec/fixtures/packages/conan/package_files/conanmanifest.txt' }
- file_name { 'conanmanifest.txt' }
- file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
- file_md5 { '12345abcde' }
- size { 400.kilobytes }
- end
-
- trait(:conan_package_info) do
- after :create do |package_file, evaluator|
- unless evaluator.without_loaded_metadatum
- create :conan_file_metadatum, :package_file, package_file: package_file
- end
- end
-
- file_fixture { 'spec/fixtures/packages/conan/package_files/conaninfo.txt' }
- file_name { 'conaninfo.txt' }
- file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
- file_md5 { '12345abcde' }
- size { 400.kilobytes }
- end
-
- trait(:conan_package) do
- after :create do |package_file, evaluator|
- unless evaluator.without_loaded_metadatum
- create :conan_file_metadatum, :package_file, package_file: package_file
- end
- end
-
- file_fixture { 'spec/fixtures/packages/conan/package_files/conan_package.tgz' }
- file_name { 'conan_package.tgz' }
- file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
- file_md5 { '12345abcde' }
- size { 400.kilobytes }
- end
- end
-
- trait(:jar) do
- file_fixture { 'spec/fixtures/packages/maven/my-app-1.0-20180724.124855-1.jar' }
- file_name { 'my-app-1.0-20180724.124855-1.jar' }
- file_sha1 { '4f0bfa298744d505383fbb57c554d4f5c12d88b3' }
- size { 100.kilobytes }
- end
-
- trait(:pom) do
- file_fixture { 'spec/fixtures/packages/maven/my-app-1.0-20180724.124855-1.pom' }
- file_name { 'my-app-1.0-20180724.124855-1.pom' }
- file_sha1 { '19c975abd49e5102ca6c74a619f21e0cf0351c57' }
- size { 200.kilobytes }
- end
-
- trait(:xml) do
- file_fixture { 'spec/fixtures/packages/maven/maven-metadata.xml' }
- file_name { 'maven-metadata.xml' }
- file_sha1 { '42b1bdc80de64953b6876f5a8c644f20204011b0' }
- size { 300.kilobytes }
- end
-
- trait(:npm) do
- file_fixture { 'spec/fixtures/packages/npm/foo-1.0.1.tgz' }
- file_name { 'foo-1.0.1.tgz' }
- file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
- verified_at { Date.current }
- verification_checksum { '4437b5775e61455588a7e5187a2e5c58c680694260bbe5501c235ec690d17f83' }
- size { 400.kilobytes }
- end
-
- trait(:nuget) do
- package
- file_fixture { 'spec/fixtures/packages/nuget/package.nupkg' }
- file_name { 'package.nupkg' }
- file_sha1 { '5fe852b2a6abd96c22c11fa1ff2fb19d9ce58b57' }
- size { 300.kilobytes }
- end
-
- trait(:pypi) do
- package
- file_fixture { 'spec/fixtures/packages/pypi/sample-project.tar.gz' }
- file_name { 'sample-project-1.0.0.tar.gz' }
- file_sha1 { '2c0cfbed075d3fae226f051f0cc771b533e01aff' }
- file_md5 { '0a7392d24f42f83068fa3767c5310052' }
- file_sha256 { '440e5e148a25331bbd7991575f7d54933c0ebf6cc735a18ee5066ac1381bb590' }
- size { 1149.bytes }
- end
-
- trait(:object_storage) do
- file_store { Packages::PackageFileUploader::Store::REMOTE }
- end
-
- trait(:checksummed) do
- verification_checksum { 'abc' }
- end
-
- trait(:checksum_failure) do
- verification_failure { 'Could not calculate the checksum' }
- end
-
- factory :package_file_with_file, traits: [:jar]
- end
-
factory :maven_metadatum, class: 'Packages::Maven::Metadatum' do
association :package, package_type: :maven
path { 'my/company/app/my-app/1.0-SNAPSHOT' }
diff --git a/spec/factories/packages/package_file.rb b/spec/factories/packages/package_file.rb
new file mode 100644
index 00000000000..bcca48fb086
--- /dev/null
+++ b/spec/factories/packages/package_file.rb
@@ -0,0 +1,165 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :package_file, class: 'Packages::PackageFile' do
+ package
+
+ file_name { 'somefile.txt' }
+
+ transient do
+ file_fixture { 'spec/fixtures/packages/conan/recipe_files/conanfile.py' }
+ end
+
+ after(:build) do |package_file, evaluator|
+ package_file.file = fixture_file_upload(evaluator.file_fixture)
+ end
+
+ factory :conan_package_file do
+ package { create(:conan_package, without_package_files: true) }
+
+ transient do
+ without_loaded_metadatum { false }
+ end
+
+ trait(:conan_recipe_file) do
+ after :create do |package_file, evaluator|
+ unless evaluator.without_loaded_metadatum
+ create :conan_file_metadatum, :recipe_file, package_file: package_file
+ end
+ end
+
+ file_fixture { 'spec/fixtures/packages/conan/recipe_files/conanfile.py' }
+ file_name { 'conanfile.py' }
+ file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
+ file_md5 { '12345abcde' }
+ size { 400.kilobytes }
+ end
+
+ trait(:conan_recipe_manifest) do
+ after :create do |package_file, evaluator|
+ unless evaluator.without_loaded_metadatum
+ create :conan_file_metadatum, :recipe_file, package_file: package_file
+ end
+ end
+
+ file_fixture { 'spec/fixtures/packages/conan/recipe_files/conanmanifest.txt' }
+ file_name { 'conanmanifest.txt' }
+ file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
+ file_md5 { '12345abcde' }
+ size { 400.kilobytes }
+ end
+
+ trait(:conan_package_manifest) do
+ after :create do |package_file, evaluator|
+ unless evaluator.without_loaded_metadatum
+ create :conan_file_metadatum, :package_file, package_file: package_file
+ end
+ end
+
+ file_fixture { 'spec/fixtures/packages/conan/package_files/conanmanifest.txt' }
+ file_name { 'conanmanifest.txt' }
+ file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
+ file_md5 { '12345abcde' }
+ size { 400.kilobytes }
+ end
+
+ trait(:conan_package_info) do
+ after :create do |package_file, evaluator|
+ unless evaluator.without_loaded_metadatum
+ create :conan_file_metadatum, :package_file, package_file: package_file
+ end
+ end
+
+ file_fixture { 'spec/fixtures/packages/conan/package_files/conaninfo.txt' }
+ file_name { 'conaninfo.txt' }
+ file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
+ file_md5 { '12345abcde' }
+ size { 400.kilobytes }
+ end
+
+ trait(:conan_package) do
+ after :create do |package_file, evaluator|
+ unless evaluator.without_loaded_metadatum
+ create :conan_file_metadatum, :package_file, package_file: package_file
+ end
+ end
+
+ file_fixture { 'spec/fixtures/packages/conan/package_files/conan_package.tgz' }
+ file_name { 'conan_package.tgz' }
+ file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
+ file_md5 { '12345abcde' }
+ size { 400.kilobytes }
+ end
+ end
+
+ trait(:jar) do
+ file_fixture { 'spec/fixtures/packages/maven/my-app-1.0-20180724.124855-1.jar' }
+ file_name { 'my-app-1.0-20180724.124855-1.jar' }
+ file_sha1 { '4f0bfa298744d505383fbb57c554d4f5c12d88b3' }
+ size { 100.kilobytes }
+ end
+
+ trait(:pom) do
+ file_fixture { 'spec/fixtures/packages/maven/my-app-1.0-20180724.124855-1.pom' }
+ file_name { 'my-app-1.0-20180724.124855-1.pom' }
+ file_sha1 { '19c975abd49e5102ca6c74a619f21e0cf0351c57' }
+ size { 200.kilobytes }
+ end
+
+ trait(:xml) do
+ file_fixture { 'spec/fixtures/packages/maven/maven-metadata.xml' }
+ file_name { 'maven-metadata.xml' }
+ file_sha1 { '42b1bdc80de64953b6876f5a8c644f20204011b0' }
+ size { 300.kilobytes }
+ end
+
+ trait(:npm) do
+ file_fixture { 'spec/fixtures/packages/npm/foo-1.0.1.tgz' }
+ file_name { 'foo-1.0.1.tgz' }
+ file_sha1 { 'be93151dc23ac34a82752444556fe79b32c7a1ad' }
+ verified_at { Date.current }
+ verification_checksum { '4437b5775e61455588a7e5187a2e5c58c680694260bbe5501c235ec690d17f83' }
+ size { 400.kilobytes }
+ end
+
+ trait(:nuget) do
+ package
+ file_fixture { 'spec/fixtures/packages/nuget/package.nupkg' }
+ file_name { 'package.nupkg' }
+ file_sha1 { '5fe852b2a6abd96c22c11fa1ff2fb19d9ce58b57' }
+ size { 300.kilobytes }
+ end
+
+ trait(:pypi) do
+ package
+ file_fixture { 'spec/fixtures/packages/pypi/sample-project.tar.gz' }
+ file_name { 'sample-project-1.0.0.tar.gz' }
+ file_sha1 { '2c0cfbed075d3fae226f051f0cc771b533e01aff' }
+ file_md5 { '0a7392d24f42f83068fa3767c5310052' }
+ file_sha256 { '440e5e148a25331bbd7991575f7d54933c0ebf6cc735a18ee5066ac1381bb590' }
+ size { 1149.bytes }
+ end
+
+ trait(:generic) do
+ package
+ file_fixture { 'spec/fixtures/packages/generic/myfile.tar.gz' }
+ file_name { "#{package.name}.tar.gz" }
+ file_sha256 { '440e5e148a25331bbd7991575f7d54933c0ebf6cc735a18ee5066ac1381bb590' }
+ size { 1149.bytes }
+ end
+
+ trait(:object_storage) do
+ file_store { Packages::PackageFileUploader::Store::REMOTE }
+ end
+
+ trait(:checksummed) do
+ verification_checksum { 'abc' }
+ end
+
+ trait(:checksum_failure) do
+ verification_failure { 'Could not calculate the checksum' }
+ end
+
+ factory :package_file_with_file, traits: [:jar]
+ end
+end
diff --git a/spec/factories/pages_deployments.rb b/spec/factories/pages_deployments.rb
index 1bea003d683..f57852a8f94 100644
--- a/spec/factories/pages_deployments.rb
+++ b/spec/factories/pages_deployments.rb
@@ -3,10 +3,11 @@
FactoryBot.define do
factory :pages_deployment, class: 'PagesDeployment' do
project
- file_store { ObjectStorage::SUPPORTED_STORES.first }
- size { 1.megabytes }
- # TODO: replace with proper file uploaded in https://gitlab.com/gitlab-org/gitlab/-/issues/245295
- file { "dummy string" }
+ after(:build) do |deployment, _evaluator|
+ deployment.file = fixture_file_upload(
+ Rails.root.join("spec/fixtures/pages.zip")
+ )
+ end
end
end
diff --git a/spec/factories/project_repository_storage_moves.rb b/spec/factories/project_repository_storage_moves.rb
index 69fb3af45e6..c0068de5f58 100644
--- a/spec/factories/project_repository_storage_moves.rb
+++ b/spec/factories/project_repository_storage_moves.rb
@@ -5,7 +5,6 @@ FactoryBot.define do
project
source_storage_name { 'default' }
- destination_storage_name { 'default' }
trait :scheduled do
state { ProjectRepositoryStorageMove.state_machines[:state].states[:scheduled].value }
diff --git a/spec/factories/project_tracing_settings.rb b/spec/factories/project_tracing_settings.rb
new file mode 100644
index 00000000000..05c1529c18e
--- /dev/null
+++ b/spec/factories/project_tracing_settings.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :project_tracing_setting do
+ project
+ external_url { 'https://example.com' }
+ end
+end
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index 147413557d6..87e4a8e355d 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -15,7 +15,7 @@ FactoryBot.define do
# Associations
namespace
- creator { group ? create(:user) : namespace&.owner }
+ creator { group ? association(:user) : namespace&.owner }
transient do
# Nest Project Feature attributes
@@ -285,6 +285,12 @@ FactoryBot.define do
end
end
+ trait :with_import_url do
+ import_finished
+
+ import_url { generate(:url) }
+ 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 } }
diff --git a/spec/factories/prometheus_alert.rb b/spec/factories/prometheus_alert.rb
index 18cf1a20e0d..ad3868c38ed 100644
--- a/spec/factories/prometheus_alert.rb
+++ b/spec/factories/prometheus_alert.rb
@@ -7,11 +7,11 @@ FactoryBot.define do
threshold { 1 }
environment do |alert|
- build(:environment, project: alert.project)
+ association(:environment, project: alert.project)
end
prometheus_metric do |alert|
- build(:prometheus_metric, project: alert.project)
+ association(:prometheus_metric, project: alert.project)
end
trait :with_runbook_url do
diff --git a/spec/factories/prometheus_metrics.rb b/spec/factories/prometheus_metrics.rb
index 83e3845f1c3..503d392a524 100644
--- a/spec/factories/prometheus_metrics.rb
+++ b/spec/factories/prometheus_metrics.rb
@@ -9,6 +9,7 @@ FactoryBot.define do
group { :business }
project
legend { 'legend' }
+ dashboard_path { '.gitlab/dashboards/dashboard_path.yml'}
trait :common do
common { true }
diff --git a/spec/factories/resource_weight_events.rb b/spec/factories/resource_weight_events.rb
deleted file mode 100644
index cb9a34df332..00000000000
--- a/spec/factories/resource_weight_events.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# frozen_string_literal: true
-
-FactoryBot.define do
- factory :resource_weight_event do
- issue { create(:issue) }
- user { issue&.author || create(:user) }
- end
-end
diff --git a/spec/factories/services.rb b/spec/factories/services.rb
index 9056fd97f13..13997080817 100644
--- a/spec/factories/services.rb
+++ b/spec/factories/services.rb
@@ -81,7 +81,7 @@ FactoryBot.define do
project_key { nil }
end
- after(:build) do |service, evaluator|
+ before(:create) do |service, evaluator|
if evaluator.create_data
create(:jira_tracker_data, service: service,
url: evaluator.url, api_url: evaluator.api_url, jira_issue_transition_id: evaluator.jira_issue_transition_id,
@@ -130,7 +130,7 @@ FactoryBot.define do
new_issue_url { 'http://new-issue.example.com' }
end
- after(:build) do |service, evaluator|
+ before(:create) do |service, evaluator|
if evaluator.create_data
create(:issue_tracker_data, service: service,
project_url: evaluator.project_url, issues_url: evaluator.issues_url, new_issue_url: evaluator.new_issue_url
@@ -151,7 +151,7 @@ FactoryBot.define do
project_identifier_code { 'PRJ-1' }
end
- after(:build) do |service, evaluator|
+ before(:create) do |service, evaluator|
create(:open_project_tracker_data, service: service,
url: evaluator.url, api_url: evaluator.api_url, token: evaluator.token,
closed_status_id: evaluator.closed_status_id, project_identifier_code: evaluator.project_identifier_code
diff --git a/spec/factories/terraform/state.rb b/spec/factories/terraform/state.rb
index 9decc89ef39..d80c1315e28 100644
--- a/spec/factories/terraform/state.rb
+++ b/spec/factories/terraform/state.rb
@@ -17,16 +17,6 @@ FactoryBot.define do
locked_by_user { create(:user) }
end
- trait(:checksummed) do
- with_file
- verification_checksum { 'abc' }
- end
-
- trait(:checksum_failure) do
- with_file
- verification_failure { 'Could not calculate the checksum' }
- end
-
trait :with_version do
after(:create) do |state|
create(:terraform_state_version, :with_file, terraform_state: state)
diff --git a/spec/factories/terraform/state_version.rb b/spec/factories/terraform/state_version.rb
index d1bd78215e3..b45bd01fd3c 100644
--- a/spec/factories/terraform/state_version.rb
+++ b/spec/factories/terraform/state_version.rb
@@ -7,5 +7,13 @@ FactoryBot.define do
sequence(:version)
file { fixture_file_upload('spec/fixtures/terraform/terraform.tfstate', 'application/json') }
+
+ trait(:checksummed) do
+ verification_checksum { 'abc' }
+ end
+
+ trait(:checksum_failure) do
+ verification_failure { 'Could not calculate the checksum' }
+ end
end
end
diff --git a/spec/factories/todos.rb b/spec/factories/todos.rb
index 0b5d00cff67..97a1265c46a 100644
--- a/spec/factories/todos.rb
+++ b/spec/factories/todos.rb
@@ -12,6 +12,10 @@ FactoryBot.define do
action { Todo::ASSIGNED }
end
+ trait :review_requested do
+ action { Todo::REVIEW_REQUESTED }
+ end
+
trait :mentioned do
action { Todo::MENTIONED }
end
diff --git a/spec/factories/usage_data.rb b/spec/factories/usage_data.rb
index 5b20205a235..adca6eabb0e 100644
--- a/spec/factories/usage_data.rb
+++ b/spec/factories/usage_data.rb
@@ -7,12 +7,12 @@ FactoryBot.define do
initialize_with do
projects = create_list(:project, 3)
projects << create(:project, :repository)
+ group = create(:group)
create(:board, project: projects[0])
create(:jira_service, project: projects[0])
create(:jira_service, :without_properties_callback, project: projects[1])
create(:jira_service, :jira_cloud_service, project: projects[2])
- create(:jira_service, :without_properties_callback, project: projects[3],
- properties: { url: 'https://mysite.atlassian.net' })
+ create(:jira_service, :without_properties_callback, project: projects[3], properties: { url: 'https://mysite.atlassian.net' })
jira_label = create(:label, project: projects[0])
create(:jira_import_state, :finished, project: projects[0], label: jira_label, failed_to_import_count: 2, imported_issues_count: 7, total_issue_count: 9)
create(:jira_import_state, :finished, project: projects[1], label: jira_label, imported_issues_count: 3, total_issue_count: 3)
@@ -23,9 +23,11 @@ FactoryBot.define do
create(:service, project: projects[1], type: 'SlackService', active: true)
create(:service, project: projects[2], type: 'SlackService', active: true)
create(:service, project: projects[2], type: 'MattermostService', active: false)
+ create(:service, group: group, project: nil, type: 'MattermostService', active: true)
create(:service, :template, type: 'MattermostService', active: true)
matermost_instance = create(:service, :instance, type: 'MattermostService', active: true)
create(:service, project: projects[1], type: 'MattermostService', active: true, inherit_from_id: matermost_instance.id)
+ create(:service, group: group, project: nil, type: 'SlackService', active: true, inherit_from_id: matermost_instance.id)
create(:service, project: projects[2], type: 'CustomIssueTrackerService', active: true)
create(:project_error_tracking_setting, project: projects[0])
create(:project_error_tracking_setting, project: projects[1], enabled: false)
@@ -50,12 +52,14 @@ FactoryBot.define do
create(:protected_branch, project: projects[0])
create(:protected_branch, name: 'main', project: projects[0])
+ # Tracing
+ create(:project_tracing_setting, project: projects[0])
+
# Incident Labeled Issues
incident_label = create(:label, :incident, project: projects[0])
create(:labeled_issue, project: projects[0], labels: [incident_label])
- incident_group = create(:group)
incident_label_scoped_to_project = create(:label, :incident, project: projects[1])
- incident_label_scoped_to_group = create(:group_label, :incident, group: incident_group)
+ incident_label_scoped_to_group = create(:group_label, :incident, group: group)
create(:labeled_issue, project: projects[1], labels: [incident_label_scoped_to_project])
create(:labeled_issue, project: projects[1], labels: [incident_label_scoped_to_group])
@@ -97,16 +101,19 @@ FactoryBot.define do
create(:grafana_integration, project: projects[1], enabled: true)
create(:grafana_integration, project: projects[2], enabled: false)
- create(:package, project: projects[0])
- create(:package, project: projects[0])
- create(:package, project: projects[1])
+ create(:package, project: projects[0], created_at: 3.days.ago)
+ create(:package, project: projects[0], created_at: 3.days.ago)
+ create(:package, project: projects[1], created_at: 3.days.ago)
create(:package, created_at: 2.months.ago, project: projects[1])
+ # User Preferences
+ create(:user_preference, gitpod_enabled: true)
+
ProjectFeature.first.update_attribute('repository_access_level', 0)
# Create fresh & a month (28-days SMAU) old data
env = create(:environment, project: projects[3])
- [2, 29].each do |n|
+ [3, 31].each do |n|
deployment_options = { created_at: n.days.ago, project: env.project, environment: env }
create(:deployment, :failed, deployment_options)
create(:deployment, :success, deployment_options)
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
index 1a8c5d7e40c..2e5b3be3bf2 100644
--- a/spec/factories/users.rb
+++ b/spec/factories/users.rb
@@ -23,6 +23,14 @@ FactoryBot.define do
after(:build) { |user, _| user.block! }
end
+ trait :blocked_pending_approval do
+ after(:build) { |user, _| user.block_pending_approval! }
+ end
+
+ trait :ldap_blocked do
+ after(:build) { |user, _| user.ldap_block! }
+ end
+
trait :bot do
user_type { :alert_bot }
end
diff --git a/spec/factories/wiki_pages.rb b/spec/factories/wiki_pages.rb
index cc866d336a4..3397277839e 100644
--- a/spec/factories/wiki_pages.rb
+++ b/spec/factories/wiki_pages.rb
@@ -9,7 +9,7 @@ FactoryBot.define do
content { 'Content for wiki page' }
format { :markdown }
message { nil }
- project { association(:project, :wiki_repo) }
+ project { association(:project) }
container { project }
wiki { association(:wiki, container: container) }
page { OpenStruct.new(url_path: title) }
@@ -18,6 +18,7 @@ FactoryBot.define do
initialize_with do
new(wiki, page).tap do |page|
page.attributes = {
+ slug: title&.tr(' ', '-'),
title: title,
content: content,
format: format
diff --git a/spec/factories/wikis.rb b/spec/factories/wikis.rb
index 96578fdcee6..86d98bfd756 100644
--- a/spec/factories/wikis.rb
+++ b/spec/factories/wikis.rb
@@ -3,8 +3,8 @@
FactoryBot.define do
factory :wiki do
transient do
- container { association(:project, :wiki_repo) }
- user { association(:user) }
+ container { association(:project) }
+ user { container.default_owner || association(:user) }
end
initialize_with { Wiki.for_container(container, user) }
@@ -12,7 +12,7 @@ FactoryBot.define do
factory :project_wiki do
transient do
- project { association(:project, :wiki_repo) }
+ project { association(:project) }
end
container { project }