fixtory 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.travis.yml ADDED
@@ -0,0 +1,2 @@
1
+ rvm:
2
+ - 2.1.0
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fixtory.gemspec
4
+ gemspec
5
+ gem 'byebug'
6
+ gem 'm', github: 'zamith/m'
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
+ [![Build Status](https://secure.travis-ci.org/dockyard/fixtory.png?branch=master)](http://travis-ci.org/dockyard/fixtory)
4
+ [![Dependency Status](https://gemnasium.com/dockyard/fixtory.png?travis)](https://gemnasium.com/dockyard/fixtory)
5
+ [![Code Climate](https://codeclimate.com/github/dockyard/fixtory.png)](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. &copy; 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
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new(:test) do |t|
6
+ t.libs << 'lib'
7
+ t.libs << 'test'
8
+ t.pattern = 'test/**/*_test.rb'
9
+ t.verbose = false
10
+ end
11
+
12
+ task default: :test
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'
@@ -0,0 +1,9 @@
1
+ module Fixtory::DSL
2
+ def self.build_from(path)
3
+ builder = Fixtory::DSL::Builder.new
4
+ builder._eval_from_fixtory_file(path)
5
+ builder
6
+ end
7
+ end
8
+
9
+ require 'fixtory/dsl/builder'
@@ -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,9 @@
1
+ require 'fixtory/dsl'
2
+
3
+ module Fixtory::Methods
4
+ def fixtory(group_name)
5
+ builder = Fixtory::DSL.build_from(Fixtory.path_for(group_name))
6
+ builder._insert
7
+ builder
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Fixtory
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,20 @@
1
+ owners do
2
+ brian do
3
+ name 'Brian'
4
+ age 35
5
+ end
6
+ end
7
+
8
+ dogs do
9
+ boomer do
10
+ name 'Boomer'
11
+ age 1.5
12
+ owner owners.brian
13
+ end
14
+
15
+ wiley do
16
+ name 'Wiley'
17
+ age 12
18
+ owner owners.brian
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ owners do
2
+ brian do
3
+ name 'Brian'
4
+ age 35
5
+ dogs [dogs.boomer]
6
+ end
7
+ end
8
+
9
+ dogs do
10
+ boomer do
11
+ name 'Boomer'
12
+ age 1.5
13
+ end
14
+ end
@@ -0,0 +1,13 @@
1
+ owners do
2
+ brian do
3
+ name 'Brian'
4
+ age 35
5
+ book books.moby_dick
6
+ end
7
+ end
8
+
9
+ books do
10
+ moby_dick do
11
+ name 'Moby Dick'
12
+ end
13
+ 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
@@ -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