fluent_fixtures 0.0.2 → 0.1.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/ChangeLog +46 -1
- data/History.md +6 -0
- data/Manifest.txt +1 -1
- data/README.md +5 -2
- data/TheSetup.md +171 -0
- data/lib/fluent_fixtures.rb +2 -2
- data/lib/fluent_fixtures/dsl.rb +10 -4
- data/lib/fluent_fixtures/factory.rb +2 -0
- data/spec/fluent_fixtures/collection_spec.rb +2 -2
- data/spec/fluent_fixtures/dsl_spec.rb +11 -1
- data/spec/fluent_fixtures/factory_spec.rb +16 -0
- metadata +46 -37
- metadata.gz.sig +0 -0
- data/GettingStarted.md +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c70fba1d0e0cb81714a74684bc8906bfd363a707
|
4
|
+
data.tar.gz: 0cb6b28e3e362e2f86e6b2a2543fa8974a5b1309
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aea30395e953f18e878fc54cfb97da5e9fa05b937a220a5cccb641182adc311bf0dbff0579a5f0ea7acb2afb7c9952f9b59937dd5cbd2ac36fa30da20e939575
|
7
|
+
data.tar.gz: e4a83d0c50b788dc98d52284f5ef7fb4d7ecb28d863c54b51eb87df5a40be4775852feb0b9a231b3303d6d1b6f40553badfe7528edcf80f69ffe89fda2bfa491
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,53 @@
|
|
1
|
+
2016-10-28 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* certs/ged.pem:
|
4
|
+
Update gem cert to the latest one
|
5
|
+
[f3b80f1dca30] [tip]
|
6
|
+
|
7
|
+
* GettingStarted.md, README.md, TheSetup.md:
|
8
|
+
Add some more documentation work
|
9
|
+
[9428d297d024]
|
10
|
+
|
11
|
+
2016-10-20 Michael Granger <ged@FaerieMUD.org>
|
12
|
+
|
13
|
+
* examples/acme_fixtures.rb, examples/lib/acme.rb,
|
14
|
+
examples/lib/acme/base.rb, examples/lib/acme/fixtures.rb,
|
15
|
+
examples/lib/acme/fixtures/groups.rb,
|
16
|
+
examples/lib/acme/fixtures/users.rb, examples/lib/acme/group.rb,
|
17
|
+
examples/lib/acme/user.rb, examples/nodb/acme_fixtures.rb,
|
18
|
+
examples/nodb/lib/acme.rb, examples/nodb/lib/acme/base.rb,
|
19
|
+
examples/nodb/lib/acme/fixtures.rb,
|
20
|
+
examples/nodb/lib/acme/fixtures/groups.rb,
|
21
|
+
examples/nodb/lib/acme/fixtures/users.rb,
|
22
|
+
examples/nodb/lib/acme/group.rb, examples/nodb/lib/acme/user.rb,
|
23
|
+
examples/sequel_model/.pryrc, examples/sequel_model/Gemfile,
|
24
|
+
examples/sequel_model/Gemfile.lock,
|
25
|
+
examples/sequel_model/acme_fixtures.rb,
|
26
|
+
examples/sequel_model/lib/acme.rb,
|
27
|
+
examples/sequel_model/lib/acme/customer.rb,
|
28
|
+
examples/sequel_model/lib/acme/fixtures.rb,
|
29
|
+
examples/sequel_model/lib/acme/fixtures/customers.rb,
|
30
|
+
examples/sequel_model/lib/acme/fixtures/order_items.rb,
|
31
|
+
examples/sequel_model/lib/acme/fixtures/orders.rb,
|
32
|
+
examples/sequel_model/lib/acme/order.rb,
|
33
|
+
examples/sequel_model/lib/acme/order_item.rb,
|
34
|
+
examples/sequel_model/migrations/1_schema.rb:
|
35
|
+
Split examples into per-backend directories
|
36
|
+
[49d76036d758]
|
37
|
+
|
1
38
|
2016-06-01 Michael Granger <ged@FaerieMUD.org>
|
2
39
|
|
40
|
+
* .hgtags:
|
41
|
+
Added tag v0.0.2 for changeset f13e6d1aa624
|
42
|
+
[9c56821be4a9]
|
43
|
+
|
44
|
+
* .hgsigs:
|
45
|
+
Added signature for changeset e500071dd9c0
|
46
|
+
[f13e6d1aa624] [v0.0.2]
|
47
|
+
|
3
48
|
* History.md, lib/fluent_fixtures.rb:
|
4
49
|
Bump the patch version, update history.
|
5
|
-
[e500071dd9c0]
|
50
|
+
[e500071dd9c0]
|
6
51
|
|
7
52
|
* Rakefile, fluent_fixtures.gemspec:
|
8
53
|
Remove the release failsafe from the Rakefile
|
data/History.md
CHANGED
data/Manifest.txt
CHANGED
data/README.md
CHANGED
@@ -15,10 +15,13 @@ docs
|
|
15
15
|
|
16
16
|
## Description
|
17
17
|
|
18
|
-
|
18
|
+
FluentFixtures is a toolkit for building testing objects with a fluent interface.
|
19
19
|
|
20
|
-
|
20
|
+
It allows testers to describe test data via composition rather than setting up fragile monolithic datasets.
|
21
21
|
|
22
|
+
To see a walkthrough of how you might set your own fixtures up, check out the [The Setup](TheSetup_md.html).
|
23
|
+
|
24
|
+
If you're already on your way and just want some API docs, [we got those, too](FluentFixtures.html).
|
22
25
|
|
23
26
|
## Prerequisites
|
24
27
|
|
data/TheSetup.md
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
# The Setup
|
2
|
+
|
3
|
+
To make use of FluentFixtures, you'll need to first set up a module to contain them. Each base fixture you declare will show up in this module.
|
4
|
+
|
5
|
+
For example, say I'm adding fixtures to a hypothetical codebase for acme-warehouse.com's website. It has a set of Sequel::Model classes that are backed by a PostgreSQL database. with a schema like:
|
6
|
+
|
7
|
+
CREATE SCHEMA acme;
|
8
|
+
CREATE TABLE acme.customers (
|
9
|
+
id serial primary key,
|
10
|
+
first_name text NOT NULL,
|
11
|
+
last_name text NOT NULL
|
12
|
+
);
|
13
|
+
CREATE TABLE acme.orders (
|
14
|
+
id serial primary key,
|
15
|
+
ordered_at timestamp with time zone DEFAULT now(),
|
16
|
+
updated_at timestamp with time zone,
|
17
|
+
customer_id integer REFERENCES acme.customers NOT NULL
|
18
|
+
);
|
19
|
+
CREATE TABLE acme.order_items (
|
20
|
+
id serial primary key,
|
21
|
+
sku text NOT NULL,
|
22
|
+
order_id integer REFERENCES acme.orders NOT NULL
|
23
|
+
);
|
24
|
+
|
25
|
+
|
26
|
+
The codebase has three classes: Customers, Orders, and OrderItems, all in the `Acme` namespace:
|
27
|
+
|
28
|
+
# lib/acme.rb
|
29
|
+
|
30
|
+
require 'sequel'
|
31
|
+
|
32
|
+
module Acme
|
33
|
+
|
34
|
+
DB = Sequel.postgres( 'acme' )
|
35
|
+
|
36
|
+
Sequel::Model.plugin :validation_helpers
|
37
|
+
Sequel::Model.plugin :auto_validations, not_null: :presence
|
38
|
+
|
39
|
+
autoload :Customer, 'acme/customer'
|
40
|
+
autoload :Order, 'acme/order'
|
41
|
+
autoload :OrderItem, 'acme/order_item'
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
And the model classes look something like this:
|
46
|
+
|
47
|
+
# lib/acme/customer.rb
|
48
|
+
|
49
|
+
require 'sequel/model'
|
50
|
+
require 'acme' unless defined?( Acme )
|
51
|
+
|
52
|
+
class Acme::Customer < Sequel::Model( :acme__customers )
|
53
|
+
|
54
|
+
one_to_many :orders
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
# lib/acme/order.rb
|
59
|
+
|
60
|
+
require 'sequel/model'
|
61
|
+
require 'acme' unless defined?( Acme )
|
62
|
+
|
63
|
+
class Acme::Order < Sequel::Model( :acme__orders )
|
64
|
+
|
65
|
+
many_to_one :customer, class: 'Acme::User'
|
66
|
+
one_to_many :order_items
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
# lib/acme/order_item.rb
|
71
|
+
|
72
|
+
require 'sequel/model'
|
73
|
+
require 'acme' unless defined?( Acme )
|
74
|
+
|
75
|
+
class Acme::OrderItem < Sequel::Model( :acme__order_items )
|
76
|
+
|
77
|
+
many_to_one :order
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
## Collections
|
83
|
+
|
84
|
+
To start the fixture library, I'll create a new `lib/acme/fixtures.rb` that looks like:
|
85
|
+
|
86
|
+
# lib/acme/fixtures.rb
|
87
|
+
|
88
|
+
require 'fluent_fixtures'
|
89
|
+
require 'acme' unless defined?( Acme )
|
90
|
+
|
91
|
+
module Acme::Fixtures
|
92
|
+
extend FluentFixtures::Collection
|
93
|
+
|
94
|
+
fixture_path_prefix 'acme/fixtures'
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
The `extend` line tell FluentFixtures that the extended module is a collection of related fixtures, and the `fixture_path_prefix` line tells FluentFixtures where to find the files that contain the individual fixture declarations themselves.
|
99
|
+
|
100
|
+
This module will act as the main interface to all of ACME's fixtures.
|
101
|
+
|
102
|
+
|
103
|
+
## Fixtures
|
104
|
+
|
105
|
+
First, we'll add a bare-bones `customer` fixture for creating instances of `Acme::Customer`:
|
106
|
+
|
107
|
+
# lib/acme/fixtures/customers.rb
|
108
|
+
|
109
|
+
require 'acme/fixtures'
|
110
|
+
require 'acme/customer
|
111
|
+
|
112
|
+
module Acme::Fixtures::Customers
|
113
|
+
extend Acme::Fixtures
|
114
|
+
fixtured_class Acme::Customer
|
115
|
+
end
|
116
|
+
|
117
|
+
This time, the `extend` line tells the fixture collection we just created that any fixtures declared in this module belong to it. The `fixtured_class` declaration tells FluentFixtures what kinds of objects these fixtures will create.
|
118
|
+
|
119
|
+
This by itself sets up some defaults based on convention. The first is the "base" fixture, which is the name of the method you'll call on the collection to get a factory that can create `Acme::Customer` objects:
|
120
|
+
|
121
|
+
customer = Acme::Fixtures.customer
|
122
|
+
# => #<FluentFixtures::Factory:0x007fede4113210 for Acme::Fixtures::Customers>
|
123
|
+
|
124
|
+
customer.instance
|
125
|
+
# => #<Acme::Customer @values={}>
|
126
|
+
|
127
|
+
### The `base` Declaration
|
128
|
+
|
129
|
+
If I wanted the base fixture to be called something else, I could also override the conventional one using the `base` declaration:
|
130
|
+
|
131
|
+
module Acme::Fixtures::Customers
|
132
|
+
# ...
|
133
|
+
base :user
|
134
|
+
end
|
135
|
+
|
136
|
+
customer = Acme::Fixtures.user
|
137
|
+
# => #<FluentFixtures::Factory:0x007fc15992a370 for Acme::Fixtures::Customers>
|
138
|
+
|
139
|
+
Obviously this is a little unintuitive, so I won't actually do that, but the `base` declaration can also take a block to provide reasonable defaults. I'll use the `Faker` gem to generate a default first and last name if one hasn't already been set when the object is created:
|
140
|
+
|
141
|
+
require 'faker'
|
142
|
+
|
143
|
+
module Acme::Fixtures::Customers
|
144
|
+
# ...
|
145
|
+
base :customer do
|
146
|
+
self.first_name ||= Faker::Name.first_name
|
147
|
+
self.last_name ||= Faker::Name.last_name
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
customer = Acme::Fixtures.customer
|
152
|
+
# => #<FluentFixtures::Factory:0x007fdb492cd4c8 for Acme::Fixtures::Customers>
|
153
|
+
customer.instance
|
154
|
+
# => #<Acme::Customer @values={:first_name=>"Polly", :last_name=>"Larson"}>
|
155
|
+
|
156
|
+
|
157
|
+
The block executes in the context of the new object if the `base` block doesn't take an argument; you can also declare a block that accepts the new object as an argument if you prefer that.
|
158
|
+
|
159
|
+
|
160
|
+
### Decorators
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
### Hooks
|
165
|
+
|
166
|
+
|
167
|
+
|
168
|
+
## RSpec
|
169
|
+
|
170
|
+
|
171
|
+
|
data/lib/fluent_fixtures.rb
CHANGED
@@ -11,10 +11,10 @@ module FluentFixtures
|
|
11
11
|
|
12
12
|
|
13
13
|
# Package version
|
14
|
-
VERSION = '0.0
|
14
|
+
VERSION = '0.1.0'
|
15
15
|
|
16
16
|
# Version control revision
|
17
|
-
REVISION = %q$Revision:
|
17
|
+
REVISION = %q$Revision: c6eb79628953 $
|
18
18
|
|
19
19
|
|
20
20
|
# Loggability API -- set up a named logger
|
data/lib/fluent_fixtures/dsl.rb
CHANGED
@@ -62,7 +62,7 @@ module FluentFixtures::DSL
|
|
62
62
|
alias_method :has_decorator?, :decorator?
|
63
63
|
|
64
64
|
|
65
|
-
### Declare a +new_name+ for the decorator
|
65
|
+
### Declare a +new_name+ for the decorator declared with with +original_name+.
|
66
66
|
def alias_decorator( new_name, original_name )
|
67
67
|
block = self.decorators[ original_name.to_sym ] or
|
68
68
|
raise ScriptError, "undefined decorator %p" % [ original_name ]
|
@@ -70,15 +70,21 @@ module FluentFixtures::DSL
|
|
70
70
|
end
|
71
71
|
|
72
72
|
|
73
|
-
### Add a callback to the fixture that will passed new instances after all
|
73
|
+
### Add a callback to the fixture that will be passed new instances after all
|
74
74
|
### decorators have been applied and immediately before it's saved. The results of
|
75
|
-
### the block will be used as the fixtured instance.
|
76
|
-
### used for tables with fixed rows to use `find_or_create` or similar.
|
75
|
+
### the block will be used as the fixtured instance.
|
77
76
|
def before_saving( &block )
|
78
77
|
define_singleton_method( :call_before_saving, &block )
|
79
78
|
end
|
80
79
|
|
81
80
|
|
81
|
+
### Add a callback to the fixture that will be passed new instances after it's
|
82
|
+
### saved. The results of the block will be used as the fixtured instance.
|
83
|
+
def after_saving( &block )
|
84
|
+
define_singleton_method( :call_after_saving, &block )
|
85
|
+
end
|
86
|
+
|
87
|
+
|
82
88
|
### Return an instance of Cozy::FluentFixtures::FluentFactory for the base fixture
|
83
89
|
### of the receiving module.
|
84
90
|
def factory( *args, &block )
|
@@ -115,9 +115,9 @@ describe FluentFixtures::Collection do
|
|
115
115
|
|
116
116
|
|
117
117
|
it "allows the loading prefix to be customized" do
|
118
|
-
collection.fixture_path_prefix( '
|
118
|
+
collection.fixture_path_prefix( 'example/fixtures' )
|
119
119
|
expect( collection ).to receive( :require ).
|
120
|
-
with( "
|
120
|
+
with( "example/fixtures/foo" ).and_return( false )
|
121
121
|
|
122
122
|
collection.load( :foo )
|
123
123
|
end
|
@@ -60,7 +60,7 @@ describe FluentFixtures::DSL do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
|
63
|
-
it "can register a creation hook to allow for unusual models" do
|
63
|
+
it "can register a before-creation hook to allow for unusual models" do
|
64
64
|
expect {
|
65
65
|
fixture_module.before_saving do |obj|
|
66
66
|
obj
|
@@ -70,6 +70,16 @@ describe FluentFixtures::DSL do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
|
73
|
+
it "can register an after-creation hook to allow for unusual models" do
|
74
|
+
expect {
|
75
|
+
fixture_module.after_saving do |obj|
|
76
|
+
obj
|
77
|
+
end
|
78
|
+
}.to change { fixture_module.respond_to?(:call_after_saving) }.
|
79
|
+
from( false ).to( true )
|
80
|
+
end
|
81
|
+
|
82
|
+
|
73
83
|
it "can declare an alias for an already-declared decorator" do
|
74
84
|
fixture_module.decorator( :with_no_email ) { self.email = nil }
|
75
85
|
fixture_module.alias_decorator( :emailless, :with_no_email )
|
@@ -14,6 +14,7 @@ describe FluentFixtures::Factory do
|
|
14
14
|
Class.new do
|
15
15
|
def initialize( params={} )
|
16
16
|
@saved = false
|
17
|
+
@deleted = false
|
17
18
|
params.each do |name, value|
|
18
19
|
self.send( "#{name}=", value )
|
19
20
|
end
|
@@ -28,6 +29,8 @@ describe FluentFixtures::Factory do
|
|
28
29
|
self.login = "__#{self.login}__"
|
29
30
|
self
|
30
31
|
end
|
32
|
+
def delete; @deleted = true; end
|
33
|
+
def deleted?; @deleted; end
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
@@ -202,6 +205,19 @@ describe FluentFixtures::Factory do
|
|
202
205
|
end
|
203
206
|
|
204
207
|
|
208
|
+
it "calls its fixture module's #call_after_saving method after creating if it implements it" do
|
209
|
+
def fixture_module.call_after_saving( instance )
|
210
|
+
instance.delete
|
211
|
+
instance
|
212
|
+
end
|
213
|
+
|
214
|
+
result = factory.create
|
215
|
+
|
216
|
+
expect( result ).to be_an_instance_of( fixtured_class )
|
217
|
+
expect( result ).to be_deleted
|
218
|
+
end
|
219
|
+
|
220
|
+
|
205
221
|
it "allows ad-hoc decorators declared as inline blocks" do
|
206
222
|
counter = 0
|
207
223
|
result = factory.decorated_with do |obj|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent_fixtures
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -10,26 +10,32 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIEbDCCAtSgAwIBAgIBATANBgkqhkiG9w0BAQsFADA+MQwwCgYDVQQDDANnZWQx
|
14
14
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
15
|
-
|
15
|
+
HhcNMTYwODIwMTgxNzQyWhcNMTcwODIwMTgxNzQyWjA+MQwwCgYDVQQDDANnZWQx
|
16
16
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
17
|
+
ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC/JWGRHO+USzR97vXjkFgt
|
18
|
+
83qeNf2KHkcvrRTSnR64i6um/ziin0I0oX23H7VYrDJC9A/uoUa5nGRJS5Zw/+wW
|
19
|
+
ENcvWVZS4iUzi4dsYJGY6yEOsXh2CcF46+QevV8iE+UmbkU75V7Dy1JCaUOyizEt
|
20
|
+
TH5UHsOtUU7k9TYARt/TgYZKuaoAMZZd5qyVqhF1vV+7/Qzmp89NGflXf2xYP26a
|
21
|
+
4MAX2qqKX/FKXqmFO+AGsbwYTEds1mksBF3fGsFgsQWxftG8GfZQ9+Cyu2+l1eOw
|
22
|
+
cZ+lPcg834G9DrqW2zhqUoLr1MTly4pqxYGb7XoDhoR7dd1kFE2a067+DzWC/ADt
|
23
|
+
+QkcqWUm5oh1fN0eqr7NsZlVJDulFgdiiYPQiIN7UNsii4Wc9aZqBoGcYfBeQNPZ
|
24
|
+
soo/6za/bWajOKUmDhpqvaiRv9EDpVLzuj53uDoukMMwxCMfgb04+ckQ0t2G7wqc
|
25
|
+
/D+K9JW9DDs3Yjgv9k4h7YMhW5gftosd+NkNC/+Y2CkCAwEAAaN1MHMwCQYDVR0T
|
26
|
+
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFHKN/nkRusdqCJEuq3lgB3fJvyTg
|
27
|
+
MBwGA1UdEQQVMBOBEWdlZEBGYWVyaWVNVUQub3JnMBwGA1UdEgQVMBOBEWdlZEBG
|
28
|
+
YWVyaWVNVUQub3JnMA0GCSqGSIb3DQEBCwUAA4IBgQAPJzKiT0zBU7kpqe0aS2qb
|
29
|
+
FI0PJ4y5I8buU4IZGUD5NEt/N7pZNfOyBxkrZkXhS44Fp+xwBH5ebLbq/WY78Bqd
|
30
|
+
db0z6ZgW4LMYMpWFfbXsRbd9TU2f52L8oMAhxOvF7Of5qJMVWuFQ8FPagk2iHrdH
|
31
|
+
inYLQagqAF6goWTXgAJCdPd6SNeeSNqA6vlY7CV1Jh5kfNJJ6xu/CVij1GzCLu/5
|
32
|
+
DMOr26DBv+qLJRRC/2h34uX71q5QgeOyxvMg+7V3u/Q06DXyQ2VgeeqiwDFFpEH0
|
33
|
+
PFkdPO6ZqbTRcLfNH7mFgCBJjsfSjJrn0sPBlYyOXgCoByfZnZyrIMH/UY+lgQqS
|
34
|
+
6Von1VDsfQm0eJh5zYZD64ZF86phSR7mUX3mXItwH04HrZwkWpvgd871DZVR3i1n
|
35
|
+
w8aNA5re5+Rt/Vvjxj5AcEnZnZiz5x959NaddQocX32Z1unHw44pzRNUur1GInfW
|
36
|
+
p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
|
31
37
|
-----END CERTIFICATE-----
|
32
|
-
date: 2016-
|
38
|
+
date: 2016-10-28 00:00:00.000000000 Z
|
33
39
|
dependencies:
|
34
40
|
- !ruby/object:Gem::Dependency
|
35
41
|
name: loggability
|
@@ -102,61 +108,61 @@ dependencies:
|
|
102
108
|
- !ruby/object:Gem::Version
|
103
109
|
version: '0.2'
|
104
110
|
- !ruby/object:Gem::Dependency
|
105
|
-
name:
|
111
|
+
name: faker
|
106
112
|
requirement: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
114
|
- - "~>"
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
116
|
+
version: '1.6'
|
111
117
|
type: :development
|
112
118
|
prerelease: false
|
113
119
|
version_requirements: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
121
|
- - "~>"
|
116
122
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
123
|
+
version: '1.6'
|
118
124
|
- !ruby/object:Gem::Dependency
|
119
|
-
name:
|
125
|
+
name: simplecov
|
120
126
|
requirement: !ruby/object:Gem::Requirement
|
121
127
|
requirements:
|
122
128
|
- - "~>"
|
123
129
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
130
|
+
version: '0.7'
|
125
131
|
type: :development
|
126
132
|
prerelease: false
|
127
133
|
version_requirements: !ruby/object:Gem::Requirement
|
128
134
|
requirements:
|
129
135
|
- - "~>"
|
130
136
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
137
|
+
version: '0.7'
|
132
138
|
- !ruby/object:Gem::Dependency
|
133
|
-
name:
|
139
|
+
name: rdoc-generator-fivefish
|
134
140
|
requirement: !ruby/object:Gem::Requirement
|
135
141
|
requirements:
|
136
142
|
- - "~>"
|
137
143
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0.
|
144
|
+
version: '0.1'
|
139
145
|
type: :development
|
140
146
|
prerelease: false
|
141
147
|
version_requirements: !ruby/object:Gem::Requirement
|
142
148
|
requirements:
|
143
149
|
- - "~>"
|
144
150
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0.
|
151
|
+
version: '0.1'
|
146
152
|
- !ruby/object:Gem::Dependency
|
147
|
-
name: rdoc
|
153
|
+
name: rdoc
|
148
154
|
requirement: !ruby/object:Gem::Requirement
|
149
155
|
requirements:
|
150
156
|
- - "~>"
|
151
157
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0
|
158
|
+
version: '4.0'
|
153
159
|
type: :development
|
154
160
|
prerelease: false
|
155
161
|
version_requirements: !ruby/object:Gem::Requirement
|
156
162
|
requirements:
|
157
163
|
- - "~>"
|
158
164
|
- !ruby/object:Gem::Version
|
159
|
-
version: '0
|
165
|
+
version: '4.0'
|
160
166
|
- !ruby/object:Gem::Dependency
|
161
167
|
name: hoe
|
162
168
|
requirement: !ruby/object:Gem::Requirement
|
@@ -172,30 +178,34 @@ dependencies:
|
|
172
178
|
- !ruby/object:Gem::Version
|
173
179
|
version: '3.15'
|
174
180
|
description: |-
|
175
|
-
|
181
|
+
FluentFixtures is a toolkit for building testing objects with a fluent interface.
|
182
|
+
|
183
|
+
It allows testers to describe test data via composition rather than setting up fragile monolithic datasets.
|
184
|
+
|
185
|
+
To see a walkthrough of how you might set your own fixtures up, check out the [The Setup](TheSetup_md.html).
|
176
186
|
|
177
|
-
|
187
|
+
If you're already on your way and just want some API docs, [we got those, too](FluentFixtures.html).
|
178
188
|
email:
|
179
189
|
- ged@FaerieMUD.org
|
180
190
|
executables: []
|
181
191
|
extensions: []
|
182
192
|
extra_rdoc_files:
|
183
|
-
- GettingStarted.md
|
184
193
|
- History.md
|
185
194
|
- LICENSE.txt
|
186
195
|
- Manifest.txt
|
187
196
|
- README.md
|
197
|
+
- TheSetup.md
|
188
198
|
files:
|
189
199
|
- ".document"
|
190
200
|
- ".rdoc_options"
|
191
201
|
- ".simplecov"
|
192
202
|
- ChangeLog
|
193
|
-
- GettingStarted.md
|
194
203
|
- History.md
|
195
204
|
- LICENSE.txt
|
196
205
|
- Manifest.txt
|
197
206
|
- README.md
|
198
207
|
- Rakefile
|
208
|
+
- TheSetup.md
|
199
209
|
- lib/fluent_fixtures.rb
|
200
210
|
- lib/fluent_fixtures/collection.rb
|
201
211
|
- lib/fluent_fixtures/dsl.rb
|
@@ -227,9 +237,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
237
|
version: '0'
|
228
238
|
requirements: []
|
229
239
|
rubyforge_project:
|
230
|
-
rubygems_version: 2.
|
240
|
+
rubygems_version: 2.5.1
|
231
241
|
signing_key:
|
232
242
|
specification_version: 4
|
233
|
-
summary:
|
234
|
-
fluent interface
|
243
|
+
summary: FluentFixtures is a toolkit for building testing objects with a fluent interface
|
235
244
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|
data/GettingStarted.md
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# Getting Started With Fluent Fixtures
|
2
|
-
|
3
|
-
Declare a module that will act as a collection of fixtures:
|
4
|
-
|
5
|
-
# lib/acme/fixtures.rb
|
6
|
-
require 'fluent_fixtures'
|
7
|
-
module Acme::Fixtures
|
8
|
-
extend FluentFixtures::Collection
|
9
|
-
fixture_path_prefix 'acme/fixtures'
|
10
|
-
end
|
11
|
-
|
12
|
-
This module will act as the main interface to all of ACME's fixtures.
|
13
|
-
|
14
|
-
First, we'll add a bare-bones `user` fixture for creating instances of a hypothetical `Acme::User` class:
|
15
|
-
|
16
|
-
# lib/acme/fixtures/users.rb
|
17
|
-
require 'acme/fixtures'
|
18
|
-
require 'acme/user
|
19
|
-
module Acme::Fixtures::Users
|
20
|
-
extend Acme::Fixtures
|
21
|
-
fixtured_class Acme::User
|
22
|
-
end
|
23
|
-
|
24
|
-
[...more soon]
|
25
|
-
|
26
|
-
|