fixture_builder 0.5.0 → 0.5.1.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.markdown +240 -60
- data/fixture_builder.gemspec +3 -3
- data/lib/fixture_builder/builder.rb +7 -3
- data/lib/fixture_builder/configuration.rb +1 -5
- data/lib/fixture_builder/fixtures_path.rb +15 -0
- data/lib/fixture_builder/version.rb +1 -1
- data/lib/fixture_builder.rb +1 -0
- data/lib/tasks/fixture_builder.rake +2 -2
- data/test/fixture_builder_test.rb +2 -2
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ed3bdfdd32cd95b0878b2a7ea90eacdfa46cdf7
|
4
|
+
data.tar.gz: 56e24ea07566286466c783700a09ec9fa7943820
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b33ccb8d31f502d85944d020a24bbda7ce2333ac35d105ea54002e5956583072ac794eb9fec4fba46c5ec6fe7ea7bc8aface513b20d8ec30a838b93114a5745e
|
7
|
+
data.tar.gz: 314ada2063d1523ec3b055c9dc34d9c597a4e57e6757c3af3ebec2b1d356205ad2d5e727186b694349d20ad10fa235756dc7de6087901eecb43c9d84eb1e1655
|
data/README.markdown
CHANGED
@@ -3,7 +3,23 @@ FixtureBuilder
|
|
3
3
|
|
4
4
|
[![Build Status](https://secure.travis-ci.org/rdy/fixture_builder.png)](http://travis-ci.org/rdy/fixture_builder)
|
5
5
|
|
6
|
-
Based on the code from fixture_scenarios, by Chris Wanstrath.
|
6
|
+
Based on the code from fixture_scenarios, by Chris Wanstrath. Allows you to build file fixtures from
|
7
|
+
existing object mother factories, like FactoryGirl, to generate high performance fixtures that can be
|
8
|
+
shared across all your tests and development environment.
|
9
|
+
|
10
|
+
The best of all worlds!
|
11
|
+
|
12
|
+
* Speed: Leverage the high-performance speed of Rails' transactional tests/fixtures to avoid test suite slowdown
|
13
|
+
as your app's number of tests grows, because [creating and persisting data is slow!](https://robots.thoughtbot.com/speed-up-tests-by-selectively-avoiding-factory-girl)
|
14
|
+
* Maintainability/reuse/abstraction: Use object mother factories to generate fixtures via
|
15
|
+
FactoryGirl or your favorite tool
|
16
|
+
* Flexibility: You can always fall back to object mothers in tests if needed, or load a fixture
|
17
|
+
and modify only an attribute or two without the overhead of creating an entire object dependency graph.
|
18
|
+
* Consistency: Use the exact same fixture data in all environments: test, development, and demo/staging servers.
|
19
|
+
Makes reproduction and acceptance testing of bugs/features faster and easier!
|
20
|
+
* Simplicity: Avoid having to maintain and generate `seeds.rb` sample data set separately from your test fixture/factory data set,
|
21
|
+
or [pick which of the myriad seeds helper gems to use](https://rubygems.org/search?query=seed). *Just delete
|
22
|
+
`seeds.rb` and forget about it!*
|
7
23
|
|
8
24
|
Installing
|
9
25
|
==========
|
@@ -11,93 +27,257 @@ Installing
|
|
11
27
|
1. Install as a plugin or gem: `gem install fixture_builder`
|
12
28
|
1. Create a file which configures and declares your fixtures (see below for example)
|
13
29
|
1. Require the above file in your `spec_helper.rb` or `test_helper.rb`
|
30
|
+
1. If you are using rspec, ensure you have
|
31
|
+
* Set the `FIXTURES_PATH` in `config/application.rb` (not test.rb, or you can't use `rake db:fixtures:load`). E.g.:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
module MyApp
|
35
|
+
class Application < Rails::Application
|
36
|
+
#...
|
37
|
+
ENV['FIXTURES_PATH'] = 'spec/fixtures'
|
38
|
+
#...
|
39
|
+
```
|
40
|
+
* Set `config.fixture_path = Rails.root.join('spec/fixtures')` in `spec/rails_helper.rb`
|
41
|
+
* Set `config.global_fixtures = :all` if you don't want to specify fixtures in every spec file.
|
42
|
+
1. You probably also want to use [**config.use_transactional_fixtures**](https://www.relishapp.com/rspec/rspec-rails/docs/transactions)
|
43
|
+
(if you are using rspec)
|
44
|
+
or [**use_transactional_fixtures/use_transactional_tests**](http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html) (if you are not using rspec),
|
45
|
+
1. If you are using fixtures in Selenium-based Capybara/Cucumber specs that runs the tests and server in separate processes,
|
46
|
+
you probably want to consider setting transactional fixtures to false, and instead using
|
47
|
+
[Database Cleaner](https://github.com/DatabaseCleaner/database_cleaner)
|
48
|
+
with `DatabaseCleaner.strategy = :truncation` or `DatabaseCleaner.strategy = :deletion`.
|
49
|
+
|
50
|
+
Usage
|
51
|
+
=====
|
52
|
+
|
53
|
+
* When running tests/specs, fixtures will build/rebuild automatically as needed
|
54
|
+
* `rake spec:fixture_builder:build` to force a build of fixtures
|
55
|
+
* `rake spec:fixture_builder:rebuild` to force a rebuild of fixtures
|
56
|
+
* `rake db:fixtures:load` to load built fixtures into your development environment (this is a standard Rails rake task)
|
14
57
|
|
15
58
|
|
16
|
-
Example
|
17
|
-
|
59
|
+
Configuration Example
|
60
|
+
=====================
|
61
|
+
|
62
|
+
`spec/rails_helper.rb` or `test/test_helper.rb`:
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
require_relative 'support/fixture_builder'
|
66
|
+
```
|
18
67
|
|
19
68
|
When using an object mother such as factory_girl it can be setup like the following:
|
20
69
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
# now declare objects
|
27
|
-
fbuilder.factory do
|
28
|
-
david = Factory(:user, :unique_name => "david")
|
29
|
-
ipod = Factory(:product, :name => "iPod")
|
30
|
-
Factory(:purchase, :user => david, :product => ipod)
|
31
|
-
end
|
32
|
-
end
|
70
|
+
```ruby
|
71
|
+
# spec/support/fixture_builder.rb
|
72
|
+
FixtureBuilder.configure do |fbuilder|
|
73
|
+
# rebuild fixtures automatically when these files change:
|
74
|
+
fbuilder.files_to_check += Dir["spec/factories/*.rb", "spec/support/fixture_builder.rb"]
|
33
75
|
|
34
|
-
|
76
|
+
# now declare objects
|
77
|
+
fbuilder.factory do
|
78
|
+
david = Factory(:user, :unique_name => "david")
|
79
|
+
ipod = Factory(:product, :name => "iPod")
|
80
|
+
Factory(:purchase, :user => david, :product => ipod)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
```
|
35
84
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
unique_name: david
|
40
|
-
id: 1
|
85
|
+
The block passed to the factory method initiates the creation of the fixture files.
|
86
|
+
Before yielding to the block, FixtureBuilder cleans out the test database completely.
|
87
|
+
When the block finishes, it dumps the state of the database into fixtures, like this:
|
41
88
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
89
|
+
```yaml
|
90
|
+
# users.yml
|
91
|
+
david:
|
92
|
+
created_at: 2010-09-18 17:21:23.926511 Z
|
93
|
+
unique_name: david
|
94
|
+
id: 1
|
46
95
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
96
|
+
# products.yml
|
97
|
+
i_pod:
|
98
|
+
name: iPod
|
99
|
+
id: 1
|
51
100
|
|
52
|
-
|
101
|
+
# purchases.yml
|
102
|
+
purchase_001:
|
103
|
+
product_id: 1
|
104
|
+
user_id: 1
|
105
|
+
```
|
53
106
|
|
54
|
-
|
55
|
-
|
107
|
+
FixtureBuilder guesses about how to name fixtures based on a prioritized list of attribute names.
|
108
|
+
You can also hint at a name or manually name an object. Both of the following lines would
|
109
|
+
work to rename `purchase_001` to `davids_ipod`:
|
56
110
|
|
57
|
-
|
111
|
+
```ruby
|
112
|
+
fbuilder.name(:davids_ipod, Factory(:purchase, :user => david, :product => ipod))
|
113
|
+
@davids_ipod = Factory(:purchase, :user => david, :product => ipod)
|
114
|
+
```
|
58
115
|
|
59
|
-
|
60
|
-
|
61
|
-
|
116
|
+
Another way to name fixtures is to use the name_model_with. To use it you create a block that
|
117
|
+
returns how you want a certain model name based on the record field.
|
118
|
+
|
119
|
+
```ruby
|
120
|
+
fbuilder.name_model_with(User) do |record|
|
121
|
+
[record['first_name'], record['last_name']].join('_')
|
122
|
+
end
|
123
|
+
```
|
62
124
|
|
63
125
|
For all User fixture {first_name: 'foo', last_name: 'bar'} it would generate `foo_bar` as the fixture name.
|
64
126
|
|
65
127
|
There are also additional configuration options that can be changed to override the defaults:
|
66
128
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
129
|
+
* files_to_check: array of filenames that when changed cause fixtures to be rebuilt
|
130
|
+
* fixture_builder_file: the pathname of the file used to store file changes.
|
131
|
+
* record_name_fields: array of field names to use as a fixture's name prefix, it will use the first matching field it finds
|
132
|
+
* skip_tables: array of table names to skip building fixtures
|
133
|
+
* select_sql: sql string to use for select
|
134
|
+
* delete_sql: sql string to use for deletes
|
73
135
|
|
74
136
|
By default these are set as:
|
75
137
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
138
|
+
* files_to_check: %w{ db/schema.rb }
|
139
|
+
* fixture_builder_file: RAILS_ROOT/tmp/fixture_builder.yml
|
140
|
+
* record_name_fields: %w{ schema_migrations }
|
141
|
+
* skip_tables: %w{ schema_migrations }
|
142
|
+
* select_sql: SELECT * FROM %{table}
|
143
|
+
* delete_sql: DELETE FROM %{table}
|
82
144
|
|
83
145
|
Sequence Collisions
|
84
146
|
===================
|
85
147
|
|
86
|
-
One problem with generating your fixtures is that sequences can collide.
|
148
|
+
One problem with generating your fixtures is that sequences can collide.
|
149
|
+
When the fixtures are generated only as needed, sometimes the process that
|
150
|
+
generates the fixtures will be different than the process that runs the tests.
|
151
|
+
This results in collisions when you still use factories in your tests.
|
87
152
|
|
88
|
-
|
89
|
-
|
90
|
-
|
153
|
+
There's a couple of approaches for this.
|
154
|
+
|
155
|
+
Here's a solution for FactoryGirl which resets sequences numbers to 1000
|
156
|
+
(to avoid conflicts with fixture data which should be sequenced < 1000)
|
157
|
+
before the tests run:
|
158
|
+
|
159
|
+
```ruby
|
160
|
+
FixtureBuilder.configure do |fbuilder|
|
161
|
+
# ...
|
162
|
+
end
|
163
|
+
|
164
|
+
# Have factory girl generate non-colliding sequences starting at 1000 for data created after the fixtures
|
91
165
|
|
92
|
-
|
166
|
+
# Factory Girl <2 yields name & seq
|
167
|
+
# Factory Girl >2 yeilds only seq
|
168
|
+
FactoryGirl.sequences.each do |seq|
|
93
169
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
170
|
+
# Factory Girl 4 uses an Enumerator Adapter, otherwise simply set a Fixnum
|
171
|
+
seq.instance_variable_set(:@value, FactoryGirl::Sequence::EnumeratorAdapter.new(2000))
|
172
|
+
|
173
|
+
end
|
174
|
+
```
|
175
|
+
|
176
|
+
Another solution is to explicitly reset the database primary key sequence via ActiveRecord.
|
177
|
+
You could call this method before you run your factories in the `fixture_builder.rb` block:
|
178
|
+
|
179
|
+
```ruby
|
180
|
+
def reset_pk_sequences
|
181
|
+
puts 'Resetting Primary Key sequences'
|
182
|
+
ActiveRecord::Base.connection.tables.each do |t|
|
183
|
+
ActiveRecord::Base.connection.reset_pk_sequence!(t)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
```
|
188
|
+
|
189
|
+
Advanced Usage
|
190
|
+
==============
|
191
|
+
|
192
|
+
As you get more fixtures, you may want to move the creation of fixtures to a separate file. For example:
|
193
|
+
|
194
|
+
```ruby
|
195
|
+
# spec/support/fixture_builder.rb
|
196
|
+
require_relative 'create_fixtures'
|
197
|
+
|
198
|
+
FixtureBuilder.configure do |fbuilder|
|
199
|
+
# rebuild fixtures automatically when these files change:
|
200
|
+
fbuilder.files_to_check += Dir[
|
201
|
+
"spec/factories/*.rb",
|
202
|
+
"spec/support/fixture_builder.rb",
|
203
|
+
"spec/support/create_fixtures.rb",
|
204
|
+
]
|
205
|
+
|
206
|
+
# now declare objects
|
207
|
+
fbuilder.factory do
|
208
|
+
CreateFixtures.new(fbuilder).create_all
|
209
|
+
end
|
210
|
+
end
|
211
|
+
```
|
212
|
+
|
213
|
+
Then, you can do more extensive and advanced fixture creation in that class. Here's
|
214
|
+
a partial example:
|
215
|
+
|
216
|
+
```ruby
|
217
|
+
# spec/support/create_fixtures.rb
|
218
|
+
|
219
|
+
require 'factory_girl_rails'
|
220
|
+
|
221
|
+
class CreateFixtures
|
222
|
+
include FactoryGirl::Syntax::Methods
|
223
|
+
|
224
|
+
attr_accessor :fbuilder, :models, :fixed_time
|
225
|
+
|
226
|
+
def initialize(fbuilder)
|
227
|
+
@fbuilder = fbuilder
|
228
|
+
@models = {}
|
229
|
+
@fixed_time = Time.utc(2015, 3, 14, 9, 2, 6)
|
230
|
+
end
|
231
|
+
|
232
|
+
def create_all
|
233
|
+
reset_pk_sequences
|
234
|
+
create_users
|
235
|
+
create_products
|
236
|
+
create_purchases
|
237
|
+
reset_pk_sequences
|
238
|
+
end
|
239
|
+
|
240
|
+
private
|
241
|
+
|
242
|
+
def reset_pk_sequences
|
243
|
+
puts 'Resetting Primary Key sequences'
|
244
|
+
ActiveRecord::Base.connection.tables.each do |t|
|
245
|
+
ActiveRecord::Base.connection.reset_pk_sequence!(t)
|
101
246
|
end
|
247
|
+
end
|
248
|
+
|
249
|
+
def create_users
|
250
|
+
# etc...
|
251
|
+
end
|
252
|
+
|
253
|
+
# other creation and helper methods to abstract common logic, e.g.
|
254
|
+
# * custom naming rules via #name_model_with
|
255
|
+
# * set up associations by storing created model records in a hash: models[model_class_name][model_name.to_sym] = record
|
256
|
+
# etc... (hopefully some of these helper patterns can be standardized and included in the gem in the future)
|
257
|
+
end
|
258
|
+
```
|
259
|
+
|
260
|
+
Tips
|
261
|
+
====
|
262
|
+
|
263
|
+
* Don't use `seeds.rb`. Instead, just use `rake db:fixtures:load` to get fixtures into dev. If you
|
264
|
+
want fixture data on a staging/demo environment, either run `db:fixtures:load`, or
|
265
|
+
dump the database and load it there.
|
266
|
+
* Always use fixtures instead of object mothers in tests when possible - this will keep your test suite fast!
|
267
|
+
[Even FactoryGirl says to avoid using factories when you can, because creating and persisting data is slow](https://robots.thoughtbot.com/speed-up-tests-by-selectively-avoiding-factory-girl)
|
268
|
+
* If you only need to tweak an attribute or two to test an edge case, load the fixture object,
|
269
|
+
then just set the attribute on the object (if you don't need it persisted, this is fastest), or
|
270
|
+
set it via `#update_attributes!` (only if you need it persisted, this is slower).
|
271
|
+
* Modify `bin/setup` to run fixture builder and load your dev database:
|
272
|
+
```ruby
|
273
|
+
puts "\n== Building fixtures =="
|
274
|
+
system! 'bin/rails spec:fixture_builder:build'
|
275
|
+
|
276
|
+
puts "\n== Loading fixtures into dev database =="
|
277
|
+
system! 'bin/rails db:fixtures:load'
|
278
|
+
```
|
279
|
+
|
102
280
|
|
103
281
|
Copyright (c) 2009 Ryan Dy & David Stevenson, released under the MIT license
|
282
|
+
|
283
|
+
Currently maintained by [Chad Woolley](thewoolleyman@gmail.com)
|
data/fixture_builder.gemspec
CHANGED
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = FixtureBuilder::VERSION
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
10
|
-
s.authors = ['Ryan Dy', 'David Stevenson']
|
11
|
-
s.description = %q{FixtureBuilder allows testers to use their existing factories, like FactoryGirl, to generate high performance fixtures that can be shared across all your tests}
|
10
|
+
s.authors = ['Ryan Dy', 'David Stevenson', 'Chad Woolley']
|
11
|
+
s.description = %q{FixtureBuilder allows testers to use their existing factories, like FactoryGirl, to generate high performance fixtures that can be shared across all your tests and development environment. The best of all worlds! Speed, Maintainability, Flexibility, Consistency, and Simplicity!}
|
12
12
|
s.email = %q{mail@ryandy.com}
|
13
13
|
s.licenses = ['MIT']
|
14
14
|
s.extra_rdoc_files = [
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
s.homepage = %q{http://github.com/rdy/fixture_builder}
|
23
23
|
s.rubyforge_project = %q{fixture_builder}
|
24
|
-
s.summary = %q{Build
|
24
|
+
s.summary = %q{Build Rails fixtures using object mother factories}
|
25
25
|
|
26
26
|
s.add_dependency %q{activerecord}, '>= 2'
|
27
27
|
s.add_dependency %q{activesupport}, '>= 2'
|
@@ -78,7 +78,7 @@ module FixtureBuilder
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def delete_yml_files
|
81
|
-
FileUtils.rm(
|
81
|
+
FileUtils.rm(*tables.map { |t| fixture_file(t) }) rescue nil
|
82
82
|
end
|
83
83
|
|
84
84
|
def say(*messages)
|
@@ -129,10 +129,14 @@ module FixtureBuilder
|
|
129
129
|
|
130
130
|
def serialized_value_if_needed(table_klass, attr_name, value)
|
131
131
|
if table_klass.respond_to?(:type_for_attribute)
|
132
|
-
if table_klass.type_for_attribute(attr_name).
|
132
|
+
if table_klass.type_for_attribute(attr_name).type == :jsonb || table_klass.type_for_attribute(attr_name).type == :json
|
133
|
+
value
|
134
|
+
elsif table_klass.type_for_attribute(attr_name).respond_to?(:serialize)
|
133
135
|
table_klass.type_for_attribute(attr_name).serialize(value)
|
134
|
-
|
136
|
+
elsif table_klass.type_for_attribute(attr_name).respond_to?(:type_cast_for_database)
|
135
137
|
table_klass.type_for_attribute(attr_name).type_cast_for_database(value)
|
138
|
+
else
|
139
|
+
table_klass.type_for_attribute(attr_name).type_cast_for_schema(value)
|
136
140
|
end
|
137
141
|
else
|
138
142
|
if table_klass.serialized_attributes.has_key? attr_name
|
@@ -97,7 +97,7 @@ module FixtureBuilder
|
|
97
97
|
end
|
98
98
|
|
99
99
|
def fixture_directory
|
100
|
-
@fixture_directory ||=
|
100
|
+
@fixture_directory ||= FixturesPath.absolute_rails_fixtures_path
|
101
101
|
end
|
102
102
|
|
103
103
|
def fixtures_dir(path = '')
|
@@ -106,10 +106,6 @@ module FixtureBuilder
|
|
106
106
|
|
107
107
|
private
|
108
108
|
|
109
|
-
def spec_or_test_dir
|
110
|
-
File.exists?(File.join(::Rails.root, 'spec')) ? 'spec' : 'test'
|
111
|
-
end
|
112
|
-
|
113
109
|
def file_hashes
|
114
110
|
files_to_check.inject({}) do |hash, filename|
|
115
111
|
hash[filename] = Digest::MD5.hexdigest(File.read(filename))
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module FixtureBuilder
|
2
|
+
class FixturesPath
|
3
|
+
def self.absolute_rails_fixtures_path
|
4
|
+
File.expand_path(ActiveRecord::Tasks::DatabaseTasks.fixtures_path)
|
5
|
+
rescue
|
6
|
+
if ENV["FIXTURES_PATH"]
|
7
|
+
ENV["FIXTURES_PATH"]
|
8
|
+
elsif File.exists?(File.expand_path("spec/fixtures",::Rails.root))
|
9
|
+
File.expand_path("spec/fixtures",::Rails.root)
|
10
|
+
else
|
11
|
+
File.expand_path("test/fixtures",::Rails.root)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/fixture_builder.rb
CHANGED
@@ -3,14 +3,14 @@ namespace :spec do
|
|
3
3
|
desc "Deletes the generated fixtures in spec/fixtures"
|
4
4
|
task :clean do
|
5
5
|
FileUtils.rm_f("tmp/fixture_builder.yml")
|
6
|
-
FileUtils.rm_f(Dir.glob(
|
6
|
+
FileUtils.rm_f(Dir.glob("#{FixtureBuilder::FixturesPath.absolute_rails_fixtures_path}/*.yml"))
|
7
7
|
puts "Automatically generated fixtures removed"
|
8
8
|
end
|
9
9
|
|
10
10
|
desc "Build the generated fixtures to spec/fixtures if dirty"
|
11
11
|
task :build => :environment do
|
12
12
|
ActiveRecord::Base.establish_connection(:test)
|
13
|
-
Dir.glob(File.join(Rails.root, '{spec,test}', '**', 'fixture_builder.rb')).each{|file| require(file)}
|
13
|
+
Dir.glob(File.join(::Rails.root, '{spec,test}', '**', 'fixture_builder.rb')).each{|file| require(file)}
|
14
14
|
end
|
15
15
|
|
16
16
|
desc "Clean and rebuild the generated fixtures to spec/fixtures"
|
@@ -62,8 +62,8 @@ class FixtureBuilderTest < Test::Unit::TestCase
|
|
62
62
|
assert @called
|
63
63
|
end
|
64
64
|
|
65
|
-
def
|
66
|
-
assert_equal 'test', FixtureBuilder.
|
65
|
+
def test_absolute_rails_fixtures_path
|
66
|
+
assert_equal File.expand_path('../../test/fixtures', __FILE__), FixtureBuilder::FixturesPath.absolute_rails_fixtures_path
|
67
67
|
end
|
68
68
|
|
69
69
|
def test_fixtures_dir
|
metadata
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fixture_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Dy
|
8
8
|
- David Stevenson
|
9
|
+
- Chad Woolley
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
@@ -96,7 +97,9 @@ dependencies:
|
|
96
97
|
- !ruby/object:Gem::Version
|
97
98
|
version: '0'
|
98
99
|
description: FixtureBuilder allows testers to use their existing factories, like FactoryGirl,
|
99
|
-
to generate high performance fixtures that can be shared across all your tests
|
100
|
+
to generate high performance fixtures that can be shared across all your tests and
|
101
|
+
development environment. The best of all worlds! Speed, Maintainability, Flexibility,
|
102
|
+
Consistency, and Simplicity!
|
100
103
|
email: mail@ryandy.com
|
101
104
|
executables: []
|
102
105
|
extensions: []
|
@@ -116,6 +119,7 @@ files:
|
|
116
119
|
- lib/fixture_builder/builder.rb
|
117
120
|
- lib/fixture_builder/configuration.rb
|
118
121
|
- lib/fixture_builder/delegations.rb
|
122
|
+
- lib/fixture_builder/fixtures_path.rb
|
119
123
|
- lib/fixture_builder/namer.rb
|
120
124
|
- lib/fixture_builder/version.rb
|
121
125
|
- lib/tasks/fixture_builder.rake
|
@@ -150,7 +154,7 @@ rubyforge_project: fixture_builder
|
|
150
154
|
rubygems_version: 2.4.8
|
151
155
|
signing_key:
|
152
156
|
specification_version: 4
|
153
|
-
summary: Build
|
157
|
+
summary: Build Rails fixtures using object mother factories
|
154
158
|
test_files:
|
155
159
|
- test/fixture_builder_test.rb
|
156
160
|
- test/fixtures/.gitkeep
|