fixtory 0.0.1
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/.gitignore +14 -0
- data/.travis.yml +2 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +193 -0
- data/Rakefile +12 -0
- data/fixtory.gemspec +27 -0
- data/lib/fixtory.rb +25 -0
- data/lib/fixtory/dsl.rb +9 -0
- data/lib/fixtory/dsl/builder.rb +51 -0
- data/lib/fixtory/dsl/row.rb +51 -0
- data/lib/fixtory/dsl/table.rb +51 -0
- data/lib/fixtory/methods.rb +9 -0
- data/lib/fixtory/version.rb +3 -0
- data/test/fixtories/test_1.rb +20 -0
- data/test/fixtories/test_2.rb +14 -0
- data/test/fixtories/test_3.rb +13 -0
- data/test/fixtory_test.rb +56 -0
- data/test/test_helper.rb +41 -0
- metadata +138 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9ebf2a7fb42023f44e8ca479d536328f75f5b357
|
4
|
+
data.tar.gz: 73aa7cc3b9683f4a9e62d8f8c32da5ae98f96a19
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 95f8695d3f1f839552c333ec21af6e422f80062e52574c545a3d564000e08e6faa5131c16fad5f7f615ab053ea3103fe1c5c26ce68c81cab7744efb93086429b
|
7
|
+
data.tar.gz: 932c82d3f1f095f671a223692403a272fe3e82a17dff79091d793de148f00ca019144c208ec0b74f067d0010a2543960e1cb263322f795b3a51e5949f6d0ec0e
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Brian Cardarella
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,193 @@
|
|
1
|
+
# Fixtory #
|
2
|
+
|
3
|
+
[](http://travis-ci.org/dockyard/fixtory)
|
4
|
+
[](https://gemnasium.com/dockyard/fixtory)
|
5
|
+
[](https://codeclimate.com/github/dockyard/fixtory)
|
6
|
+
|
7
|
+
Not quite fixtures, not quite factories.
|
8
|
+
|
9
|
+
## Looking for help? ##
|
10
|
+
|
11
|
+
If it is a bug [please open an issue on
|
12
|
+
GitHub](https://github.com/dockyard/fixtory/issues).
|
13
|
+
|
14
|
+
## About
|
15
|
+
|
16
|
+
Fixtory is an alternate syntax for working with fixture data. It also
|
17
|
+
allows for grouped data scenarios rather than the "all or nothing" that
|
18
|
+
ActiveRecord fixtures gives you. You'll be able to write your tests with
|
19
|
+
better data isolation.
|
20
|
+
|
21
|
+
## Installation ##
|
22
|
+
|
23
|
+
Add to your `Gemfile`
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
gem 'fixtory'
|
27
|
+
```
|
28
|
+
|
29
|
+
In your `test_helper.rb` or `spec_helper.rb` add the following:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
require 'fixtory'
|
33
|
+
require 'fixtory/methods'`
|
34
|
+
```
|
35
|
+
|
36
|
+
### Minitest
|
37
|
+
|
38
|
+
Mix the module:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
class Minitest::Spec
|
42
|
+
include Fixtory::Methods
|
43
|
+
end
|
44
|
+
```
|
45
|
+
|
46
|
+
### Rspec
|
47
|
+
|
48
|
+
*Someone please write this, I don't use rspec*
|
49
|
+
|
50
|
+
## Usage
|
51
|
+
|
52
|
+
Start by adding a new Fixtory group file to `test/fixtories`. For
|
53
|
+
example you may add `test/fixtories/sign_up.rb`:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
users do
|
57
|
+
brian do
|
58
|
+
name 'Brian'
|
59
|
+
email 'brian@dockyard.com'
|
60
|
+
password 'password'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
profiles do
|
65
|
+
one do
|
66
|
+
role 'Developer'
|
67
|
+
user users.brian
|
68
|
+
end
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
72
|
+
In any test you can access this group of data with:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
data_group = fixtory(:sign_up)
|
76
|
+
```
|
77
|
+
|
78
|
+
You can further access the instances of the models:
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
data_group.users.brian
|
82
|
+
=> <User name: 'Brian'>
|
83
|
+
|
84
|
+
data_group.profiles.one
|
85
|
+
=> <Profile role: 'Developer'>
|
86
|
+
|
87
|
+
data_group.profiles.one.user
|
88
|
+
=. <User name: 'Brian'>
|
89
|
+
```
|
90
|
+
|
91
|
+
Fixtory is smart enough to handle assigning all of your relationships.
|
92
|
+
Within the fixtory block you can access any other table at any other
|
93
|
+
time, even if it has not yet been defined. The following would have
|
94
|
+
worked just fine:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
profiles do
|
98
|
+
one do
|
99
|
+
role 'Developer'
|
100
|
+
user users.brian
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
users do
|
105
|
+
brian do
|
106
|
+
name 'Brian'
|
107
|
+
email 'brian@dockyard.com'
|
108
|
+
password 'password'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
Setting inverse relationships works:
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
users do
|
117
|
+
brian do
|
118
|
+
name 'Brian'
|
119
|
+
email 'brian@dockyard.com'
|
120
|
+
password 'password'
|
121
|
+
profile profiles.one
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
profiles do
|
126
|
+
one do
|
127
|
+
role 'Developer'
|
128
|
+
end
|
129
|
+
end
|
130
|
+
```
|
131
|
+
|
132
|
+
And setting multiple relationships:
|
133
|
+
|
134
|
+
```ruby
|
135
|
+
owner do
|
136
|
+
brian do
|
137
|
+
name 'Brian'
|
138
|
+
dogs [dogs.boomer, dogs.wiley]
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
dogs do
|
143
|
+
boomer do
|
144
|
+
name 'Boomer'
|
145
|
+
end
|
146
|
+
|
147
|
+
wiley do
|
148
|
+
name 'Wiley'
|
149
|
+
end
|
150
|
+
end
|
151
|
+
```
|
152
|
+
|
153
|
+
## Fixtory Schema
|
154
|
+
|
155
|
+
The group files are broken down into two nested blocks. The outer blocks
|
156
|
+
represent tables and the inner blocks represent rows.
|
157
|
+
|
158
|
+
The name you use for the tables **must** match a valid table name in
|
159
|
+
your database.
|
160
|
+
|
161
|
+
The name you use for your rows **must** be unique for that table. It has
|
162
|
+
no reference to the data other than acting as a lable for which to
|
163
|
+
retrieve the data later.
|
164
|
+
|
165
|
+
The values you assign to in the row block **must** be valid database
|
166
|
+
columns. With the exception of relationships. You can assign a value to
|
167
|
+
the associated ActiveRecord model's association name and Fixtory will do
|
168
|
+
its best to transform this into the proper foreign key to set for
|
169
|
+
database insertion.
|
170
|
+
|
171
|
+
## Authors ##
|
172
|
+
|
173
|
+
* [Brian Cardarella](http://twitter.com/bcardarella)
|
174
|
+
|
175
|
+
[We are very thankful for the many contributors](https://github.com/dockyard/fixtory/graphs/contributors)
|
176
|
+
|
177
|
+
## Versioning ##
|
178
|
+
|
179
|
+
This gem follows [Semantic Versioning](http://semver.org)
|
180
|
+
|
181
|
+
## Want to help? ##
|
182
|
+
|
183
|
+
Please do! We are always looking to improve this gem. Please see our
|
184
|
+
[Contribution Guidelines](https://github.com/dockyard/fixtory/blob/master/CONTRIBUTING.md)
|
185
|
+
on how to properly submit issues and pull requests.
|
186
|
+
|
187
|
+
## Legal ##
|
188
|
+
|
189
|
+
[DockYard](http://dockyard.com), Inc. © 2014
|
190
|
+
|
191
|
+
[@dockyard](http://twitter.com/dockyard)
|
192
|
+
|
193
|
+
[Licensed under the MIT license](http://www.opensource.org/licenses/mit-license.php)
|
data/Rakefile
ADDED
data/fixtory.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'fixtory/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "fixtory"
|
8
|
+
spec.version = Fixtory::VERSION
|
9
|
+
spec.authors = ["Brian Cardarella"]
|
10
|
+
spec.email = ["bcardarella@gmail.com"]
|
11
|
+
spec.summary = %q{Fixtures and Factories living together, mass hysterica}
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = "https://github.com/dockyard/fixtory"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency 'activerecord', '~> 4.1'
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "database_cleaner", "~> 1.3"
|
26
|
+
spec.add_development_dependency "sqlite3"
|
27
|
+
end
|
data/lib/fixtory.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "fixtory/version"
|
2
|
+
|
3
|
+
module Fixtory
|
4
|
+
def self.path
|
5
|
+
unless @path
|
6
|
+
if File.exist?('test/fixtories')
|
7
|
+
@path = 'test/fixtories'
|
8
|
+
elsif File.exist?('spec/fixtories')
|
9
|
+
@path = 'spec/fixtories'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
@path
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.path=(path)
|
17
|
+
@path = path
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.path_for(group_name)
|
21
|
+
File.join(path, "#{group_name}.rb")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
require 'fixtory/dsl'
|
data/lib/fixtory/dsl.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'fixtory/dsl/table'
|
2
|
+
|
3
|
+
class Fixtory::DSL::Builder < BasicObject
|
4
|
+
attr_accessor :_tables
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@_tables = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def _table(name, &block)
|
11
|
+
_tables << ::Fixtory::DSL::Table.new(name, self, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def _eval_from_fixtory_file(path)
|
15
|
+
contents = ::File.read(path)
|
16
|
+
instance_eval(contents, path, 1)
|
17
|
+
_tables.each do |table|
|
18
|
+
if table._block
|
19
|
+
table.instance_eval(&table._block)
|
20
|
+
table._block = nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def _insert
|
26
|
+
_tables.each do |table|
|
27
|
+
table._rows.each do |row|
|
28
|
+
_connection.insert_fixture(row.instance_eval('@attributes'), table._name)
|
29
|
+
row.instance_eval("@inserted = true")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def method_missing(method, *args, &block)
|
35
|
+
if block && block.respond_to?(:call)
|
36
|
+
_table(method, &block)
|
37
|
+
else
|
38
|
+
table = _tables.find do |table|
|
39
|
+
table._name == method.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
table || super
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def _connection
|
49
|
+
::ActiveRecord::Base.connection
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'active_support/deprecation'
|
2
|
+
require 'active_support/concern'
|
3
|
+
require 'active_record/fixtures'
|
4
|
+
|
5
|
+
class Fixtory::DSL::Row < BasicObject
|
6
|
+
def initialize(name, table, &block)
|
7
|
+
@name = name.to_s
|
8
|
+
@table = table
|
9
|
+
@inserted = false
|
10
|
+
@attributes = {
|
11
|
+
_primary_key => ::ActiveRecord::FixtureSet.identify(@name)
|
12
|
+
}
|
13
|
+
instance_eval &block
|
14
|
+
end
|
15
|
+
|
16
|
+
def _primary_key
|
17
|
+
@table._model_class.primary_key
|
18
|
+
end
|
19
|
+
|
20
|
+
def _primary_key_value
|
21
|
+
@attributes[_primary_key]
|
22
|
+
end
|
23
|
+
|
24
|
+
def method_missing(attribute, *args)
|
25
|
+
attribute = attribute.to_s
|
26
|
+
value = args.first
|
27
|
+
|
28
|
+
if value
|
29
|
+
if reflection = @table._model_class._reflections[attribute.to_sym]
|
30
|
+
if reflection.macro == :belongs_to
|
31
|
+
attribute = reflection.association_foreign_key
|
32
|
+
value = value._primary_key_value
|
33
|
+
else
|
34
|
+
(::Array === value ? value : [value]).each do |row|
|
35
|
+
row.__send__(reflection.foreign_key, self._primary_key_value)
|
36
|
+
end
|
37
|
+
|
38
|
+
return
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
@attributes[attribute] = value
|
43
|
+
else
|
44
|
+
if @attributes.key?(attribute)
|
45
|
+
@attributes[attribute]
|
46
|
+
else
|
47
|
+
@table._builder.instance_eval(attribute)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'fixtory/dsl/row'
|
2
|
+
|
3
|
+
class Fixtory::DSL::Table
|
4
|
+
attr_accessor :_name
|
5
|
+
attr_accessor :_builder
|
6
|
+
attr_accessor :_rows
|
7
|
+
attr_accessor :_model_class
|
8
|
+
attr_accessor :_block
|
9
|
+
|
10
|
+
def initialize(name, builder, &block)
|
11
|
+
@_name = name.to_s
|
12
|
+
@_builder = builder
|
13
|
+
@_rows = []
|
14
|
+
@_block = block
|
15
|
+
end
|
16
|
+
|
17
|
+
def _model_class
|
18
|
+
@_model_class ||= _name.singularize.camelize.constantize
|
19
|
+
end
|
20
|
+
|
21
|
+
def _row(name, &block)
|
22
|
+
_rows << ::Fixtory::DSL::Row.new(name, self, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
def method_missing(method, *args, &block)
|
26
|
+
if block && block.respond_to?(:call)
|
27
|
+
_row(method, &block)
|
28
|
+
else
|
29
|
+
method = method.to_s
|
30
|
+
|
31
|
+
if @_block
|
32
|
+
instance_eval(&_block)
|
33
|
+
@_block = nil
|
34
|
+
end
|
35
|
+
|
36
|
+
row = _rows.find do |row|
|
37
|
+
row.instance_eval('@name') == method
|
38
|
+
end
|
39
|
+
|
40
|
+
if row != nil
|
41
|
+
if row.instance_eval("@inserted")
|
42
|
+
_model_class.find(row._primary_key_value)
|
43
|
+
else
|
44
|
+
row
|
45
|
+
end
|
46
|
+
else
|
47
|
+
super
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe 'Fixtories' do
|
4
|
+
it 'allows access to specific rows from builder' do
|
5
|
+
path = File.expand_path('test/fixtories/test_1.rb')
|
6
|
+
builder = Fixtory::DSL.build_from(path)
|
7
|
+
builder._insert
|
8
|
+
|
9
|
+
assert_equal builder.owners.brian.age, 35
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'instantiates model when retrieved' do
|
13
|
+
path = File.expand_path('test/fixtories/test_1.rb')
|
14
|
+
builder = Fixtory::DSL.build_from(path)
|
15
|
+
builder._insert
|
16
|
+
|
17
|
+
assert_instance_of Owner, builder.owners.brian
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'allows relationships to be set' do
|
21
|
+
path = File.expand_path('test/fixtories/test_1.rb')
|
22
|
+
builder = Fixtory::DSL.build_from(path)
|
23
|
+
builder._insert
|
24
|
+
|
25
|
+
assert_equal builder.owners.brian, builder.dogs.boomer.owner
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'allows relationships to be set from parent' do
|
29
|
+
path = File.expand_path('test/fixtories/test_2.rb')
|
30
|
+
builder = Fixtory::DSL.build_from(path)
|
31
|
+
builder._insert
|
32
|
+
|
33
|
+
assert_equal [builder.dogs.boomer], builder.owners.brian.dogs
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'allows has one relationship' do
|
37
|
+
path = File.expand_path('test/fixtories/test_3.rb')
|
38
|
+
builder = Fixtory::DSL.build_from(path)
|
39
|
+
builder._insert
|
40
|
+
|
41
|
+
assert_equal builder.books.moby_dick, builder.owners.brian.book
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'provides a "fixtory" method to access a group' do
|
45
|
+
test_group = fixtory(:test_1)
|
46
|
+
assert Fixtory::DSL::Builder === test_group
|
47
|
+
end
|
48
|
+
|
49
|
+
it '_inserts into the database' do
|
50
|
+
count = Owner.count
|
51
|
+
|
52
|
+
fixtory(:test_1)
|
53
|
+
|
54
|
+
refute_equal Owner.count, count
|
55
|
+
end
|
56
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'fixtory'
|
3
|
+
require 'fixtory/methods'
|
4
|
+
require 'byebug'
|
5
|
+
require 'active_record'
|
6
|
+
require 'database_cleaner'
|
7
|
+
|
8
|
+
DatabaseCleaner.strategy = :truncation
|
9
|
+
|
10
|
+
class Minitest::Spec
|
11
|
+
include Fixtory::Methods
|
12
|
+
|
13
|
+
before do
|
14
|
+
DatabaseCleaner.start
|
15
|
+
end
|
16
|
+
|
17
|
+
after do
|
18
|
+
DatabaseCleaner.clean
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
ActiveRecord::Base.establish_connection(
|
23
|
+
:adapter => 'sqlite3',
|
24
|
+
:database => ':memory:'
|
25
|
+
)
|
26
|
+
|
27
|
+
ActiveRecord::Base.connection.execute(%{CREATE TABLE owners (id INTEGER PRIMARY KEY, name TEXT, age DOUBLE);})
|
28
|
+
ActiveRecord::Base.connection.execute(%{CREATE TABLE dogs (id INTEGER PRIMARY KEY, name TEXT, age DOUBLE, owner_id INTEGER);})
|
29
|
+
ActiveRecord::Base.connection.execute(%{CREATE TABLE books (isbn INTEGER PRIMARY KEY, name TEXT, owner_id INTEGER);})
|
30
|
+
|
31
|
+
class Owner < ActiveRecord::Base
|
32
|
+
has_many :dogs
|
33
|
+
has_one :book
|
34
|
+
end
|
35
|
+
|
36
|
+
class Dog < ActiveRecord::Base
|
37
|
+
belongs_to :owner
|
38
|
+
end
|
39
|
+
|
40
|
+
class Book < ActiveRecord::Base
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fixtory
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brian Cardarella
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-09-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: database_cleaner
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sqlite3
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Fixtures and Factories living together, mass hysterica
|
84
|
+
email:
|
85
|
+
- bcardarella@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
92
|
+
- Gemfile
|
93
|
+
- LICENSE.txt
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- fixtory.gemspec
|
97
|
+
- lib/fixtory.rb
|
98
|
+
- lib/fixtory/dsl.rb
|
99
|
+
- lib/fixtory/dsl/builder.rb
|
100
|
+
- lib/fixtory/dsl/row.rb
|
101
|
+
- lib/fixtory/dsl/table.rb
|
102
|
+
- lib/fixtory/methods.rb
|
103
|
+
- lib/fixtory/version.rb
|
104
|
+
- test/fixtories/test_1.rb
|
105
|
+
- test/fixtories/test_2.rb
|
106
|
+
- test/fixtories/test_3.rb
|
107
|
+
- test/fixtory_test.rb
|
108
|
+
- test/test_helper.rb
|
109
|
+
homepage: https://github.com/dockyard/fixtory
|
110
|
+
licenses:
|
111
|
+
- MIT
|
112
|
+
metadata: {}
|
113
|
+
post_install_message:
|
114
|
+
rdoc_options: []
|
115
|
+
require_paths:
|
116
|
+
- lib
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
requirements: []
|
128
|
+
rubyforge_project:
|
129
|
+
rubygems_version: 2.2.2
|
130
|
+
signing_key:
|
131
|
+
specification_version: 4
|
132
|
+
summary: Fixtures and Factories living together, mass hysterica
|
133
|
+
test_files:
|
134
|
+
- test/fixtories/test_1.rb
|
135
|
+
- test/fixtories/test_2.rb
|
136
|
+
- test/fixtories/test_3.rb
|
137
|
+
- test/fixtory_test.rb
|
138
|
+
- test/test_helper.rb
|