factory_bot_rails 5.0.0 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb1373ed349326df96513782505d2e7e19171d063633723785fa8b19d004334e
4
- data.tar.gz: 85afaa7e96c4196ac2104b8d7937b55840e53ec18752809b885f23fb3b9d3a7f
3
+ metadata.gz: c54ddb791dcf6eccf0e7ffe73cad7294a72b7d84a7c9b1c8be1b858e6ff0f209
4
+ data.tar.gz: 5c5b2bd9f09413c8a2cbbf5bba8c46f927c717de9caa798f3dd161cc464961cf
5
5
  SHA512:
6
- metadata.gz: 7fc069195491977c8a878d8368db76a25cd3085f767fb1275de049a3a4d5acd88d68c5684b8d5c0d935a5d720ddaaf393d4304147ae357c4a0488c16009a9b4a
7
- data.tar.gz: 884ac558b9f118f6883b09241e58d08b42fdb85d6f18c3ade81699caad2769c43e47384da9e43219e1f5956b0a57e91899800d6c4bebc45cf751bb4007f305c9
6
+ metadata.gz: 7fa8bcf45b0a9ac5bf032676109d341b7ec773479f53e71e3606a39b52a307b60c49d31ada524f25e77822a97724849a475afb5da0fffcefe7a91bb23d01f5cf
7
+ data.tar.gz: 7c78b5c2c241080b9bdbc59f402cb68034df1efe26ede947cc620118b67389272c14f063442946a1f5ea28c64204c273791c276c7b3c363b4cfa3b253bfdf611
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008-2013 Joe Ferris and thoughtbot, inc.
1
+ Copyright (c) 2008-2020 Joe Ferris and thoughtbot, inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
data/NEWS.md ADDED
@@ -0,0 +1,88 @@
1
+ factory\_bot\_rails versioning is synced with factory\_bot releases. For this reason
2
+ there might not be any notable changes in new versions of this project.
3
+
4
+ # NEWS
5
+
6
+ ## 6.1.0 (July 8, 2020)
7
+
8
+ * Changed: factory\_bot dependency to ~> 6.1.0
9
+
10
+ ## 6.0.0 (June 18, 2020)
11
+
12
+ * Fixed: generate a plural factory name when the --force-plural flag is provided
13
+ * Changed: factory\_bot dependency to ~> 6.0.0
14
+ * Removed: `"factory_bot.register_reloader"` initializer, now registering the
15
+ reloader after application initialization
16
+ * Removed: support for EOL versions of Ruby (2.3, 2.4) and Rails (4.2)
17
+
18
+ ## 5.1.1 (September 24, 2019)
19
+
20
+ * Fixed: Ensure definitions do not load before I18n is initialized
21
+
22
+ ## 5.1.0 (September 24, 2019)
23
+
24
+ * Changed: factory\_bot dependency to ~> 5.1.0
25
+
26
+ ## 5.0.2 (April 14, 2019)
27
+
28
+ * Bugfix: Reload factory\_bot whenever the application changes to avoid holding
29
+ onto stale object references
30
+ * Bugfix: Avoid watching project root when no factory definitions exist
31
+
32
+ ## 5.0.1 (February 9, 2019)
33
+
34
+ * Bugfix: Avoid watching files and directories that don't exist (to avoid a
35
+ file watching bug in Rails https://github.com/rails/rails/issues/32700)
36
+
37
+ ## 5.0.0 (February 1, 2019)
38
+
39
+ * Added: calling reload! in the Rails console will reload any factory definition files that have changed
40
+ * Added: support for custom generator templates
41
+ * Added: `definition_file_paths` configuration option, making it easier to place factories in custom locations
42
+ * Changed: namespaced models are now generated inside a directory matching the namespace
43
+ * Changed: added newline between factories generated into the same file
44
+ * Removed: support for EOL version of Ruby and Rails
45
+
46
+ ## 4.11.1 (September 7, 2018)
47
+
48
+ * Update generator to use dynamic attributes instead of deprecated static attributes
49
+
50
+ ## 4.11.0 (August 16, 2018)
51
+
52
+ * No notable changes
53
+
54
+ ## 4.10.0 (May 25, 2018)
55
+
56
+ * No notable changes
57
+
58
+ ## 4.8.2 (October 20, 2017)
59
+
60
+ * Rename factory\_girl\_rails to factory\_bot\_rails
61
+
62
+ ## 4.7.0 (April 1, 2016)
63
+
64
+ * No notable changes
65
+
66
+ ## 4.6.0 (February 1, 2016)
67
+
68
+ * No notable changes
69
+
70
+ ## 4.5.0 (October 17, 2014)
71
+
72
+ * Improved README
73
+
74
+ ## 4.4.1 (February 26, 2014)
75
+
76
+ * Support Spring
77
+
78
+ ## 4.2.1 (February 8, 2013)
79
+
80
+ * Fix bug when configuring FG and RSpec fixture directory
81
+ * Remove debugging
82
+ * Require factory\_girl\_rails explicitly in generator
83
+
84
+ ## 4.2.0 (January 25, 2013)
85
+
86
+ * Add appraisal and get test suite working reliably with turn gem
87
+ * Support MiniTest
88
+ * Allow a custom directory for factories to be specified
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # factory_bot_rails [![Build Status][ci-image]][ci] [![Code Climate][grade-image]][grade] [![Gem Version][version-image]][version] [![Reviewed by Hound][hound-image]][hound]
1
+ # factory_bot_rails [![Build Status][ci-image]][ci] [![Code Climate][grade-image]][grade] [![Gem Version][version-image]][version]
2
2
 
