active_mocker 1.7.3 → 1.8
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
- data/CHANGELOG.md +15 -0
- data/README.md +1 -0
- data/lib/active_mocker/mock.rb +1 -1
- data/lib/active_mocker/mock/belongs_to.rb +14 -2
- data/lib/active_mocker/mock/collection.rb +5 -16
- data/lib/active_mocker/mock/has_one.rb +2 -2
- data/lib/active_mocker/mock/mock_abilities.rb +6 -6
- data/lib/active_mocker/mock/queries.rb +48 -5
- data/lib/active_mocker/mock/records.rb +47 -47
- data/lib/active_mocker/mock/single_relation.rb +1 -1
- data/lib/active_mocker/mock_template.erb +6 -10
- data/lib/active_mocker/version.rb +1 -1
- metadata +13 -28
- data/lib/active_mocker/mock/next_id.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d37886b706ee7f0b5c853537f5032c8c06c1020
|
4
|
+
data.tar.gz: 216a6de43827e700ed4da36cbb5a565fbf4923ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 230736f97cc1d137031c30fe013e848e23a09f523d9c4110c54eb3448bdfa1da0cdb33468693b7a0571d0b59ea3fb0de7c405cf22e4b2e8cec10059784fde52e
|
7
|
+
data.tar.gz: 782b7f7577fdd3054c69239cce1e6e693eddd5e3f32267f934091d6a7379a1eb9a33b876b83eb8327fe79de8f15bf1c84b75616f7d3e8f7d5de8e97ad9f0e3c2
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
## 1.8 - 2015-02-17
|
5
|
+
|
6
|
+
### Notes
|
7
|
+
This release has minor speed improvements. You may find that some records where an attribute was nil it will now have an a value. Next release will most likely be 2.0 where I will focus on removing deprecated features and performance of the mocks runtime.
|
8
|
+
|
9
|
+
### Enhancement
|
10
|
+
- Improve accuracy and speed in some cases, for finding associations by not assigning them at creation time but finding them when called.
|
11
|
+
- Hide the internals stack trace when calling method that will raising `NotImplementedError`.
|
12
|
+
- Add spec documentation for method #new_relation
|
13
|
+
|
14
|
+
### Added
|
15
|
+
- Support for ruby 2.2.0 and rails 4.2
|
16
|
+
- new method #none does what it does for ActiveRecord
|
17
|
+
|
3
18
|
## 1.7.3 - 2014-12-01
|
4
19
|
|
5
20
|
### Fix
|
data/README.md
CHANGED
@@ -312,6 +312,7 @@ See [Documentation](http://rdoc.info/github/zeisler/active_mocker/master/ActiveM
|
|
312
312
|
* order(:field_name)
|
313
313
|
* reverse_order
|
314
314
|
* limit
|
315
|
+
* none
|
315
316
|
|
316
317
|
**Relation Methods** - [docs](http://rdoc.info/github/zeisler/active_mocker/master/ActiveMocker/Mock/Collection)
|
317
318
|
* concat
|
data/lib/active_mocker/mock.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'active_support/deprecation'
|
1
2
|
require 'active_support/dependencies/autoload'
|
2
3
|
require 'active_support/hash_with_indifferent_access'
|
3
4
|
require 'active_support/core_ext/module/delegation'
|
@@ -22,7 +23,6 @@ require 'active_mocker/mock/mock_abilities'
|
|
22
23
|
require 'active_mocker/mock/exceptions'
|
23
24
|
require 'active_mocker/mock/template_methods'
|
24
25
|
require 'active_mocker/mock/do_nothing_active_record_methods'
|
25
|
-
require 'active_mocker/mock/next_id'
|
26
26
|
require 'active_mocker/mock/records'
|
27
27
|
require 'active_mocker/mock/object_inspect'
|
28
28
|
require 'active_mocker/mock/base'
|
@@ -5,11 +5,23 @@ module ActiveMocker
|
|
5
5
|
|
6
6
|
attr_reader :item
|
7
7
|
|
8
|
-
def initialize(item, child_self:, foreign_key
|
9
|
-
|
8
|
+
def initialize(item, child_self:, foreign_key:)
|
9
|
+
save_item(item, child_self)
|
10
|
+
assign_foreign_key(child_self, foreign_key, item.try(:id))
|
10
11
|
super
|
11
12
|
end
|
12
13
|
|
14
|
+
private
|
15
|
+
|
16
|
+
def assign_foreign_key(child_self, foreign_key, foreign_id)
|
17
|
+
child_self.send(:write_attribute, foreign_key, foreign_id)
|
18
|
+
end
|
19
|
+
|
20
|
+
def save_item(item, child_self)
|
21
|
+
return if item.nil?
|
22
|
+
item.try(:save) if child_self.persisted?
|
23
|
+
end
|
24
|
+
|
13
25
|
end
|
14
26
|
|
15
27
|
end
|
@@ -6,6 +6,10 @@ module Mock
|
|
6
6
|
class Collection
|
7
7
|
|
8
8
|
include Enumerable
|
9
|
+
extend ::Forwardable
|
10
|
+
def_delegators :@collection, :[], :take, :push, :clear, :first, :last, :concat, :replace, :uniq, :count, :size, :length, :empty?, :any?, :many?, :include?, :delete
|
11
|
+
alias_method :distinct, :uniq
|
12
|
+
|
9
13
|
|
10
14
|
def initialize(collection=[])
|
11
15
|
@collection = [*collection]
|
@@ -15,23 +19,9 @@ module Mock
|
|
15
19
|
collection.concat(records.flatten)
|
16
20
|
end
|
17
21
|
|
18
|
-
extend ::Forwardable
|
19
|
-
def_delegators :@collection, :[], :take, :push, :clear, :first, :last, :concat, :replace, :uniq, :count, :size, :length, :empty?, :any?, :many?, :include?, :delete
|
20
|
-
alias_method :distinct, :uniq
|
21
|
-
|
22
|
-
def select(&block)
|
23
|
-
collection.select(&block)
|
24
|
-
end
|
25
|
-
|
26
22
|
def each(&block)
|
27
23
|
collection.each do |item|
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def map(&block)
|
33
|
-
collection.map do |item|
|
34
|
-
block.call(item)
|
24
|
+
yield(item)
|
35
25
|
end
|
36
26
|
end
|
37
27
|
|
@@ -51,7 +41,6 @@ module Mock
|
|
51
41
|
@collection == val
|
52
42
|
end
|
53
43
|
|
54
|
-
# Returns true if relation is blank.
|
55
44
|
def blank?
|
56
45
|
to_a.blank?
|
57
46
|
end
|
@@ -5,8 +5,8 @@ module ActiveMocker
|
|
5
5
|
|
6
6
|
attr_reader :item
|
7
7
|
|
8
|
-
def initialize(item, child_self:, foreign_key
|
9
|
-
item.send(:write_attribute, foreign_key,
|
8
|
+
def initialize(item, child_self:, foreign_key:)
|
9
|
+
item.send(:write_attribute, foreign_key, item.try(:id)) if !item.try(:id).nil?
|
10
10
|
super
|
11
11
|
end
|
12
12
|
|
@@ -26,8 +26,8 @@ module ActiveMocker
|
|
26
26
|
self.class
|
27
27
|
end
|
28
28
|
|
29
|
-
def is_implemented(val, method, type)
|
30
|
-
raise NotImplementedError, "#{type}#{method} for Class: #{class_name}. To continue stub the method." if val.nil?
|
29
|
+
def is_implemented(val, method, type, call_stack)
|
30
|
+
raise NotImplementedError, "#{type}#{method} for Class: #{class_name}. To continue stub the method.", call_stack if val.nil?
|
31
31
|
end
|
32
32
|
|
33
33
|
def execute_block(method)
|
@@ -55,9 +55,9 @@ module ActiveMocker
|
|
55
55
|
|
56
56
|
alias_method :stub_class_method, :mock_class_method
|
57
57
|
|
58
|
-
def call_mock_method(method, *arguments)
|
58
|
+
def call_mock_method(method, caller, *arguments)
|
59
59
|
mock_method = mockable_class_methods[method.to_sym]
|
60
|
-
is_implemented(mock_method, method, '::')
|
60
|
+
is_implemented(mock_method, method, '::', caller)
|
61
61
|
mock_method.arguments = arguments
|
62
62
|
execute_block(mock_method)
|
63
63
|
end
|
@@ -68,10 +68,10 @@ module ActiveMocker
|
|
68
68
|
|
69
69
|
include InstanceAndClassMethods
|
70
70
|
|
71
|
-
def call_mock_method(method, *arguments)
|
71
|
+
def call_mock_method(method, caller, *arguments)
|
72
72
|
mock_method = mockable_instance_methods[method.to_sym]
|
73
73
|
mock_method = self.class.send(:mockable_instance_methods)[method.to_sym] if mock_method.nil?
|
74
|
-
is_implemented(mock_method, method, '#')
|
74
|
+
is_implemented(mock_method, method, '#', caller)
|
75
75
|
mock_method.arguments = arguments
|
76
76
|
execute_block mock_method
|
77
77
|
end
|
@@ -11,11 +11,24 @@ module Mock
|
|
11
11
|
|
12
12
|
def is_of(conditions={})
|
13
13
|
conditions.all? do |col, match|
|
14
|
-
|
15
|
-
|
14
|
+
if match.is_a? Enumerable
|
15
|
+
any_match(col, match)
|
16
|
+
else
|
17
|
+
compare(col, match)
|
18
|
+
end
|
16
19
|
end
|
17
20
|
end
|
18
21
|
|
22
|
+
private
|
23
|
+
|
24
|
+
def any_match(col, match)
|
25
|
+
match.any? { |m| compare(col, m) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def compare(col, match)
|
29
|
+
@record.send(col) == match
|
30
|
+
end
|
31
|
+
|
19
32
|
end
|
20
33
|
|
21
34
|
class WhereNotChain
|
@@ -145,8 +158,8 @@ module Mock
|
|
145
158
|
#
|
146
159
|
# # Update all books that match conditions, but limit it to 5 ordered by date
|
147
160
|
# BookMock.where(title: 'Rails').order(:created_at).limit(5).update_all(author: 'David')
|
148
|
-
def update_all(
|
149
|
-
all.each { |i| i.update(
|
161
|
+
def update_all(attributes)
|
162
|
+
all.each { |i| i.update(attributes) }
|
150
163
|
end
|
151
164
|
|
152
165
|
# Updates an object (or multiple objects) and saves it.
|
@@ -182,7 +195,9 @@ module Mock
|
|
182
195
|
#
|
183
196
|
# Post.find_by name: 'Spartacus', rating: 4
|
184
197
|
def find_by(conditions = {})
|
185
|
-
|
198
|
+
to_a.detect do |record|
|
199
|
+
Find.new(record).is_of(conditions)
|
200
|
+
end
|
186
201
|
end
|
187
202
|
|
188
203
|
# Like <tt>find_by</tt>, except that if no record is found, raises
|
@@ -306,6 +321,34 @@ module Mock
|
|
306
321
|
new_relation(to_a || [])
|
307
322
|
end
|
308
323
|
|
324
|
+
# Returns a chainable relation with zero records.
|
325
|
+
#
|
326
|
+
# Any subsequent condition chained to the returned relation will continue
|
327
|
+
# generating an empty relation.
|
328
|
+
#
|
329
|
+
# Used in cases where a method or scope could return zero records but the
|
330
|
+
# result needs to be chainable.
|
331
|
+
#
|
332
|
+
# For example:
|
333
|
+
#
|
334
|
+
# @posts = current_user.visible_posts.where(name: params[:name])
|
335
|
+
# # => the visible_posts method is expected to return a chainable Relation
|
336
|
+
#
|
337
|
+
# def visible_posts
|
338
|
+
# case role
|
339
|
+
# when 'Country Manager'
|
340
|
+
# Post.where(country: country)
|
341
|
+
# when 'Reviewer'
|
342
|
+
# Post.published
|
343
|
+
# when 'Bad User'
|
344
|
+
# Post.none # It can't be chained if [] is returned.
|
345
|
+
# end
|
346
|
+
# end
|
347
|
+
#
|
348
|
+
def none
|
349
|
+
new_relation([])
|
350
|
+
end
|
351
|
+
|
309
352
|
private
|
310
353
|
|
311
354
|
def values_by_key(key)
|
@@ -1,62 +1,62 @@
|
|
1
1
|
module ActiveMocker
|
2
|
-
module Mock
|
3
|
-
class Records
|
2
|
+
module Mock
|
3
|
+
class Records
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
extend Forwardable
|
6
|
+
def_delegators :records, :<<, :count, :length, :to_a
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
def initialize(records = [])
|
11
|
-
@records ||= records
|
12
|
-
@record_index ||= {}
|
13
|
-
end
|
8
|
+
attr_reader :records
|
9
|
+
private :records
|
14
10
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
add_to_record_index(record)
|
19
|
-
records << record
|
20
|
-
end
|
11
|
+
def initialize(records = [])
|
12
|
+
@records = records
|
13
|
+
end
|
21
14
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
index = records.index(record)
|
26
|
-
records.delete_at(index)
|
27
|
-
end
|
15
|
+
def insert(record)
|
16
|
+
records << validate_unique_id((record.id ||= next_id), record)
|
17
|
+
end
|
28
18
|
|
29
|
-
|
30
|
-
|
31
|
-
|
19
|
+
def delete(record)
|
20
|
+
raise RecordNotFound, 'Record has not been created.' unless records.delete(record)
|
21
|
+
end
|
32
22
|
|
33
|
-
|
34
|
-
|
35
|
-
|
23
|
+
def exists?(record)
|
24
|
+
records.include?(record)
|
25
|
+
end
|
36
26
|
|
37
|
-
|
38
|
-
|
39
|
-
|
27
|
+
def new_record?(record)
|
28
|
+
!exists?(record)
|
29
|
+
end
|
40
30
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
31
|
+
def persisted?(id)
|
32
|
+
ids.include?(id)
|
33
|
+
end
|
45
34
|
|
46
|
-
|
35
|
+
def reset
|
36
|
+
records.clear
|
37
|
+
end
|
47
38
|
|
48
|
-
|
49
|
-
NextId.new(records).next
|
50
|
-
end
|
39
|
+
private
|
51
40
|
|
52
|
-
|
53
|
-
|
54
|
-
|
41
|
+
def ids
|
42
|
+
records.map(&:id)
|
43
|
+
end
|
55
44
|
|
56
|
-
|
57
|
-
|
58
|
-
|
45
|
+
def next_id
|
46
|
+
max_record.succ
|
47
|
+
rescue NoMethodError
|
48
|
+
1
|
49
|
+
end
|
59
50
|
|
60
|
-
|
61
|
-
|
51
|
+
def max_record
|
52
|
+
ids.max
|
53
|
+
end
|
54
|
+
|
55
|
+
def validate_unique_id(id, record)
|
56
|
+
raise IdError, "Duplicate ID found for record #{record.inspect}" if persisted?(id)
|
57
|
+
record
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
62
|
end
|
@@ -63,12 +63,7 @@ class <%= class_name + @mock_append_name %> < <%= parent_class %>
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def <%= meth.name %>=(val)
|
66
|
-
<% association = belongs_to_foreign_key(meth.name) -%>
|
67
66
|
write_attribute(:<%= meth.name %>, val)
|
68
|
-
<% if association -%>
|
69
|
-
association = classes('<%= association.class_name %>').try(:find_by, id: <%= meth.name %>)
|
70
|
-
write_association(:<%= association.name %>,association) unless association.nil?
|
71
|
-
<% end -%>
|
72
67
|
end
|
73
68
|
<% end %>
|
74
69
|
##################################
|
@@ -78,12 +73,13 @@ class <%= class_name + @mock_append_name %> < <%= parent_class %>
|
|
78
73
|
<%= '# belongs_to' unless belongs_to.empty? -%>
|
79
74
|
<% belongs_to.each do |meth| %>
|
80
75
|
def <%= meth.name %>
|
81
|
-
|
76
|
+
<% association = relation_find(:name, meth.name).first -%>
|
77
|
+
read_association(:<%= meth.name %>) || write_association(:<%= meth.name %>, classes('<%= association.class_name %>').try{ |k| k.find_by(id: <%= association.foreign_key %>)})
|
82
78
|
end
|
83
79
|
|
84
80
|
def <%= meth.name %>=(val)
|
85
81
|
write_association(:<%= meth.name %>, val)
|
86
|
-
ActiveMocker::Mock::BelongsTo.new(val, child_self: self, foreign_key: :<%= meth.foreign_key
|
82
|
+
ActiveMocker::Mock::BelongsTo.new(val, child_self: self, foreign_key: :<%= meth.foreign_key %>).item
|
87
83
|
end
|
88
84
|
|
89
85
|
def build_<%= meth.name %>(attributes={}, &block)
|
@@ -111,7 +107,7 @@ class <%= class_name + @mock_append_name %> < <%= parent_class %>
|
|
111
107
|
|
112
108
|
def <%= meth.name %>=(val)
|
113
109
|
write_association(:<%= meth.name %>, val)
|
114
|
-
ActiveMocker::Mock::HasOne.new(val, child_self: self, foreign_key: '<%= meth.foreign_key %>'
|
110
|
+
ActiveMocker::Mock::HasOne.new(val, child_self: self, foreign_key: '<%= meth.foreign_key %>').item
|
115
111
|
end
|
116
112
|
|
117
113
|
def build_<%= meth.name %>(attributes={}, &block)
|
@@ -182,12 +178,12 @@ class <%= class_name + @mock_append_name %> < <%= parent_class %>
|
|
182
178
|
|
183
179
|
<% instance_methods.each do |method| %>
|
184
180
|
def <%= method.name %><%= "(#{method.arguments})" unless method.arguments.empty? %>
|
185
|
-
call_mock_method :<%= method.name
|
181
|
+
call_mock_method :<%= method.name %>, Kernel.caller<%= ', ' unless method.arguments.empty? %><%= method.arguments.passable %>
|
186
182
|
end
|
187
183
|
<% end -%>
|
188
184
|
<% class_methods.each do |method| %>
|
189
185
|
def self.<%= method.name %><%= "(#{method.arguments})" unless method.arguments.empty? %>
|
190
|
-
call_mock_method :<%= method.name
|
186
|
+
call_mock_method :<%= method.name %>, Kernel.caller<%= ', ' unless method.arguments.empty? %><%= method.arguments.passable %>
|
191
187
|
end
|
192
188
|
<% end -%>
|
193
189
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_mocker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: '1.8'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dustin Zeisler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '2.
|
61
|
+
version: '2.2'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '2.
|
68
|
+
version: '2.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: unparser
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,33 +95,33 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
104
|
-
type: :
|
103
|
+
version: '10.0'
|
104
|
+
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '10.0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: bundler
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '1.5'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '1.5'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rspec
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,20 +178,6 @@ dependencies:
|
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '3.5'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: fuubar
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '2.0'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '2.0'
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
182
|
name: appraisal
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,7 +237,6 @@ files:
|
|
251
237
|
- lib/active_mocker/mock/has_one.rb
|
252
238
|
- lib/active_mocker/mock/hash_process.rb
|
253
239
|
- lib/active_mocker/mock/mock_abilities.rb
|
254
|
-
- lib/active_mocker/mock/next_id.rb
|
255
240
|
- lib/active_mocker/mock/object_inspect.rb
|
256
241
|
- lib/active_mocker/mock/queries.rb
|
257
242
|
- lib/active_mocker/mock/records.rb
|
@@ -283,7 +268,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
283
268
|
requirements:
|
284
269
|
- - ">="
|
285
270
|
- !ruby/object:Gem::Version
|
286
|
-
version: 2.1.
|
271
|
+
version: 2.1.5
|
287
272
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
288
273
|
requirements:
|
289
274
|
- - ">="
|
@@ -291,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
291
276
|
version: '0'
|
292
277
|
requirements: []
|
293
278
|
rubyforge_project:
|
294
|
-
rubygems_version: 2.
|
279
|
+
rubygems_version: 2.4.5
|
295
280
|
signing_key:
|
296
281
|
specification_version: 4
|
297
282
|
summary: Creates mocks from Active Record models. Allows your test suite to run very
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module ActiveMocker
|
2
|
-
module Mock
|
3
|
-
# @api private
|
4
|
-
class NextId
|
5
|
-
|
6
|
-
def initialize(records)
|
7
|
-
@records = records
|
8
|
-
end
|
9
|
-
|
10
|
-
def next
|
11
|
-
return 1 if max_record.nil?
|
12
|
-
return max_record.id.succ if max_record.id.is_a?(Numeric)
|
13
|
-
raise IdNotNumber
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def max_record
|
19
|
-
@max_record ||= @records.max { |a, b| a.id <=> b.id }
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|