fluent_fixtures 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fdc1f6ce5b49218750ef162d0f73ae7b9150be8b
4
- data.tar.gz: 9c6edc393f5b5966ceeaf4ce91a32dbc1d92b5ed
3
+ metadata.gz: 4af7da2d10d611a8705da13607ced285f95c6220
4
+ data.tar.gz: 45b92115603fa459a00b1c2750735b5c5851731f
5
5
  SHA512:
6
- metadata.gz: 10965916800b2b08931ffceff65b124de14e570d262851ba8d7c9e5942142cc8b9270a09dbbe22e90f037e036018486297e7902f7869217f720a37f1a3f0522b
7
- data.tar.gz: dce961bbe9d5eaae9e2582bde164e9bc8d8c98dea9905fa270e9ee649237d4ae3e4d6258827f2c3d3109cd4c597a496b4f3d8e11d1547634b5fa484f1889c0da
6
+ metadata.gz: 740b6475a410d1bed9ae2aa58577a89558e80d91e97be222b8a4bb66cb34b61b948105b6ebb3526325a30e89b6350c261ffe7274e0e08e537b5236eedddc9efe
7
+ data.tar.gz: 98b968f86142ca86dc0ba0d5dad1c78ff86a61081b72323b17eb8751b07b858bfd5eafe782fabad683e14c9422de2477230c30f8c46639b6a9040b1daf78f976
checksums.yaml.gz.sig CHANGED
@@ -1 +1,2 @@
1
- u(�I��F�;�Va-|1�������b�-L��h���#.CQ����7�۹vٚqK?�2�%nT���u��ro
1
+ ��j�� B �@�a�*iO2A�Hs�t:���=CRn �]���2�>�8��Jֻ
2
+ ������r���X������ja���]��A�����'D��y�<
data/History.md CHANGED
@@ -1,14 +1,23 @@
1
+ ## v0.3.0 [2016-11-26] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Enhancements:
4
+
5
+ - Make the factory Enumerable and add a #generator method.
6
+
7
+
1
8
  ## v0.2.0 [2016-10-28] Michael Granger <ged@FaerieMUD.org>
2
9
 
3
10
  Bugfixes:
11
+
4
12
  - Fix the way #create and #instance handle their arguments. Arguments are
5
13
  now iterated over and used to set attributes instead of just being
6
- discarded.
14
+ discarded.
7
15
 
8
16
 
9
17
  ## v0.1.0 [2016-10-28] Michael Granger <ged@FaerieMUD.org>
10
18
 
11
19
  New feature:
20
+
12
21
  - Add an after-save hook and a declaration for it.
13
22
 
14
23
 
@@ -8,11 +8,15 @@ require 'fluent_fixtures' unless defined?( FluentFixtures )
8
8
  # The fluent fixture monadic factory class.
9
9
  class FluentFixtures::Factory
10
10
  extend Loggability
11
+ include Enumerable
11
12
 
12
13
 
13
14
  # The methods to look for to save new instances when #create is called
14
15
  CREATE_METHODS = %i[ save_changes save ]
15
16
 
17
+ # The default limit for generators
18
+ DEFAULT_GENERATOR_LIMIT = 10_000
19
+
16
20
 
17
21
  # Loggability API -- log to the FluentFixtures logger
18
22
  log_to :fluent_fixtures
@@ -121,6 +125,35 @@ class FluentFixtures::Factory
121
125
  end
122
126
 
123
127
 
128
+ ### Iterate over DEFAULT_GENERATOR_LIMIT instances of the fixtured object, yielding
129
+ ### each new instance if a block is provided. If no block is provided, returns an
130
+ ### Enumerator.
131
+ def each( &block )
132
+ return self.generator unless block
133
+ return self.generator.each( &block )
134
+ end
135
+
136
+
137
+ ### Return an infinite generator for unsaved instances of the fixtured object.
138
+ def generator( create: false, limit: DEFAULT_GENERATOR_LIMIT )
139
+ return Enumerator.new( limit || Float::INFINITY ) do |yielder|
140
+ count = 0
141
+ loop do
142
+ break if limit && count >= limit
143
+ obj = if create
144
+ self.create
145
+ else
146
+ self.instance
147
+ end
148
+
149
+ yielder.yield( obj )
150
+
151
+ count += 1
152
+ end
153
+ end
154
+ end
155
+
156
+
124
157
  ### Return a human-readable representation of the object suitable for debugging.
125
158
  def inspect
126
159
  decorator_description = self.decorators.map( &:first ).join( ' + ' )
@@ -11,10 +11,10 @@ module FluentFixtures
11
11
 
12
12
 
13
13
  # Package version
14
- VERSION = '0.2.0'
14
+ VERSION = '0.3.0'
15
15
 
16
16
  # Version control revision
17
- REVISION = %q$Revision: bde330b02946 $
17
+ REVISION = %q$Revision: 5b362f519048 $
18
18
 
19
19
 
20
20
  # Loggability API -- set up a named logger
@@ -293,6 +293,57 @@ describe FluentFixtures::Factory do
293
293
  end
294
294
 
295
295
 
296
+ describe "enumerator/generator" do
297
+
298
+ it "is Enumerable" do
299
+ expect( factory ).to be_an( Enumerable )
300
+ expect( factory.each ).to be_an( Enumerator )
301
+ end
302
+
303
+
304
+ it "can create an enumerator (generator) of unsaved instances" do
305
+ enum = factory.generator
306
+
307
+ expect( enum ).to be_a( Enumerator )
308
+
309
+ instance = enum.next
310
+
311
+ expect( instance ).to be_a( fixtured_class )
312
+ expect( instance ).to_not be_saved
313
+ end
314
+
315
+
316
+ it "can create an enumerator (generator) of saved instances" do
317
+ enum = factory.generator( create: true )
318
+
319
+ expect( enum ).to be_a( Enumerator )
320
+
321
+ instance = enum.next
322
+
323
+ expect( instance ).to be_a( fixtured_class )
324
+ expect( instance ).to be_saved
325
+ end
326
+
327
+
328
+ it "is a limited generator by default" do
329
+ enum = factory.generator
330
+ expect( enum.size ).to eq( described_class::DEFAULT_GENERATOR_LIMIT )
331
+ end
332
+
333
+
334
+ it "can be limited to a different size" do
335
+ enum = factory.generator( limit: 5 )
336
+ expect( enum.size ).to eq( 5 )
337
+ expect( enum.to_a ).to be_an( Array ).and( have_attributes(length: 5) )
338
+ end
339
+
340
+
341
+ it "can be created as an infinite generator" do
342
+ enum = factory.generator( limit: nil )
343
+ expect( enum.size ).to eq( Float::INFINITY )
344
+ end
345
+
346
+ end
296
347
 
297
348
  end
298
349
 
data.tar.gz.sig CHANGED
Binary file
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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
@@ -35,7 +35,7 @@ cert_chain:
35
35
  w8aNA5re5+Rt/Vvjxj5AcEnZnZiz5x959NaddQocX32Z1unHw44pzRNUur1GInfW
36
36
  p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
37
37
  -----END CERTIFICATE-----
38
- date: 2016-10-28 00:00:00.000000000 Z
38
+ date: 2016-11-26 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: loggability
@@ -237,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
237
  version: '0'
238
238
  requirements: []
239
239
  rubyforge_project:
240
- rubygems_version: 2.5.1
240
+ rubygems_version: 2.6.8
241
241
  signing_key:
242
242
  specification_version: 4
243
243
  summary: FluentFixtures is a toolkit for building testing objects with a fluent interface
metadata.gz.sig CHANGED
Binary file