Commit 4af9d592 authored by Rémy Coutable's avatar Rémy Coutable

Replace factory_girl_rails with factory_bot_rails

I've followed the [upgrade guide](https://github.com/thoughtbot/factory_bot/blob/4-9-0-stable/UPGRADE_FROM_FACTORY_GIRL.md) and ran these two commands:

```
grep -e FactoryGirl **/*.rake **/*.rb -s -l | xargs sed -i "" "s|FactoryGirl|FactoryBot|"
grep -e factory_girl **/*.rake **/*.rb -s -l | xargs sed -i "" "s|factory_girl|factory_bot|"
```
Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent f5114187
...@@ -311,7 +311,7 @@ group :development, :test do ...@@ -311,7 +311,7 @@ group :development, :test do
gem 'fuubar', '~> 2.2.0' gem 'fuubar', '~> 2.2.0'
gem 'database_cleaner', '~> 1.5.0' gem 'database_cleaner', '~> 1.5.0'
gem 'factory_girl_rails', '~> 4.7.0' gem 'factory_bot_rails', '~> 4.8.2'
gem 'rspec-rails', '~> 3.6.0' gem 'rspec-rails', '~> 3.6.0'
gem 'rspec-retry', '~> 0.4.5' gem 'rspec-retry', '~> 0.4.5'
gem 'spinach-rails', '~> 0.2.1' gem 'spinach-rails', '~> 0.2.1'
......
...@@ -195,10 +195,10 @@ GEM ...@@ -195,10 +195,10 @@ GEM
excon (0.57.1) excon (0.57.1)
execjs (2.6.0) execjs (2.6.0)
expression_parser (0.9.0) expression_parser (0.9.0)
factory_girl (4.7.0) factory_bot (4.8.2)
activesupport (>= 3.0.0) activesupport (>= 3.0.0)
factory_girl_rails (4.7.0) factory_bot_rails (4.8.2)
factory_girl (~> 4.7.0) factory_bot (~> 4.8.2)
railties (>= 3.0.0) railties (>= 3.0.0)
faraday (0.12.2) faraday (0.12.2)
multipart-post (>= 1.2, < 3) multipart-post (>= 1.2, < 3)
...@@ -1017,7 +1017,7 @@ DEPENDENCIES ...@@ -1017,7 +1017,7 @@ DEPENDENCIES
dropzonejs-rails (~> 0.7.1) dropzonejs-rails (~> 0.7.1)
email_reply_trimmer (~> 0.1) email_reply_trimmer (~> 0.1)
email_spec (~> 1.6.0) email_spec (~> 1.6.0)
factory_girl_rails (~> 4.7.0) factory_bot_rails (~> 4.8.2)
faraday (~> 0.12) faraday (~> 0.12)
ffaker (~> 2.4) ffaker (~> 2.4)
flay (~> 2.8.0) flay (~> 2.8.0)
......
...@@ -11,7 +11,7 @@ class Projects::NotesController < Projects::ApplicationController ...@@ -11,7 +11,7 @@ class Projects::NotesController < Projects::ApplicationController
# Controller actions are returned from AbstractController::Base and methods of parent classes are # Controller actions are returned from AbstractController::Base and methods of parent classes are
# excluded in order to return only specific controller related methods. # excluded in order to return only specific controller related methods.
# That is ok for the app (no :create method in ancestors) # That is ok for the app (no :create method in ancestors)
# but fails for tests because there is a :create method on FactoryGirl (one of the ancestors) # but fails for tests because there is a :create method on FactoryBot (one of the ancestors)
# #
# see https://github.com/rails/rails/blob/v4.2.7/actionpack/lib/abstract_controller/base.rb#L78 # see https://github.com/rails/rails/blob/v4.2.7/actionpack/lib/abstract_controller/base.rb#L78
# #
......
...@@ -159,7 +159,7 @@ module Gitlab ...@@ -159,7 +159,7 @@ module Gitlab
config.middleware.insert_after ActionDispatch::Flash, 'Gitlab::Middleware::ReadOnly' config.middleware.insert_after ActionDispatch::Flash, 'Gitlab::Middleware::ReadOnly'
config.generators do |g| config.generators do |g|
g.factory_girl false g.factory_bot false
end end
config.after_initialize do config.after_initialize do
......
...@@ -140,8 +140,8 @@ class Gitlab::Seeder::CycleAnalytics ...@@ -140,8 +140,8 @@ class Gitlab::Seeder::CycleAnalytics
issue.update(milestone: @project.milestones.sample) issue.update(milestone: @project.milestones.sample)
else else
label_name = "#{FFaker::Product.brand}-#{FFaker::Product.brand}-#{rand(1000)}" label_name = "#{FFaker::Product.brand}-#{FFaker::Product.brand}-#{rand(1000)}"
list_label = FactoryGirl.create(:label, title: label_name, project: issue.project) list_label = FactoryBot.create(:label, title: label_name, project: issue.project)
FactoryGirl.create(:list, board: FactoryGirl.create(:board, project: issue.project), label: list_label) FactoryBot.create(:list, board: FactoryBot.create(:board, project: issue.project), label: list_label)
issue.update(labels: [list_label]) issue.update(labels: [list_label])
end end
......
...@@ -8,7 +8,7 @@ might encounter or should avoid during development of GitLab CE and EE. ...@@ -8,7 +8,7 @@ might encounter or should avoid during development of GitLab CE and EE.
Consider the following factory: Consider the following factory:
```ruby ```ruby
FactoryGirl.define do FactoryBot.define do
factory :label do factory :label do
sequence(:title) { |n| "label#{n}" } sequence(:title) { |n| "label#{n}" }
end end
...@@ -53,7 +53,7 @@ When run, this spec doesn't do what we might expect: ...@@ -53,7 +53,7 @@ When run, this spec doesn't do what we might expect:
(compared using ==) (compared using ==)
``` ```
That's because FactoryGirl sequences are not reseted for each example. That's because FactoryBot sequences are not reseted for each example.
Please remember that sequence-generated values exist only to avoid having to Please remember that sequence-generated values exist only to avoid having to
explicitly set attributes that have a uniqueness constraint when using a factory. explicitly set attributes that have a uniqueness constraint when using a factory.
......
...@@ -8,8 +8,8 @@ and effective _as well as_ fast. ...@@ -8,8 +8,8 @@ and effective _as well as_ fast.
Here are some things to keep in mind regarding test performance: Here are some things to keep in mind regarding test performance:
- `double` and `spy` are faster than `FactoryGirl.build(...)` - `double` and `spy` are faster than `FactoryBot.build(...)`
- `FactoryGirl.build(...)` and `.build_stubbed` are faster than `.create`. - `FactoryBot.build(...)` and `.build_stubbed` are faster than `.create`.
- Don't `create` an object when `build`, `build_stubbed`, `attributes_for`, - Don't `create` an object when `build`, `build_stubbed`, `attributes_for`,
`spy`, or `double` will do. Database persistence is slow! `spy`, or `double` will do. Database persistence is slow!
- Don't mark a feature as requiring JavaScript (through `@javascript` in - Don't mark a feature as requiring JavaScript (through `@javascript` in
...@@ -254,13 +254,13 @@ end ...@@ -254,13 +254,13 @@ end
### Factories ### Factories
GitLab uses [factory_girl] as a test fixture replacement. GitLab uses [factory_bot] as a test fixture replacement.
- Factory definitions live in `spec/factories/`, named using the pluralization - Factory definitions live in `spec/factories/`, named using the pluralization
of their corresponding model (`User` factories are defined in `users.rb`). of their corresponding model (`User` factories are defined in `users.rb`).
- There should be only one top-level factory definition per file. - There should be only one top-level factory definition per file.
- FactoryGirl methods are mixed in to all RSpec groups. This means you can (and - FactoryBot methods are mixed in to all RSpec groups. This means you can (and
should) call `create(...)` instead of `FactoryGirl.create(...)`. should) call `create(...)` instead of `FactoryBot.create(...)`.
- Make use of [traits] to clean up definitions and usages. - Make use of [traits] to clean up definitions and usages.
- When defining a factory, don't define attributes that are not required for the - When defining a factory, don't define attributes that are not required for the
resulting record to pass validation. resulting record to pass validation.
...@@ -269,8 +269,8 @@ GitLab uses [factory_girl] as a test fixture replacement. ...@@ -269,8 +269,8 @@ GitLab uses [factory_girl] as a test fixture replacement.
- Factories don't have to be limited to `ActiveRecord` objects. - Factories don't have to be limited to `ActiveRecord` objects.
[See example](https://gitlab.com/gitlab-org/gitlab-ce/commit/0b8cefd3b2385a21cfed779bd659978c0402766d). [See example](https://gitlab.com/gitlab-org/gitlab-ce/commit/0b8cefd3b2385a21cfed779bd659978c0402766d).
[factory_girl]: https://github.com/thoughtbot/factory_girl [factory_bot]: https://github.com/thoughtbot/factory_bot
[traits]: http://www.rubydoc.info/gems/factory_girl/file/GETTING_STARTED.md#Traits [traits]: http://www.rubydoc.info/gems/factory_bot/file/GETTING_STARTED.md#Traits
### Fixtures ### Fixtures
......
...@@ -33,7 +33,7 @@ changes should be tested. ...@@ -33,7 +33,7 @@ changes should be tested.
## [Testing best practices](best_practices.md) ## [Testing best practices](best_practices.md)
Everything you should know about how to write good tests: RSpec, FactoryGirl, Everything you should know about how to write good tests: RSpec, FactoryBot,
system tests, parameterized tests etc. system tests, parameterized tests etc.
--- ---
......
...@@ -27,7 +27,7 @@ Spinach.hooks.before_run do ...@@ -27,7 +27,7 @@ Spinach.hooks.before_run do
# web editor and merge # web editor and merge
TestEnv.disable_pre_receive TestEnv.disable_pre_receive
include FactoryGirl::Syntax::Methods include FactoryBot::Syntax::Methods
include GitlabRoutingHelper include GitlabRoutingHelper
end end
......
FactoryGirl.define do FactoryBot.define do
factory :abuse_report do factory :abuse_report do
reporter factory: :user reporter factory: :user
user user
......
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_bot
FactoryGirl.define do FactoryBot.define do
factory :appearance do factory :appearance do
title "MepMep" title "MepMep"
description "This is my Community Edition instance" description "This is my Community Edition instance"
......
FactoryGirl.define do FactoryBot.define do
factory :application_setting do factory :application_setting do
end end
end end
FactoryGirl.define do FactoryBot.define do
factory :award_emoji do factory :award_emoji do
name "thumbsup" name "thumbsup"
user user
......
FactoryGirl.define do FactoryBot.define do
factory :board do factory :board do
project project
......
FactoryGirl.define do FactoryBot.define do
factory :broadcast_message do factory :broadcast_message do
message "MyText" message "MyText"
starts_at 1.day.ago starts_at 1.day.ago
......
FactoryGirl.define do FactoryBot.define do
factory :chat_name, class: ChatName do factory :chat_name, class: ChatName do
user factory: :user user factory: :user
service factory: :service service factory: :service
......
FactoryGirl.define do FactoryBot.define do
factory :chat_team, class: ChatTeam do factory :chat_team, class: ChatTeam do
sequence(:team_id) { |n| "abcdefghijklm#{n}" } sequence(:team_id) { |n| "abcdefghijklm#{n}" }
namespace factory: :group namespace factory: :group
......
FactoryGirl.define do FactoryBot.define do
factory :ci_build_trace_section_name, class: Ci::BuildTraceSectionName do factory :ci_build_trace_section_name, class: Ci::BuildTraceSectionName do
sequence(:name) { |n| "section_#{n}" } sequence(:name) { |n| "section_#{n}" }
project factory: :project project factory: :project
......
include ActionDispatch::TestProcess include ActionDispatch::TestProcess
FactoryGirl.define do FactoryBot.define do
factory :ci_build, class: Ci::Build do factory :ci_build, class: Ci::Build do
name 'test' name 'test'
stage 'test' stage 'test'
......
FactoryGirl.define do FactoryBot.define do
factory :ci_group_variable, class: Ci::GroupVariable do factory :ci_group_variable, class: Ci::GroupVariable do
sequence(:key) { |n| "VARIABLE_#{n}" } sequence(:key) { |n| "VARIABLE_#{n}" }
value 'VARIABLE_VALUE' value 'VARIABLE_VALUE'
......
include ActionDispatch::TestProcess include ActionDispatch::TestProcess
FactoryGirl.define do FactoryBot.define do
factory :ci_job_artifact, class: Ci::JobArtifact do factory :ci_job_artifact, class: Ci::JobArtifact do
job factory: :ci_build job factory: :ci_build
file_type :archive file_type :archive
......
FactoryGirl.define do FactoryBot.define do
factory :ci_pipeline_schedule, class: Ci::PipelineSchedule do factory :ci_pipeline_schedule, class: Ci::PipelineSchedule do
cron '0 1 * * *' cron '0 1 * * *'
cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
......
FactoryGirl.define do FactoryBot.define do
factory :ci_pipeline_schedule_variable, class: Ci::PipelineScheduleVariable do factory :ci_pipeline_schedule_variable, class: Ci::PipelineScheduleVariable do
sequence(:key) { |n| "VARIABLE_#{n}" } sequence(:key) { |n| "VARIABLE_#{n}" }
value 'VARIABLE_VALUE' value 'VARIABLE_VALUE'
......
FactoryGirl.define do FactoryBot.define do
factory :ci_pipeline_variable, class: Ci::PipelineVariable do factory :ci_pipeline_variable, class: Ci::PipelineVariable do
sequence(:key) { |n| "VARIABLE_#{n}" } sequence(:key) { |n| "VARIABLE_#{n}" }
value 'VARIABLE_VALUE' value 'VARIABLE_VALUE'
......
FactoryGirl.define do FactoryBot.define do
factory :ci_empty_pipeline, class: Ci::Pipeline do factory :ci_empty_pipeline, class: Ci::Pipeline do
source :push source :push
ref 'master' ref 'master'
......
FactoryGirl.define do FactoryBot.define do
factory :ci_runner_project, class: Ci::RunnerProject do factory :ci_runner_project, class: Ci::RunnerProject do
runner factory: :ci_runner runner factory: :ci_runner
project project
......
FactoryGirl.define do FactoryBot.define do
factory :ci_runner, class: Ci::Runner do factory :ci_runner, class: Ci::Runner do
sequence(:description) { |n| "My runner#{n}" } sequence(:description) { |n| "My runner#{n}" }
......
FactoryGirl.define do FactoryBot.define do
factory :ci_stage, class: Ci::LegacyStage do factory :ci_stage, class: Ci::LegacyStage do
skip_create skip_create
......
FactoryGirl.define do FactoryBot.define do
factory :ci_trigger_request, class: Ci::TriggerRequest do factory :ci_trigger_request, class: Ci::TriggerRequest do
trigger factory: :ci_trigger trigger factory: :ci_trigger
end end
......
FactoryGirl.define do FactoryBot.define do
factory :ci_trigger_without_token, class: Ci::Trigger do factory :ci_trigger_without_token, class: Ci::Trigger do
owner owner
......
FactoryGirl.define do FactoryBot.define do
factory :ci_variable, class: Ci::Variable do factory :ci_variable, class: Ci::Variable do
sequence(:key) { |n| "VARIABLE_#{n}" } sequence(:key) { |n| "VARIABLE_#{n}" }
value 'VARIABLE_VALUE' value 'VARIABLE_VALUE'
......
FactoryGirl.define do FactoryBot.define do
factory :cluster_applications_helm, class: Clusters::Applications::Helm do factory :cluster_applications_helm, class: Clusters::Applications::Helm do
cluster factory: %i(cluster provided_by_gcp) cluster factory: %i(cluster provided_by_gcp)
......
FactoryGirl.define do FactoryBot.define do
factory :cluster_applications_ingress, class: Clusters::Applications::Ingress do factory :cluster_applications_ingress, class: Clusters::Applications::Ingress do
cluster factory: %i(cluster provided_by_gcp) cluster factory: %i(cluster provided_by_gcp)
......
FactoryGirl.define do FactoryBot.define do
factory :cluster, class: Clusters::Cluster do factory :cluster, class: Clusters::Cluster do
user user
name 'test-cluster' name 'test-cluster'
......
FactoryGirl.define do FactoryBot.define do
factory :cluster_platform_kubernetes, class: Clusters::Platforms::Kubernetes do factory :cluster_platform_kubernetes, class: Clusters::Platforms::Kubernetes do
cluster cluster
namespace nil namespace nil
......
FactoryGirl.define do FactoryBot.define do
factory :cluster_provider_gcp, class: Clusters::Providers::Gcp do factory :cluster_provider_gcp, class: Clusters::Providers::Gcp do
cluster cluster
gcp_project_id 'test-gcp-project' gcp_project_id 'test-gcp-project'
......
FactoryGirl.define do FactoryBot.define do
factory :commit_status, class: CommitStatus do factory :commit_status, class: CommitStatus do
name 'default' name 'default'
stage 'test' stage 'test'
......
require_relative '../support/repo_helpers' require_relative '../support/repo_helpers'
FactoryGirl.define do FactoryBot.define do
factory :commit do factory :commit do
transient do transient do
author nil author nil
......
FactoryGirl.define do FactoryBot.define do
factory :container_repository do factory :container_repository do
name 'test_container_image' name 'test_container_image'
project project
......
FactoryGirl.define do FactoryBot.define do
factory :conversational_development_index_metric, class: ConversationalDevelopmentIndex::Metric do factory :conversational_development_index_metric, class: ConversationalDevelopmentIndex::Metric do
leader_issues 9.256 leader_issues 9.256
instance_issues 1.234 instance_issues 1.234
......
FactoryGirl.define do FactoryBot.define do
factory :deploy_keys_project do factory :deploy_keys_project do
deploy_key deploy_key
project project
......
FactoryGirl.define do FactoryBot.define do
factory :deployment, class: Deployment do factory :deployment, class: Deployment do
sha '97de212e80737a608d939f648d959671fb0a0142' sha '97de212e80737a608d939f648d959671fb0a0142'
ref 'master' ref 'master'
......
FactoryGirl.define do FactoryBot.define do
factory :email do factory :email do
user user
email { generate(:email_alias) } email { generate(:email_alias) }
......
FactoryGirl.define do FactoryBot.define do
factory :environment, class: Environment do factory :environment, class: Environment do
sequence(:name) { |n| "environment#{n}" } sequence(:name) { |n| "environment#{n}" }
......
FactoryGirl.define do FactoryBot.define do
factory :event do factory :event do
project project
author factory: :user author factory: :user
......
FactoryGirl.define do FactoryBot.define do
factory :file_uploader do factory :file_uploader do
skip_create skip_create
......
FactoryGirl.define do FactoryBot.define do
factory :fork_network_member do factory :fork_network_member do
association :project association :project
association :fork_network association :fork_network
......
FactoryGirl.define do FactoryBot.define do
factory :fork_network do factory :fork_network do
association :root_project, factory: :project association :root_project, factory: :project
end end
......
FactoryGirl.define do FactoryBot.define do
factory :forked_project_link do factory :forked_project_link do
association :forked_to_project, factory: [:project, :repository] association :forked_to_project, factory: [:project, :repository]
association :forked_from_project, factory: [:project, :repository] association :forked_from_project, factory: [:project, :repository]
......
FactoryGirl.define do FactoryBot.define do
sequence(:gitaly_commit_id) { Digest::SHA1.hexdigest(Time.now.to_f.to_s) } sequence(:gitaly_commit_id) { Digest::SHA1.hexdigest(Time.now.to_f.to_s) }
factory :gitaly_commit, class: Gitaly::GitCommit do factory :gitaly_commit, class: Gitaly::GitCommit do
......
FactoryGirl.define do FactoryBot.define do
factory :gitaly_commit_author, class: Gitaly::CommitAuthor do factory :gitaly_commit_author, class: Gitaly::CommitAuthor do
skip_create skip_create
......
require_relative '../support/gpg_helpers' require_relative '../support/gpg_helpers'
FactoryGirl.define do FactoryBot.define do
factory :gpg_key_subkey do factory :gpg_key_subkey do
gpg_key gpg_key
......
require_relative '../support/gpg_helpers' require_relative '../support/gpg_helpers'
FactoryGirl.define do FactoryBot.define do
factory :gpg_key do factory :gpg_key do
key GpgHelpers::User1.public_key key GpgHelpers::User1.public_key
user user
......
require_relative '../support/gpg_helpers' require_relative '../support/gpg_helpers'
FactoryGirl.define do FactoryBot.define do
factory :gpg_signature do factory :gpg_signature do
commit_sha { Digest::SHA1.hexdigest(SecureRandom.hex) } commit_sha { Digest::SHA1.hexdigest(SecureRandom.hex) }
project project
......
FactoryGirl.define do FactoryBot.define do
factory :group_custom_attribute do factory :group_custom_attribute do
group group
sequence(:key) { |n| "key#{n}" } sequence(:key) { |n| "key#{n}" }
......
FactoryGirl.define do FactoryBot.define do
factory :group_member do factory :group_member do
access_level { GroupMember::OWNER } access_level { GroupMember::OWNER }
group group
......
FactoryGirl.define do FactoryBot.define do
factory :group, class: Group, parent: :namespace do factory :group, class: Group, parent: :namespace do
sequence(:name) { |n| "group#{n}" } sequence(:name) { |n| "group#{n}" }
path { name.downcase.gsub(/\s/, '_') } path { name.downcase.gsub(/\s/, '_') }
......
FactoryGirl.define do FactoryBot.define do
factory :identity do factory :identity do
provider 'ldapmain' provider 'ldapmain'
extern_uid 'my-ldap-id' extern_uid 'my-ldap-id'
......
FactoryGirl.define do FactoryBot.define do
factory :instance_configuration do factory :instance_configuration do
skip_create skip_create
end end
......
FactoryGirl.define do FactoryBot.define do
factory :issue do factory :issue do
title { generate(:title) } title { generate(:title) }
author author
......
require_relative '../support/helpers/key_generator_helper' require_relative '../support/helpers/key_generator_helper'
FactoryGirl.define do FactoryBot.define do
factory :key do factory :key do
title title
key { Spec::Support::Helpers::KeyGeneratorHelper.new(1024).generate + ' dummy@gitlab.com' } key { Spec::Support::Helpers::KeyGeneratorHelper.new(1024).generate + ' dummy@gitlab.com' }
......
FactoryGirl.define do FactoryBot.define do
factory :label_link do factory :label_link do
label label
target factory: :issue target factory: :issue
......
FactoryGirl.define do FactoryBot.define do
factory :label_priority do factory :label_priority do
project project
label label
......
FactoryGirl.define do FactoryBot.define do
trait :base_label do trait :base_label do
title { generate(:label_title) } title { generate(:label_title) }
color "#990000" color "#990000"
......
include ActionDispatch::TestProcess include ActionDispatch::TestProcess
FactoryGirl.define do FactoryBot.define do
factory :lfs_object do factory :lfs_object do
sequence(:oid) { |n| "b68143e6463773b1b6c6fd009a76c32aeec041faff32ba2ed42fd7f708a%05x" % n } sequence(:oid) { |n| "b68143e6463773b1b6c6fd009a76c32aeec041faff32ba2ed42fd7f708a%05x" % n }
size 499013 size 499013
......
FactoryGirl.define do FactoryBot.define do
factory :lfs_objects_project do factory :lfs_objects_project do
lfs_object lfs_object
project project
......
FactoryGirl.define do FactoryBot.define do
factory :list do factory :list do
board board
label label
......
FactoryGirl.define do FactoryBot.define do
factory :merge_request do factory :merge_request do
title { generate(:title) } title { generate(:title) }
author author
......
FactoryGirl.define do FactoryBot.define do
factory :merge_requests_closing_issues do factory :merge_requests_closing_issues do
issue issue
merge_request merge_request
......
FactoryGirl.define do FactoryBot.define do
factory :milestone do factory :milestone do
title title
......
FactoryGirl.define do FactoryBot.define do
factory :namespace do factory :namespace do
sequence(:name) { |n| "namespace#{n}" } sequence(:name) { |n| "namespace#{n}" }
path { name.downcase.gsub(/\s/, '_') } path { name.downcase.gsub(/\s/, '_') }
......
...@@ -2,7 +2,7 @@ require_relative '../support/repo_helpers' ...@@ -2,7 +2,7 @@ require_relative '../support/repo_helpers'
include ActionDispatch::TestProcess include ActionDispatch::TestProcess
FactoryGirl.define do FactoryBot.define do
factory :note do factory :note do
project project
note { generate(:title) } note { generate(:title) }
......
FactoryGirl.define do FactoryBot.define do
factory :notification_setting do factory :notification_setting do
source factory: :project source factory: :project
user user
......
FactoryGirl.define do FactoryBot.define do
factory :oauth_access_grant do factory :oauth_access_grant do
resource_owner_id { create(:user).id } resource_owner_id { create(:user).id }
application application
......
FactoryGirl.define do FactoryBot.define do
factory :oauth_access_token do factory :oauth_access_token do
resource_owner resource_owner
application application
......
FactoryGirl.define do FactoryBot.define do
factory :oauth_application, class: 'Doorkeeper::Application', aliases: [:application] do factory :oauth_application, class: 'Doorkeeper::Application', aliases: [:application] do
sequence(:name) { |n| "OAuth App #{n}" } sequence(:name) { |n| "OAuth App #{n}" }
uid { Doorkeeper::OAuth::Helpers::UniqueToken.generate } uid { Doorkeeper::OAuth::Helpers::UniqueToken.generate }
......
FactoryGirl.define do FactoryBot.define do
factory :pages_domain, class: 'PagesDomain' do factory :pages_domain, class: 'PagesDomain' do
domain 'my.domain.com' domain 'my.domain.com'
......
FactoryGirl.define do FactoryBot.define do
factory :personal_access_token do factory :personal_access_token do
user user
token { SecureRandom.hex(50) } token { SecureRandom.hex(50) }
......
FactoryGirl.define do FactoryBot.define do
factory :project_auto_devops do factory :project_auto_devops do
project project
enabled true enabled true
......
FactoryGirl.define do FactoryBot.define do
factory :project_custom_attribute do factory :project_custom_attribute do
project project
sequence(:key) { |n| "key#{n}" } sequence(:key) { |n| "key#{n}" }
......
FactoryGirl.define do FactoryBot.define do
factory :project_group_link do factory :project_group_link do
project project
group group
......
FactoryGirl.define do FactoryBot.define do
factory :project_hook do factory :project_hook do
url { generate(:url) } url { generate(:url) }
enable_ssl_verification false enable_ssl_verification false
......
FactoryGirl.define do FactoryBot.define do
factory :project_member do factory :project_member do
user user
project project
......
FactoryGirl.define do FactoryBot.define do
factory :project_statistics do factory :project_statistics do
project project
......
FactoryGirl.define do FactoryBot.define do
factory :project_wiki do factory :project_wiki do
skip_create skip_create
......
require_relative '../support/test_env' require_relative '../support/test_env'
FactoryGirl.define do FactoryBot.define do
# Project without repository # Project without repository
# #
# Project does not have bare repository. # Project does not have bare repository.
......
FactoryGirl.define do FactoryBot.define do
factory :protected_branch do factory :protected_branch do
name name
project project
......
FactoryGirl.define do FactoryBot.define do
factory :protected_tag do factory :protected_tag do
name name
project project
......
FactoryGirl.define do FactoryBot.define do
factory :release do factory :release do
tag "v1.1.0" tag "v1.1.0"
description "Awesome release" description "Awesome release"
......
FactoryGirl.define do FactoryBot.define do
factory :sent_notification do factory :sent_notification do
project project
recipient factory: :user recipient factory: :user
......
FactoryGirl.define do FactoryBot.define do
sequence(:username) { |n| "user#{n}" } sequence(:username) { |n| "user#{n}" }
sequence(:name) { |n| "John Doe#{n}" } sequence(:name) { |n| "John Doe#{n}" }
sequence(:email) { |n| "user#{n}@example.org" } sequence(:email) { |n| "user#{n}@example.org" }
......
FactoryGirl.define do FactoryBot.define do
factory :service_hook do factory :service_hook do
url { generate(:url) } url { generate(:url) }
service service
......
FactoryGirl.define do FactoryBot.define do
factory :service do factory :service do
project project
type 'Service' type 'Service'
......
FactoryGirl.define do FactoryBot.define do
factory :snippet do factory :snippet do
author author
title { generate(:title) } title { generate(:title) }
......
FactoryGirl.define do FactoryBot.define do
factory :spam_log do factory :spam_log do
user user
sequence(:source_ip) { |n| "42.42.42.#{n % 255}" } sequence(:source_ip) { |n| "42.42.42.#{n % 255}" }
......
FactoryGirl.define do FactoryBot.define do
factory :subscription do factory :subscription do
user user
project project
......
FactoryGirl.define do FactoryBot.define do
factory :system_hook do factory :system_hook do
url { generate(:url) } url { generate(:url) }
end end
......
FactoryGirl.define do FactoryBot.define do
factory :system_note_metadata do factory :system_note_metadata do
note note
action 'merge' action 'merge'
......
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_bot
FactoryGirl.define do FactoryBot.define do
factory :timelog do factory :timelog do
time_spent 3600 time_spent 3600
user user
......
FactoryGirl.define do FactoryBot.define do
factory :todo do factory :todo do
project project
author author
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment