ffactory_girl_rails 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Appraisals +21 -0
- data/CONTRIBUTING.md +39 -0
- data/Gemfile +20 -0
- data/Gemfile.lock +144 -0
- data/LICENSE +19 -0
- data/NEWS +24 -0
- data/README.md +17 -0
- data/Rakefile +23 -0
- data/bin/setup +16 -0
- data/factory_girl_rails.gemspec +20 -0
- data/features/fixture_replacement_config.feature +132 -0
- data/features/generators.feature +54 -0
- data/features/load_definitions.feature +85 -0
- data/features/step_definitions/appraisal.rb +5 -0
- data/features/step_definitions/rails_steps.rb +42 -0
- data/features/support/env.rb +21 -0
- data/gemfiles/rails3.2.gemfile +22 -0
- data/gemfiles/rails4.1.gemfile +23 -0
- data/gemfiles/rails4.2.gemfile +21 -0
- data/gemfiles/rails5.0.gemfile +22 -0
- data/lib/factory_girl_rails/generator.rb +43 -0
- data/lib/factory_girl_rails/generators/non_rspec_generator.rb +19 -0
- data/lib/factory_girl_rails/generators/null_generator.rb +11 -0
- data/lib/factory_girl_rails/generators/rspec_generator.rb +23 -0
- data/lib/factory_girl_rails/railtie.rb +28 -0
- data/lib/factory_girl_rails.rb +4 -0
- data/lib/generators/factory_girl/model/model_generator.rb +99 -0
- data/lib/generators/factory_girl.rb +15 -0
- metadata +103 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: d027b4423c1b35fe0771923a4e978e3f3d855edd
|
|
4
|
+
data.tar.gz: a18d27cfd4a7c8b464a578544ded4e391fd3c72e
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: dd5982bc239d3622730d2f6b266ca8138b83289b303bad423538a6ef8c937ec467441d3ea0b461bf9cb0a68a4ed21dd3b790ac53013f69010a46effa2a0a26d3
|
|
7
|
+
data.tar.gz: 09bd17caea660847e3710ce3f63d2e9ff0d8a5a78cc7cc12a51396b96c73699bdbc9a20fc04c395fdd7bde527596178ebd0281fdc52bd09ac94c5567e4c29715
|
data/Appraisals
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# These are the versions of Rails we want to test against.
|
|
2
|
+
appraise 'rails3.2' do
|
|
3
|
+
gem 'rails', '~> 3.2.21'
|
|
4
|
+
gem 'sass-rails'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
appraise 'rails4.1' do
|
|
8
|
+
gem 'rails', '~> 4.1.9'
|
|
9
|
+
gem 'sass-rails'
|
|
10
|
+
gem 'spring'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
appraise 'rails4.2' do
|
|
14
|
+
gem 'rails', '~> 4.2.0'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
appraise "rails5.0" do
|
|
18
|
+
gem "activerecord", "~> 5.0.0"
|
|
19
|
+
gem "railties", "~> 5.0.0"
|
|
20
|
+
gem "rspec-rails", "~> 3.5.0.beta4"
|
|
21
|
+
end
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
We love pull requests from everyone. By participating in this project, you
|
|
4
|
+
agree to abide by the thoughtbot [code of conduct].
|
|
5
|
+
|
|
6
|
+
[code of conduct]: https://thoughtbot.com/open-source-code-of-conduct
|
|
7
|
+
|
|
8
|
+
Fork, then clone the repo:
|
|
9
|
+
|
|
10
|
+
git clone git@github.com:your-username/factory_girl_rails.git
|
|
11
|
+
|
|
12
|
+
Set up your machine:
|
|
13
|
+
|
|
14
|
+
./bin/setup
|
|
15
|
+
|
|
16
|
+
Make sure the tests pass:
|
|
17
|
+
|
|
18
|
+
rake
|
|
19
|
+
|
|
20
|
+
Make your change. Add tests for your change. Make the tests pass:
|
|
21
|
+
|
|
22
|
+
rake
|
|
23
|
+
|
|
24
|
+
Push to your fork and [submit a pull request][pr].
|
|
25
|
+
|
|
26
|
+
[pr]: https://github.com/thoughtbot/factory_girl_rails/compare/
|
|
27
|
+
|
|
28
|
+
At this point you're waiting on us. We like to at least comment on pull requests
|
|
29
|
+
within three business days (and, typically, one business day). We may suggest
|
|
30
|
+
some changes or improvements or alternatives.
|
|
31
|
+
|
|
32
|
+
Some things that will increase the chance that your pull request is accepted:
|
|
33
|
+
|
|
34
|
+
* Write tests.
|
|
35
|
+
* Follow our [style guide][style].
|
|
36
|
+
* Write a [good commit message][commit].
|
|
37
|
+
|
|
38
|
+
[style]: https://github.com/thoughtbot/guides/tree/master/style
|
|
39
|
+
[commit]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
data/Gemfile
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gemspec
|
|
4
|
+
|
|
5
|
+
gem 'appraisal'
|
|
6
|
+
gem 'aruba'
|
|
7
|
+
gem 'coffee-rails'
|
|
8
|
+
gem 'cucumber', '1.3.19'
|
|
9
|
+
gem 'jquery-rails'
|
|
10
|
+
gem 'rake'
|
|
11
|
+
gem 'rspec-rails'
|
|
12
|
+
gem 'uglifier'
|
|
13
|
+
gem 'test-unit'
|
|
14
|
+
|
|
15
|
+
gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
|
|
16
|
+
gem 'jdbc-sqlite3', platforms: :jruby
|
|
17
|
+
gem 'therubyrhino', platforms: :jruby
|
|
18
|
+
gem 'jruby-openssl', platforms: :jruby
|
|
19
|
+
|
|
20
|
+
gem 'sqlite3', platforms: :ruby
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
factory_girl_rails (4.8.0)
|
|
5
|
+
factory_girl (~> 4.8.0)
|
|
6
|
+
railties (>= 3.0.0)
|
|
7
|
+
|
|
8
|
+
GEM
|
|
9
|
+
remote: https://rubygems.org/
|
|
10
|
+
specs:
|
|
11
|
+
actionpack (4.1.1)
|
|
12
|
+
actionview (= 4.1.1)
|
|
13
|
+
activesupport (= 4.1.1)
|
|
14
|
+
rack (~> 1.5.2)
|
|
15
|
+
rack-test (~> 0.6.2)
|
|
16
|
+
actionview (4.1.1)
|
|
17
|
+
activesupport (= 4.1.1)
|
|
18
|
+
builder (~> 3.1)
|
|
19
|
+
erubis (~> 2.7.0)
|
|
20
|
+
activemodel (4.1.1)
|
|
21
|
+
activesupport (= 4.1.1)
|
|
22
|
+
builder (~> 3.1)
|
|
23
|
+
activerecord (4.1.1)
|
|
24
|
+
activemodel (= 4.1.1)
|
|
25
|
+
activesupport (= 4.1.1)
|
|
26
|
+
arel (~> 5.0.0)
|
|
27
|
+
activerecord-jdbc-adapter (1.3.15)
|
|
28
|
+
activerecord (>= 2.2)
|
|
29
|
+
activerecord-jdbcsqlite3-adapter (1.3.15)
|
|
30
|
+
activerecord-jdbc-adapter (~> 1.3.15)
|
|
31
|
+
jdbc-sqlite3 (>= 3.7.2, < 3.9)
|
|
32
|
+
activesupport (4.1.1)
|
|
33
|
+
i18n (~> 0.6, >= 0.6.9)
|
|
34
|
+
json (~> 1.7, >= 1.7.7)
|
|
35
|
+
minitest (~> 5.1)
|
|
36
|
+
thread_safe (~> 0.1)
|
|
37
|
+
tzinfo (~> 1.1)
|
|
38
|
+
appraisal (1.0.3)
|
|
39
|
+
bundler
|
|
40
|
+
rake
|
|
41
|
+
thor (>= 0.14.0)
|
|
42
|
+
arel (5.0.1.20140414130214)
|
|
43
|
+
aruba (0.5.4)
|
|
44
|
+
childprocess (>= 0.3.6)
|
|
45
|
+
cucumber (>= 1.1.1)
|
|
46
|
+
rspec-expectations (>= 2.7.0)
|
|
47
|
+
builder (3.2.2)
|
|
48
|
+
childprocess (0.5.3)
|
|
49
|
+
ffi (~> 1.0, >= 1.0.11)
|
|
50
|
+
coffee-rails (4.0.1)
|
|
51
|
+
coffee-script (>= 2.2.0)
|
|
52
|
+
railties (>= 4.0.0, < 5.0)
|
|
53
|
+
coffee-script (2.2.0)
|
|
54
|
+
coffee-script-source
|
|
55
|
+
execjs
|
|
56
|
+
coffee-script-source (1.7.0)
|
|
57
|
+
cucumber (1.3.19)
|
|
58
|
+
builder (>= 2.1.2)
|
|
59
|
+
diff-lcs (>= 1.1.3)
|
|
60
|
+
gherkin (~> 2.12)
|
|
61
|
+
multi_json (>= 1.7.5, < 2.0)
|
|
62
|
+
multi_test (>= 0.1.2)
|
|
63
|
+
diff-lcs (1.2.5)
|
|
64
|
+
erubis (2.7.0)
|
|
65
|
+
execjs (2.0.2)
|
|
66
|
+
factory_girl (4.8.0)
|
|
67
|
+
activesupport (>= 3.0.0)
|
|
68
|
+
ffi (1.9.3)
|
|
69
|
+
ffi (1.9.3-java)
|
|
70
|
+
gherkin (2.12.2)
|
|
71
|
+
multi_json (~> 1.3)
|
|
72
|
+
gherkin (2.12.2-java)
|
|
73
|
+
multi_json (~> 1.3)
|
|
74
|
+
i18n (0.7.0)
|
|
75
|
+
jdbc-sqlite3 (3.8.7)
|
|
76
|
+
jquery-rails (3.1.0)
|
|
77
|
+
railties (>= 3.0, < 5.0)
|
|
78
|
+
thor (>= 0.14, < 2.0)
|
|
79
|
+
jruby-openssl (0.9.6-java)
|
|
80
|
+
json (1.8.3)
|
|
81
|
+
json (1.8.3-java)
|
|
82
|
+
minitest (5.9.0)
|
|
83
|
+
multi_json (1.11.2)
|
|
84
|
+
multi_test (0.1.2)
|
|
85
|
+
power_assert (0.2.3)
|
|
86
|
+
rack (1.5.5)
|
|
87
|
+
rack-test (0.6.3)
|
|
88
|
+
rack (>= 1.0)
|
|
89
|
+
railties (4.1.1)
|
|
90
|
+
actionpack (= 4.1.1)
|
|
91
|
+
activesupport (= 4.1.1)
|
|
92
|
+
rake (>= 0.8.7)
|
|
93
|
+
thor (>= 0.18.1, < 2.0)
|
|
94
|
+
rake (11.1.2)
|
|
95
|
+
rspec-core (2.14.8)
|
|
96
|
+
rspec-expectations (2.14.5)
|
|
97
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
|
98
|
+
rspec-mocks (2.14.6)
|
|
99
|
+
rspec-rails (2.14.2)
|
|
100
|
+
actionpack (>= 3.0)
|
|
101
|
+
activemodel (>= 3.0)
|
|
102
|
+
activesupport (>= 3.0)
|
|
103
|
+
railties (>= 3.0)
|
|
104
|
+
rspec-core (~> 2.14.0)
|
|
105
|
+
rspec-expectations (~> 2.14.0)
|
|
106
|
+
rspec-mocks (~> 2.14.0)
|
|
107
|
+
sqlite3 (1.3.9)
|
|
108
|
+
test-unit (3.0.9)
|
|
109
|
+
power_assert
|
|
110
|
+
therubyrhino (2.0.4)
|
|
111
|
+
therubyrhino_jar (>= 1.7.3)
|
|
112
|
+
therubyrhino_jar (1.7.4)
|
|
113
|
+
thor (0.19.1)
|
|
114
|
+
thread_safe (0.3.5)
|
|
115
|
+
thread_safe (0.3.5-java)
|
|
116
|
+
tzinfo (1.2.2)
|
|
117
|
+
thread_safe (~> 0.1)
|
|
118
|
+
uglifier (2.5.0)
|
|
119
|
+
execjs (>= 0.3.0)
|
|
120
|
+
json (>= 1.8.0)
|
|
121
|
+
|
|
122
|
+
PLATFORMS
|
|
123
|
+
java
|
|
124
|
+
ruby
|
|
125
|
+
|
|
126
|
+
DEPENDENCIES
|
|
127
|
+
activerecord-jdbcsqlite3-adapter
|
|
128
|
+
appraisal
|
|
129
|
+
aruba
|
|
130
|
+
coffee-rails
|
|
131
|
+
cucumber (= 1.3.19)
|
|
132
|
+
factory_girl_rails!
|
|
133
|
+
jdbc-sqlite3
|
|
134
|
+
jquery-rails
|
|
135
|
+
jruby-openssl
|
|
136
|
+
rake
|
|
137
|
+
rspec-rails
|
|
138
|
+
sqlite3
|
|
139
|
+
test-unit
|
|
140
|
+
therubyrhino
|
|
141
|
+
uglifier
|
|
142
|
+
|
|
143
|
+
BUNDLED WITH
|
|
144
|
+
1.13.6
|
data/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2008-2013 Joe Ferris and thoughtbot, inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
+
THE SOFTWARE.
|
data/NEWS
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
factory_girl_rails versioning is synced with factory_girl releases. For this reason
|
|
2
|
+
there might not be any notable changes in new versions of this project.
|
|
3
|
+
|
|
4
|
+
4.7.0 (April 1, 2016)
|
|
5
|
+
No notable changes
|
|
6
|
+
|
|
7
|
+
4.6.0 (February 1, 2016)
|
|
8
|
+
No notable changes
|
|
9
|
+
|
|
10
|
+
4.5.0 (October 17, 2014)
|
|
11
|
+
Improved README
|
|
12
|
+
|
|
13
|
+
4.4.1 (February 26, 2014)
|
|
14
|
+
Support Spring
|
|
15
|
+
|
|
16
|
+
4.2.1 (February 8, 2013)
|
|
17
|
+
Fix bug when configuring FG and RSpec fixture directory
|
|
18
|
+
Remove debugging
|
|
19
|
+
Require factory_girl_rails explicitly in generator
|
|
20
|
+
|
|
21
|
+
4.2.0 (January 25, 2013)
|
|
22
|
+
Add appraisal and get test suite working reliably with turn gem
|
|
23
|
+
Support MiniTest
|
|
24
|
+
Allow a custom directory for factories to be specified
|
data/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
ffactory_girl_rails is a factory_bot_rails but ffactory_girl_rails
|
|
2
|
+
|
|
3
|
+
## Credits
|
|
4
|
+
|
|
5
|
+
[factory_girl][fg] was originally written by Joe Ferris.
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
factory_girl is maintained and funded by [thoughtbot, inc](http://thoughtbot.com/community)
|
|
10
|
+
|
|
11
|
+
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
|
|
12
|
+
|
|
13
|
+
## License
|
|
14
|
+
|
|
15
|
+
factory_girl_rails is Copyright © 2008-2016 Joe Ferris and thoughtbot. It is free
|
|
16
|
+
software, and may be redistributed under the terms specified in the
|
|
17
|
+
[LICENSE](LICENSE) file.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'bundler/setup'
|
|
2
|
+
require 'bundler/gem_tasks'
|
|
3
|
+
require 'cucumber/rake/task'
|
|
4
|
+
|
|
5
|
+
Cucumber::Rake::Task.new(:cucumber) do |t|
|
|
6
|
+
t.fork = true
|
|
7
|
+
t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'progress')]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
require 'appraisal'
|
|
11
|
+
|
|
12
|
+
desc 'Run the test suite'
|
|
13
|
+
task :default do |t|
|
|
14
|
+
if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
|
|
15
|
+
exec 'rake cucumber'
|
|
16
|
+
else
|
|
17
|
+
Rake::Task['appraise'].execute
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
task :appraise => ['appraisal:install'] do |t|
|
|
22
|
+
exec 'rake appraisal'
|
|
23
|
+
end
|
data/bin/setup
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
|
|
3
|
+
# Run this script immediately after cloning the codebase.
|
|
4
|
+
|
|
5
|
+
# Exit if any subcommand fails
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# Set up Ruby dependencies via Bundler
|
|
9
|
+
bundle install
|
|
10
|
+
|
|
11
|
+
# Add binstubs to PATH in ~/.zshenv like this:
|
|
12
|
+
# export PATH=".git/safe/../../bin:$PATH"
|
|
13
|
+
mkdir -p .git/safe
|
|
14
|
+
|
|
15
|
+
# Set up Appraisal to help us test against multiple Rails versions
|
|
16
|
+
bundle exec appraisal install
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Gem::Specification.new do |s|
|
|
2
|
+
s.name = %q{ffactory_girl_rails}
|
|
3
|
+
s.version = '4.8.0'
|
|
4
|
+
s.authors = ["Joe Ferris"]
|
|
5
|
+
s.email = %q{jferris@thoughtbot.com}
|
|
6
|
+
s.homepage = "http://github.com/kalys/ffactory_girl_rails"
|
|
7
|
+
s.summary = %q{ffactory_girl_rails provides integration between
|
|
8
|
+
ffactory_girl and rails 3 or newer}
|
|
9
|
+
s.description = %q{ffactory_girl_rails provides integration between
|
|
10
|
+
ffactory_girl and rails 3 or newer (currently just automatic factory definition
|
|
11
|
+
loading)}
|
|
12
|
+
|
|
13
|
+
s.files = Dir['**/*'].keep_if { |file| File.file?(file) }
|
|
14
|
+
s.require_paths = ["lib"]
|
|
15
|
+
s.executables = []
|
|
16
|
+
s.license = "MIT"
|
|
17
|
+
|
|
18
|
+
s.add_runtime_dependency('railties', '>= 3.0.0')
|
|
19
|
+
s.add_runtime_dependency('ffactory_girl', '~> 4.8.0')
|
|
20
|
+
end
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
Feature:
|
|
2
|
+
In order to not have to manually configure Factory Girl as the Rails testing fixture replacement by using the --fixture-replacement=factory_girl option
|
|
3
|
+
I would like the Factory Girl Rails gem to configure Factory Girl as the fixture replacement.
|
|
4
|
+
|
|
5
|
+
Background:
|
|
6
|
+
Given I successfully run `bundle exec rails new testapp`
|
|
7
|
+
And I cd to "testapp"
|
|
8
|
+
And I add "factory_girl_rails" from this project as a dependency
|
|
9
|
+
|
|
10
|
+
Scenario: Using Factory Girl and Factory Girl Rails with Test Unit generates a factory file and does not generate a fixture file
|
|
11
|
+
And I run `bundle install` with a clean environment
|
|
12
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
13
|
+
Then the following files should exist:
|
|
14
|
+
| test/factories/users.rb |
|
|
15
|
+
And the following files should not exist:
|
|
16
|
+
| test/fixtures/users.yml |
|
|
17
|
+
|
|
18
|
+
Scenario: Using Factory Girl and Factory Girl Rails with RSpec should generate a factory file
|
|
19
|
+
When I add "rspec-rails" as a dependency
|
|
20
|
+
And I configure the factories as:
|
|
21
|
+
"""
|
|
22
|
+
config.generators do |g|
|
|
23
|
+
g.test_framework :rspec, fixture: true
|
|
24
|
+
g.fixture_replacement :factory_girl
|
|
25
|
+
end
|
|
26
|
+
"""
|
|
27
|
+
And I run `bundle install` with a clean environment
|
|
28
|
+
Then the output should contain "rspec-rails"
|
|
29
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
30
|
+
Then the following files should exist:
|
|
31
|
+
| spec/factories/users.rb |
|
|
32
|
+
And the following files should not exist:
|
|
33
|
+
| spec/fixtures/users.yml |
|
|
34
|
+
|
|
35
|
+
Scenario: Using Factory Girl and Factory Girl Rails with RSpec and suffix configuration should generate a factory file with suffix
|
|
36
|
+
When I add "rspec-rails" as a dependency
|
|
37
|
+
And I configure the factories as:
|
|
38
|
+
"""
|
|
39
|
+
config.generators do |g|
|
|
40
|
+
g.test_framework :rspec, fixture: true
|
|
41
|
+
g.fixture_replacement :factory_girl, suffix: 'factory'
|
|
42
|
+
end
|
|
43
|
+
"""
|
|
44
|
+
And I run `bundle install` with a clean environment
|
|
45
|
+
Then the output should contain "rspec-rails"
|
|
46
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
47
|
+
Then the following files should exist:
|
|
48
|
+
| spec/factories/users_factory.rb |
|
|
49
|
+
And the following files should not exist:
|
|
50
|
+
| spec/fixtures/users.yml |
|
|
51
|
+
|
|
52
|
+
Scenario: Using Factory Girl and Factory Girl Rails does not override a manually-configured factories directory using RSpec
|
|
53
|
+
When I add "rspec-rails" as a dependency
|
|
54
|
+
And I configure the factories directory as "custom/dir"
|
|
55
|
+
And I run `bundle install` with a clean environment
|
|
56
|
+
Then the output should contain "rspec-rails"
|
|
57
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
58
|
+
Then the following files should not exist:
|
|
59
|
+
| test/factories/users.rb |
|
|
60
|
+
| spec/factories/users.rb |
|
|
61
|
+
But the following files should exist:
|
|
62
|
+
| custom/dir/users.rb |
|
|
63
|
+
|
|
64
|
+
Scenario: Using Factory Girl and Factory Girl Rails does not override a manually-configured factories directory using Test::Unit
|
|
65
|
+
When I configure the factories directory as "custom/dir"
|
|
66
|
+
And I run `bundle install` with a clean environment
|
|
67
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
68
|
+
Then the following files should not exist:
|
|
69
|
+
| test/factories/users.rb |
|
|
70
|
+
| spec/factories/users.rb |
|
|
71
|
+
But the following files should exist:
|
|
72
|
+
| custom/dir/users.rb |
|
|
73
|
+
|
|
74
|
+
Scenario: Using Factory Girl Rails with MiniTest should generate a factory file
|
|
75
|
+
When I run `bundle install` with a clean environment
|
|
76
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
77
|
+
Then the following files should exist:
|
|
78
|
+
| test/factories/users.rb |
|
|
79
|
+
But the following files should not exist:
|
|
80
|
+
| spec/fixtures/users.yml |
|
|
81
|
+
|
|
82
|
+
Scenario: Using Factory Girl Rails with MiniTest and a custom directory should generate a factory file
|
|
83
|
+
When I configure the factories directory as "custom/dir"
|
|
84
|
+
And I run `bundle install` with a clean environment
|
|
85
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
86
|
+
Then the following files should exist:
|
|
87
|
+
| custom/dir/users.rb |
|
|
88
|
+
But the following files should not exist:
|
|
89
|
+
| spec/fixtures/users.yml |
|
|
90
|
+
|
|
91
|
+
Scenario: Disable Factory Girl generator
|
|
92
|
+
When I configure the factories as:
|
|
93
|
+
"""
|
|
94
|
+
config.generators do |g|
|
|
95
|
+
g.factory_girl false
|
|
96
|
+
end
|
|
97
|
+
"""
|
|
98
|
+
And I run `bundle install` with a clean environment
|
|
99
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
100
|
+
Then the following files should not exist:
|
|
101
|
+
| test/factories/users.rb |
|
|
102
|
+
| spec/factories/users.rb |
|
|
103
|
+
|
|
104
|
+
Scenario: Use a suffix with the Factory Girl generator
|
|
105
|
+
When I add "rspec-rails" as a dependency
|
|
106
|
+
When I configure the factories as:
|
|
107
|
+
"""
|
|
108
|
+
config.generators do |g|
|
|
109
|
+
g.factory_girl suffix: 'suffix'
|
|
110
|
+
end
|
|
111
|
+
"""
|
|
112
|
+
And I run `bundle install` with a clean environment
|
|
113
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
114
|
+
Then the following files should exist:
|
|
115
|
+
| spec/factories/users_suffix.rb |
|
|
116
|
+
Then the following files should not exist:
|
|
117
|
+
| spec/factories/users.rb |
|
|
118
|
+
|
|
119
|
+
Scenario: Use a filename_proc with the Factory Girl generator
|
|
120
|
+
When I add "rspec-rails" as a dependency
|
|
121
|
+
When I configure the factories as:
|
|
122
|
+
"""
|
|
123
|
+
config.generators do |g|
|
|
124
|
+
g.factory_girl filename_proc: Proc.new { |tb| "prefix_#{tb.singularize}_suffix" }
|
|
125
|
+
end
|
|
126
|
+
"""
|
|
127
|
+
And I run `bundle install` with a clean environment
|
|
128
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
129
|
+
Then the following files should exist:
|
|
130
|
+
| spec/factories/prefix_user_suffix.rb |
|
|
131
|
+
Then the following files should not exist:
|
|
132
|
+
| spec/factories/users.rb |
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
Feature:
|
|
2
|
+
In order to easily generate factory files instead of fixture files when generating models
|
|
3
|
+
As a user of Rails and Factory Girl
|
|
4
|
+
I would like to use factory_girl_rails generators.
|
|
5
|
+
|
|
6
|
+
Background:
|
|
7
|
+
Given I successfully run `bundle exec rails new testapp`
|
|
8
|
+
And I cd to "testapp"
|
|
9
|
+
And I add "factory_girl_rails" from this project as a dependency
|
|
10
|
+
|
|
11
|
+
Scenario: The factory_girl_rails generators create a factory file for each model if there is not a factories.rb file
|
|
12
|
+
When I run `bundle install` with a clean environment
|
|
13
|
+
And I run `bundle exec rails generate model User name:string age:integer` with a clean environment
|
|
14
|
+
And I run `bundle exec rails generate model Namespaced::User name:string` with a clean environment
|
|
15
|
+
Then the output should contain "test/factories/users.rb"
|
|
16
|
+
And the output should contain "test/factories/namespaced_users.rb"
|
|
17
|
+
And the file "test/factories/users.rb" should contain exactly:
|
|
18
|
+
"""
|
|
19
|
+
FactoryGirl.define do
|
|
20
|
+
factory :user do
|
|
21
|
+
name "MyString"
|
|
22
|
+
age 1
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
"""
|
|
27
|
+
And the file "test/factories/namespaced_users.rb" should contain "factory :namespaced_user, class: 'Namespaced::User' do"
|
|
28
|
+
|
|
29
|
+
Scenario: The factory_girl_rails generators add a factory in the correct spot
|
|
30
|
+
When I run `bundle install` with a clean environment
|
|
31
|
+
And I write to "test/factories.rb" with:
|
|
32
|
+
"""
|
|
33
|
+
FactoryGirl.define do
|
|
34
|
+
end
|
|
35
|
+
"""
|
|
36
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
37
|
+
Then the file "test/factories.rb" should contain exactly:
|
|
38
|
+
"""
|
|
39
|
+
FactoryGirl.define do
|
|
40
|
+
factory :user do
|
|
41
|
+
name "MyString"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
Scenario: The factory_girl_rails generators does not create a factory file for each model if there is a factories.rb file in the test directory
|
|
47
|
+
When I run `bundle install` with a clean environment
|
|
48
|
+
And I write to "test/factories.rb" with:
|
|
49
|
+
"""
|
|
50
|
+
FactoryGirl.define do
|
|
51
|
+
end
|
|
52
|
+
"""
|
|
53
|
+
And I run `bundle exec rails generate model User name:string` with a clean environment
|
|
54
|
+
Then the file "test/factories.rb" should contain "factory :user do"
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
Feature: automatically load step definitions
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
When I successfully run `bundle exec rails new testapp`
|
|
5
|
+
And I cd to "testapp"
|
|
6
|
+
And I add "factory_girl_rails" from this project as a dependency
|
|
7
|
+
And I add "test-unit" as a dependency
|
|
8
|
+
And I run `bundle install` with a clean environment
|
|
9
|
+
And I write to "db/migrate/1_create_users.rb" with:
|
|
10
|
+
"""
|
|
11
|
+
class CreateUsers < ActiveRecord::Migration
|
|
12
|
+
def self.up
|
|
13
|
+
create_table :users do |t|
|
|
14
|
+
t.string :name
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
"""
|
|
19
|
+
When I run `bundle exec rake db:migrate` with a clean environment
|
|
20
|
+
And I write to "app/models/user.rb" with:
|
|
21
|
+
"""
|
|
22
|
+
class User < ActiveRecord::Base
|
|
23
|
+
end
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
Scenario: generate a Rails application and use factory definitions
|
|
27
|
+
When I write to "test/factories.rb" with:
|
|
28
|
+
"""
|
|
29
|
+
FactoryGirl.define do
|
|
30
|
+
factory :user do
|
|
31
|
+
name "Frank"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
"""
|
|
35
|
+
When I write to "test/unit/user_test.rb" with:
|
|
36
|
+
"""
|
|
37
|
+
require 'test_helper'
|
|
38
|
+
|
|
39
|
+
class UserTest < ActiveSupport::TestCase
|
|
40
|
+
test "use factory" do
|
|
41
|
+
user = FactoryGirl.create(:user)
|
|
42
|
+
assert_equal 'Frank', user.name
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
"""
|
|
46
|
+
When I run `bundle exec rake test` with a clean environment
|
|
47
|
+
Then the output should contain "1 assertions, 0 failures, 0 errors"
|
|
48
|
+
|
|
49
|
+
Scenario: use factories advertised by railties/engines/3rd-party gems
|
|
50
|
+
When I append to "config/application.rb" with:
|
|
51
|
+
"""
|
|
52
|
+
require File.expand_path('../../lib/some_railtie/railties.rb', __FILE__)
|
|
53
|
+
"""
|
|
54
|
+
When I write to "lib/some_railtie/railties.rb" with:
|
|
55
|
+
"""
|
|
56
|
+
module SomeRailtie
|
|
57
|
+
class Railtie < ::Rails::Engine
|
|
58
|
+
|
|
59
|
+
initializer "some_railtie.factories", :after => "factory_girl.set_factory_paths" do
|
|
60
|
+
FactoryGirl.definition_file_paths << File.expand_path('../factories', __FILE__)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
"""
|
|
65
|
+
When I write to "lib/some_railtie/factories.rb" with:
|
|
66
|
+
"""
|
|
67
|
+
FactoryGirl.define do
|
|
68
|
+
factory :factory_from_some_railtie, class: 'User' do
|
|
69
|
+
name 'Artem'
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
"""
|
|
73
|
+
When I write to "test/unit/user_test.rb" with:
|
|
74
|
+
"""
|
|
75
|
+
require 'test_helper'
|
|
76
|
+
|
|
77
|
+
class UserTest < ActiveSupport::TestCase
|
|
78
|
+
test "use factory of some_railtie" do
|
|
79
|
+
user = FactoryGirl.create(:factory_from_some_railtie)
|
|
80
|
+
assert_equal 'Artem', user.name
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
"""
|
|
84
|
+
When I run `bundle exec rake test` with a clean environment
|
|
85
|
+
Then the output should contain "1 assertions, 0 failures, 0 errors"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
When /^I add "([^"]+)" from this project as a dependency$/ do |gem_name|
|
|
2
|
+
append_to_file('Gemfile', %{gem "#{gem_name}", :path => "#{PROJECT_ROOT}"\n})
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
When /^I add "([^"]+)" as a dependency$/ do |gem_name|
|
|
6
|
+
append_to_file('Gemfile', %{gem "#{gem_name}"\n})
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
When /^I print out "([^"]*)"$/ do |path|
|
|
10
|
+
in_current_dir do
|
|
11
|
+
File.open(path, 'r') do |f|
|
|
12
|
+
puts f.inspect
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
When /^I configure the factories as:$/ do |string|
|
|
18
|
+
append_to_file File.join('config', 'application.rb'), <<-END
|
|
19
|
+
class Testapp::Application
|
|
20
|
+
#{string}
|
|
21
|
+
end
|
|
22
|
+
END
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
When /^I configure the factories directory as "([^"]+)"$/ do |factory_dir|
|
|
26
|
+
append_to_file File.join('config', 'application.rb'), <<-END
|
|
27
|
+
class Testapp::Application
|
|
28
|
+
config.generators do |g|
|
|
29
|
+
g.fixture_replacement :factory_girl, :dir => "#{factory_dir}"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
END
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
When /^I comment out gem "([^"]*)" from my Gemfile$/ do |gem_name|
|
|
36
|
+
in_current_dir do
|
|
37
|
+
content = File.read('Gemfile')
|
|
38
|
+
File.open('Gemfile', 'w') do |f|
|
|
39
|
+
f.write content.sub(/gem ['"]#{gem_name}/, '#\1')
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'aruba/cucumber'
|
|
2
|
+
|
|
3
|
+
PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')).freeze
|
|
4
|
+
|
|
5
|
+
Aruba.configure do |config|
|
|
6
|
+
config.exit_timeout = Integer ENV.fetch("ARUBA_TIMEOUT") { 120 }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
Aruba.configure do |config|
|
|
10
|
+
config.before_cmd do |cmd|
|
|
11
|
+
set_env('JRUBY_OPTS', "-X-C #{ENV['JRUBY_OPTS']}") # disable JIT since these processes are so short lived
|
|
12
|
+
|
|
13
|
+
java_options = ENV['JAVA_OPTS']
|
|
14
|
+
|
|
15
|
+
if 1.size == 4 # 4 for 32 bit java, 8 for 64 bit java.
|
|
16
|
+
set_env('JAVA_OPTS', "-d32 #{java_options}")
|
|
17
|
+
else
|
|
18
|
+
set_env('JAVA_OPTS', "-XX:+TieredCompilation -XX:TieredStopAtLevel=1 #{java_options}")
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end if RUBY_PLATFORM == 'java'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "aruba"
|
|
7
|
+
gem "coffee-rails"
|
|
8
|
+
gem "cucumber", "1.3.19"
|
|
9
|
+
gem "jquery-rails"
|
|
10
|
+
gem "rake"
|
|
11
|
+
gem "rspec-rails"
|
|
12
|
+
gem "uglifier"
|
|
13
|
+
gem "test-unit"
|
|
14
|
+
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
|
15
|
+
gem "jdbc-sqlite3", :platforms => :jruby
|
|
16
|
+
gem "therubyrhino", :platforms => :jruby
|
|
17
|
+
gem "jruby-openssl", :platforms => :jruby
|
|
18
|
+
gem "sqlite3", :platforms => :ruby
|
|
19
|
+
gem "rails", "~> 3.2.21"
|
|
20
|
+
gem "sass-rails"
|
|
21
|
+
|
|
22
|
+
gemspec :path => "../"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "aruba"
|
|
7
|
+
gem "coffee-rails"
|
|
8
|
+
gem "cucumber", "1.3.19"
|
|
9
|
+
gem "jquery-rails"
|
|
10
|
+
gem "rake"
|
|
11
|
+
gem "rspec-rails"
|
|
12
|
+
gem "uglifier"
|
|
13
|
+
gem "test-unit"
|
|
14
|
+
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
|
15
|
+
gem "jdbc-sqlite3", :platforms => :jruby
|
|
16
|
+
gem "therubyrhino", :platforms => :jruby
|
|
17
|
+
gem "jruby-openssl", :platforms => :jruby
|
|
18
|
+
gem "sqlite3", :platforms => :ruby
|
|
19
|
+
gem "rails", "~> 4.1.9"
|
|
20
|
+
gem "sass-rails"
|
|
21
|
+
gem "spring"
|
|
22
|
+
|
|
23
|
+
gemspec :path => "../"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "aruba"
|
|
7
|
+
gem "coffee-rails"
|
|
8
|
+
gem "cucumber", "1.3.19"
|
|
9
|
+
gem "jquery-rails"
|
|
10
|
+
gem "rake"
|
|
11
|
+
gem "rspec-rails"
|
|
12
|
+
gem "uglifier"
|
|
13
|
+
gem "test-unit"
|
|
14
|
+
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
|
15
|
+
gem "jdbc-sqlite3", :platforms => :jruby
|
|
16
|
+
gem "therubyrhino", :platforms => :jruby
|
|
17
|
+
gem "jruby-openssl", :platforms => :jruby
|
|
18
|
+
gem "sqlite3", :platforms => :ruby
|
|
19
|
+
gem "rails", "~> 4.2.0"
|
|
20
|
+
|
|
21
|
+
gemspec :path => "../"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# This file was generated by Appraisal
|
|
2
|
+
|
|
3
|
+
source "https://rubygems.org"
|
|
4
|
+
|
|
5
|
+
gem "appraisal"
|
|
6
|
+
gem "aruba"
|
|
7
|
+
gem "coffee-rails"
|
|
8
|
+
gem "cucumber", "1.3.19"
|
|
9
|
+
gem "jquery-rails"
|
|
10
|
+
gem "rake"
|
|
11
|
+
gem "rspec-rails", "~> 3.5.0.beta4"
|
|
12
|
+
gem "uglifier"
|
|
13
|
+
gem "test-unit"
|
|
14
|
+
gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
|
|
15
|
+
gem "jdbc-sqlite3", :platforms => :jruby
|
|
16
|
+
gem "therubyrhino", :platforms => :jruby
|
|
17
|
+
gem "jruby-openssl", :platforms => :jruby
|
|
18
|
+
gem "sqlite3", :platforms => :ruby
|
|
19
|
+
gem "activerecord", "~> 5.0.0"
|
|
20
|
+
gem "railties", "~> 5.0.0"
|
|
21
|
+
|
|
22
|
+
gemspec :path => "../"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'factory_girl_rails/generators/rspec_generator'
|
|
2
|
+
require 'factory_girl_rails/generators/non_rspec_generator'
|
|
3
|
+
require 'factory_girl_rails/generators/null_generator'
|
|
4
|
+
|
|
5
|
+
module FactoryGirlRails
|
|
6
|
+
class Generator
|
|
7
|
+
def initialize(config)
|
|
8
|
+
@generators = if config.respond_to?(:app_generators)
|
|
9
|
+
config.app_generators
|
|
10
|
+
else
|
|
11
|
+
config.generators
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def run
|
|
16
|
+
generator.new(@generators).run
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def generator
|
|
20
|
+
if factory_girl_disabled?
|
|
21
|
+
Generators::NullGenerator
|
|
22
|
+
else
|
|
23
|
+
if test_framework == :rspec
|
|
24
|
+
Generators::RSpecGenerator
|
|
25
|
+
else
|
|
26
|
+
Generators::NonRSpecGenerator
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_framework
|
|
32
|
+
rails_options[:test_framework]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def factory_girl_disabled?
|
|
36
|
+
rails_options[:factory_girl] == false
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def rails_options
|
|
40
|
+
@generators.options[:rails]
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module FactoryGirlRails
|
|
2
|
+
module Generators
|
|
3
|
+
class NonRSpecGenerator
|
|
4
|
+
def initialize(generators)
|
|
5
|
+
@generators = generators
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def run
|
|
9
|
+
@generators.test_framework test_framework, fixture: false, fixture_replacement: :factory_girl
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def test_framework
|
|
15
|
+
@generators.options[:rails][:test_framework]
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module FactoryGirlRails
|
|
2
|
+
module Generators
|
|
3
|
+
class RSpecGenerator
|
|
4
|
+
def initialize(generators)
|
|
5
|
+
@generators = generators
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def run
|
|
9
|
+
@generators.fixture_replacement fixture_replacement_setting, dir: factory_girl_directory
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def fixture_replacement_setting
|
|
15
|
+
@generators.options[:rails][:fixture_replacement] || :factory_girl
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def factory_girl_directory
|
|
19
|
+
@generators.options.fetch(:factory_girl, {}).fetch(:dir, 'spec/factories')
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'factory_girl'
|
|
2
|
+
require 'factory_girl_rails/generator'
|
|
3
|
+
require 'rails'
|
|
4
|
+
|
|
5
|
+
module FactoryGirl
|
|
6
|
+
class Railtie < Rails::Railtie
|
|
7
|
+
|
|
8
|
+
initializer "factory_girl.set_fixture_replacement" do
|
|
9
|
+
FactoryGirlRails::Generator.new(config).run
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
initializer "factory_girl.set_factory_paths" do
|
|
13
|
+
FactoryGirl.definition_file_paths = [
|
|
14
|
+
Rails.root.join('factories'),
|
|
15
|
+
Rails.root.join('test', 'factories'),
|
|
16
|
+
Rails.root.join('spec', 'factories')
|
|
17
|
+
]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
config.after_initialize do
|
|
21
|
+
FactoryGirl.find_definitions
|
|
22
|
+
|
|
23
|
+
if defined?(Spring)
|
|
24
|
+
Spring.after_fork { FactoryGirl.reload }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'generators/factory_girl'
|
|
2
|
+
require 'factory_girl_rails'
|
|
3
|
+
|
|
4
|
+
module FactoryGirl
|
|
5
|
+
module Generators
|
|
6
|
+
class ModelGenerator < Base
|
|
7
|
+
argument(
|
|
8
|
+
:attributes,
|
|
9
|
+
type: :array,
|
|
10
|
+
default: [],
|
|
11
|
+
banner: "field:type field:type"
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
class_option(
|
|
15
|
+
:dir,
|
|
16
|
+
type: :string,
|
|
17
|
+
default: "test/factories",
|
|
18
|
+
desc: "The directory or file root where factories belong"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
class_option(
|
|
22
|
+
:suffix,
|
|
23
|
+
type: :string,
|
|
24
|
+
default: nil,
|
|
25
|
+
desc: "Suffix to add factory file"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def create_fixture_file
|
|
29
|
+
if File.exist?(factories_file)
|
|
30
|
+
insert_factory_into_existing_file
|
|
31
|
+
else
|
|
32
|
+
create_factory_file
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def factories_file
|
|
39
|
+
options[:dir] + ".rb"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def insert_factory_into_existing_file
|
|
43
|
+
insert_into_file(
|
|
44
|
+
factories_file,
|
|
45
|
+
factory_definition,
|
|
46
|
+
after: "FactoryGirl.define do\n"
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def create_factory_file
|
|
51
|
+
file = File.join(options[:dir], "#{filename}.rb")
|
|
52
|
+
create_file(file, single_file_factory_definition)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def factory_definition
|
|
56
|
+
<<-RUBY
|
|
57
|
+
factory :#{singular_table_name}#{explicit_class_option} do
|
|
58
|
+
#{factory_attributes.gsub(/^/, " ")}
|
|
59
|
+
end
|
|
60
|
+
RUBY
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def single_file_factory_definition
|
|
64
|
+
<<-RUBY
|
|
65
|
+
FactoryGirl.define do
|
|
66
|
+
#{factory_definition.chomp}
|
|
67
|
+
end
|
|
68
|
+
RUBY
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def factory_attributes
|
|
72
|
+
attributes.map do |attribute|
|
|
73
|
+
"#{attribute.name} #{attribute.default.inspect}"
|
|
74
|
+
end.join("\n")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def filename
|
|
78
|
+
if factory_girl_options[:filename_proc].present?
|
|
79
|
+
factory_girl_options[:filename_proc].call(table_name)
|
|
80
|
+
else
|
|
81
|
+
[table_name, filename_suffix].compact.join('_')
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def filename_suffix
|
|
86
|
+
factory_girl_options[:suffix] || options[:suffix]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def factory_girl_options
|
|
90
|
+
generators.options[:factory_girl] || {}
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def generators
|
|
94
|
+
config = FactoryGirl::Railtie.config
|
|
95
|
+
config.respond_to?(:app_generators) ? config.app_generators : config.generators
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'rails/generators/named_base'
|
|
2
|
+
|
|
3
|
+
module FactoryGirl
|
|
4
|
+
module Generators
|
|
5
|
+
class Base < Rails::Generators::NamedBase #:nodoc:
|
|
6
|
+
def self.source_root
|
|
7
|
+
@_factory_girl_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'factory_girl', generator_name, 'templates'))
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def explicit_class_option
|
|
11
|
+
", class: '#{class_name}'" unless class_name == singular_table_name.camelize
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ffactory_girl_rails
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 4.8.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Joe Ferris
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-10-22 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: railties
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 3.0.0
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 3.0.0
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: ffactory_girl
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 4.8.0
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 4.8.0
|
|
41
|
+
description: |-
|
|
42
|
+
ffactory_girl_rails provides integration between
|
|
43
|
+
ffactory_girl and rails 3 or newer (currently just automatic factory definition
|
|
44
|
+
loading)
|
|
45
|
+
email: jferris@thoughtbot.com
|
|
46
|
+
executables: []
|
|
47
|
+
extensions: []
|
|
48
|
+
extra_rdoc_files: []
|
|
49
|
+
files:
|
|
50
|
+
- Appraisals
|
|
51
|
+
- CONTRIBUTING.md
|
|
52
|
+
- Gemfile
|
|
53
|
+
- Gemfile.lock
|
|
54
|
+
- LICENSE
|
|
55
|
+
- NEWS
|
|
56
|
+
- README.md
|
|
57
|
+
- Rakefile
|
|
58
|
+
- bin/setup
|
|
59
|
+
- factory_girl_rails.gemspec
|
|
60
|
+
- features/fixture_replacement_config.feature
|
|
61
|
+
- features/generators.feature
|
|
62
|
+
- features/load_definitions.feature
|
|
63
|
+
- features/step_definitions/appraisal.rb
|
|
64
|
+
- features/step_definitions/rails_steps.rb
|
|
65
|
+
- features/support/env.rb
|
|
66
|
+
- gemfiles/rails3.2.gemfile
|
|
67
|
+
- gemfiles/rails4.1.gemfile
|
|
68
|
+
- gemfiles/rails4.2.gemfile
|
|
69
|
+
- gemfiles/rails5.0.gemfile
|
|
70
|
+
- lib/factory_girl_rails.rb
|
|
71
|
+
- lib/factory_girl_rails/generator.rb
|
|
72
|
+
- lib/factory_girl_rails/generators/non_rspec_generator.rb
|
|
73
|
+
- lib/factory_girl_rails/generators/null_generator.rb
|
|
74
|
+
- lib/factory_girl_rails/generators/rspec_generator.rb
|
|
75
|
+
- lib/factory_girl_rails/railtie.rb
|
|
76
|
+
- lib/generators/factory_girl.rb
|
|
77
|
+
- lib/generators/factory_girl/model/model_generator.rb
|
|
78
|
+
homepage: http://github.com/kalys/ffactory_girl_rails
|
|
79
|
+
licenses:
|
|
80
|
+
- MIT
|
|
81
|
+
metadata: {}
|
|
82
|
+
post_install_message:
|
|
83
|
+
rdoc_options: []
|
|
84
|
+
require_paths:
|
|
85
|
+
- lib
|
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - ">="
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '0'
|
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
96
|
+
requirements: []
|
|
97
|
+
rubyforge_project:
|
|
98
|
+
rubygems_version: 2.4.8
|
|
99
|
+
signing_key:
|
|
100
|
+
specification_version: 4
|
|
101
|
+
summary: ffactory_girl_rails provides integration between ffactory_girl and rails
|
|
102
|
+
3 or newer
|
|
103
|
+
test_files: []
|