3
3
  [factory_bot][fb] is a fixtures replacement with a straightforward definition
4
4
  syntax, support for multiple build strategies (saved instances, unsaved
@@ -66,9 +66,14 @@ This will cause factory\_bot\_rails to automatically load factories in
66
66
  It is possible to use this setting to share factories from a gem:
67
67
 
68
68
  ```rb
69
+ begin
70
+ require 'factory_bot_rails'
71
+ rescue LoadError
72
+ end
73
+
69
74
  class MyEngine < ::Rails::Engine
70
- config.factory_bot.definition_file_paths =
71
- File.expand_path('../factories', __FILE__) if defined?(FactoryBotRails)
75
+ config.factory_bot.definition_file_paths +=
76
+ [File.expand_path('../factories', __FILE__)] if defined?(FactoryBotRails)
72
77
  end
73
78
  ```
74
79
 
@@ -109,7 +114,7 @@ end
109
114
  ```
110
115
 
111
116
  Note that factory\_bot\_rails will not automatically load files in custom
112
- locations unless you add them to `config.factory_bot.defintion_file_paths` as
117
+ locations unless you add them to `config.factory_bot.definition_file_paths` as
113
118
  well.
114
119
 
115
120
  The suffix option allows you to customize the name of the generated file with a
@@ -145,19 +150,18 @@ generating all of your factories in `test/factories.rb` or `spec/factories.rb`.
145
150
 
146
151
  Please see [CONTRIBUTING.md](CONTRIBUTING.md).
147
152
 
148
- factory_bot_rails was originally written by Joe Ferris and is now maintained by Josh
149
- Clayton. Many improvements and bugfixes were contributed by the [open source
153
+ factory_bot_rails was originally written by Joe Ferris and is maintained by thoughtbot. Many improvements and bugfixes were contributed by the [open source
150
154
  community](https://github.com/thoughtbot/factory_bot_rails/graphs/contributors).
151
155
 
152
156
  ## License
153
157
 
154
- factory_bot_rails is Copyright © 2008-2016 Joe Ferris and thoughtbot. It is free
158
+ factory_bot_rails is Copyright © 2008-2020 Joe Ferris and thoughtbot. It is free
155
159
  software, and may be redistributed under the terms specified in the
156
160
  [LICENSE](LICENSE) file.
157
161
 
158
162
  ## About thoughtbot
159
163
 
160
- ![thoughtbot](https://thoughtbot.com/logo.png)
164
+ ![thoughtbot](https://thoughtbot.com/brand_assets/93:44.svg)
161
165
 
162
166
  factory_bot_rails is maintained and funded by thoughtbot, inc.
163
167
  The names and logos for thoughtbot are trademarks of thoughtbot, inc.
@@ -2,8 +2,6 @@
2
2
 
3
3
  module FactoryBotRails
4
4
  class DefinitionFilePaths
5
- attr_reader :files, :directories
6
-
7
5
  def initialize(definition_file_paths)
8
6
  @files = []
9
7
  @directories = {}
@@ -13,5 +11,17 @@ module FactoryBotRails
13
11
  @directories[path.to_s] = [:rb]
14
12
  end
15
13
  end
14
+
15
+ def directories
16
+ @directories.select { |path| Dir.exist?(path) }
17
+ end
18
+
19
+ def files
20
+ @files.select { |file| File.exist?(file) }
21
+ end
22
+
23
+ def any?
24
+ directories.any? || files.any?
25
+ end
16
26
  end
17
27
  end
@@ -9,7 +9,7 @@ module FactoryBotRails
9
9
  @generators.test_framework(
10
10
  test_framework,
11
11
  fixture: false,
12
- fixture_replacement: :factory_bot,
12
+ fixture_replacement: :factory_bot
13
13
  )
14
14
  end
15
15
 
@@ -8,7 +8,7 @@ module FactoryBotRails
8
8
  def run
9
9
  @generators.fixture_replacement(
10
10
  fixture_replacement_setting,
11
- dir: factory_bot_directory,
11
+ dir: factory_bot_directory
12
12
  )
13
13
  end
14
14
 
@@ -18,12 +18,9 @@ module FactoryBotRails
18
18
  FactoryBot.definition_file_paths = definition_file_paths
19
19
  end
20
20
 
21
- initializer "factory_bot.register_reloader" do |app|
22
- Reloader.new(app, config).run
23
- end
24
-
25
- config.after_initialize do
21
+ config.after_initialize do |app|
26
22
  FactoryBot.find_definitions
23
+ Reloader.new(app).run
27
24
  end
28
25
 
29
26
  private
@@ -4,23 +4,23 @@ require "factory_bot_rails/definition_file_paths"
4
4
 
5
5
  module FactoryBotRails
6
6
  class Reloader
7
- def initialize(app, config)
7
+ def initialize(app)
8
8
  @app = app
9
- @config = config
9
+ @paths = DefinitionFilePaths.new(FactoryBot.definition_file_paths)
10
10
  end
11
11
 
12
12
  def run
13
+ return unless @paths.any?
14
+
13
15
  register_reloader(build_reloader)
14
16
  end
15
17
 
16
18
  private
17
19
 
18
- attr_reader :app, :config
20
+ attr_reader :app
19
21
 
20
22
  def build_reloader
21
- paths = DefinitionFilePaths.new(FactoryBot.definition_file_paths)
22
-
23
- reloader_class.new(paths.files, paths.directories) do
23
+ reloader_class.new(@paths.files, @paths.directories) do
24
24
  FactoryBot.reload
25
25
  end
26
26
  end
@@ -30,8 +30,8 @@ module FactoryBotRails
30
30
  end
31
31
 
32
32
  def register_reloader(reloader)
33
- config.to_prepare do
34
- reloader.execute_if_updated
33
+ app.reloader.to_prepare do
34
+ reloader.execute
35
35
  end
36
36
 
37
37
  app.reloaders << reloader
@@ -8,14 +8,18 @@ module FactoryBot
8
8
  File.dirname(__FILE__),
9
9
  "factory_bot",
10
10
  generator_name,
11
- "templates",
11
+ "templates"
12
12
  )
13
13
 
14
14
  File.expand_path(path)
15
15
  end
16
16
 
17
+ def factory_name
18
+ class_name.gsub("::", "").underscore
19
+ end
20
+
17
21
  def explicit_class_option
18
- return if class_name == singular_table_name.camelize
22
+ return if class_name.underscore == factory_name
19
23
 
20
24
  ", class: '#{class_name}'"
21
25
  end
@@ -8,21 +8,21 @@ module FactoryBot
8
8
  :attributes,
9
9
  type: :array,
10
10
  default: [],
11
- banner: "field:type field:type",
11
+ banner: "field:type field:type"
12
12
  )
13
13
 
14
14
  class_option(
15
15
  :dir,
16
16
  type: :string,
17
17
  default: "test/factories",
18
- desc: "The directory or file root where factories belong",
18
+ desc: "The directory or file root where factories belong"
19
19
  )
20
20
 
21
21
  class_option(
22
22
  :suffix,
23
23
  type: :string,
24
24
  default: nil,
25
- desc: "Suffix to add factory file",
25
+ desc: "Suffix to add factory file"
26
26
  )
27
27
 
28
28
  def create_fixture_file
@@ -43,7 +43,7 @@ module FactoryBot
43
43
  insert_into_file(
44
44
  factories_file,
45
45
  factory_definition,
46
- after: "FactoryBot.define do\n",
46
+ after: "FactoryBot.define do\n"
47
47
  )
48
48
  end
49
49
 
@@ -54,17 +54,17 @@ module FactoryBot
54
54
 
55
55
  def factory_definition
56
56
  <<~RUBY
57
- factory :#{singular_table_name}#{explicit_class_option} do
58
- #{factory_attributes.gsub(/^/, ' ')}
57
+ factory :#{factory_name}#{explicit_class_option} do
58
+ #{factory_attributes.gsub(/^/, " ")}
59
59
  end
60
60
 
61
61
  RUBY
62
62
  end
63
63
 
64
64
  def factory_attributes
65
- attributes.map do |attribute|
65
+ attributes.map { |attribute|
66
66
  "#{attribute.name} { #{attribute.default.inspect} }"
67
- end.join("\n")
67
+ }.join("\n")
68
68
  end
69
69
 
70
70
  def filename
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory_bot_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Ferris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-01 00:00:00.000000000 Z
11
+ date: 2020-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_bot
@@ -16,30 +16,30 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.0
19
+ version: 6.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.0.0
26
+ version: 6.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: railties
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.2.0
33
+ version: 5.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 4.2.0
40
+ version: 5.0.0
41
41
  description: factory_bot_rails provides integration between factory_bot and rails
42
- 4.2 or newer
42
+ 5.0 or newer
43
43
  email: jferris@thoughtbot.com
44
44
  executables: []
45
45
  extensions: []
@@ -47,7 +47,7 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - CONTRIBUTING.md
49
49
  - LICENSE
50
- - NEWS
50
+ - NEWS.md
51
51
  - README.md
52
52
  - lib/factory_bot_rails.rb
53
53
  - lib/factory_bot_rails/definition_file_paths.rb
@@ -79,9 +79,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  - !ruby/object:Gem::Version
80
80
  version: '0'
81
81
  requirements: []
82
- rubygems_version: 3.0.1
82
+ rubygems_version: 3.1.2
83
83
  signing_key:
84
84
  specification_version: 4
85
- summary: factory_bot_rails provides integration between factory_bot and rails 4.2
85
+ summary: factory_bot_rails provides integration between factory_bot and rails 5.0
86
86
  or newer
87
87
  test_files: []
data/NEWS DELETED
@@ -1,44 +0,0 @@
1
- factory_bot_rails versioning is synced with factory_bot releases. For this reason
2
- there might not be any notable changes in new versions of this project.
3
-
4
- 5.0.0
5
- Added: calling reload! in the Rails console will reload any factory definition files that have changed
6
- Added: support for custom generator templates
7
- Added: definition_file_paths configuration option, making it easier to place factories in custom locations
8
- Changed: namespaced models are now generated inside a directory matching the namespace
9
- Changed: added newline between factories generated into the same file
10
- Removed: support for EOL version of Ruby and Rails
11
-
12
- 4.11.1 (September 7, 2018)
13
- Update generator to use dynamic attributes instead of deprecated static attributes
14
-
15
- 4.11.0 (August 16, 2018)
16
- No notable changes
17
-
18
- 4.10.0 (May 25, 2018)
19
- No notable changes
20
-
21
- 4.8.2 (October 20, 2017)
22
- Rename factory_girl_rails to factory_bot_rails
23
-
24
- 4.7.0 (April 1, 2016)
25
- No notable changes
26
-
27
- 4.6.0 (February 1, 2016)
28
- No notable changes
29
-
30
- 4.5.0 (October 17, 2014)
31
- Improved README
32
-
33
- 4.4.1 (February 26, 2014)
34
- Support Spring
35
-
36
- 4.2.1 (February 8, 2013)
37
- Fix bug when configuring FG and RSpec fixture directory
38
- Remove debugging
39
- Require factory_girl_rails explicitly in generator
40
-
41
- 4.2.0 (January 25, 2013)
42
- Add appraisal and get test suite working reliably with turn gem
43
- Support MiniTest
44
- Allow a custom directory for factories to be specified