active_mocker 1.2.4 → 1.3
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/README.md +11 -11
- data/active_mocker.gemspec +1 -1
- data/lib/active_hash/ar_api.rb +23 -4
- data/lib/active_hash/init.rb +5 -1
- data/lib/active_mocker.rb +0 -1
- data/lib/active_mocker/collection/association.rb +12 -0
- data/lib/active_mocker/collection/base.rb +65 -0
- data/lib/active_mocker/collection/queries.rb +105 -0
- data/lib/active_mocker/collection/relation.rb +11 -0
- data/lib/active_mocker/mock_instance_methods.rb +3 -1
- data/lib/active_mocker/mock_requires.rb +3 -1
- data/lib/active_mocker/mock_template.erb +6 -6
- data/lib/active_mocker/version.rb +1 -1
- data/sample_app_rails_4/config/application.rb +1 -1
- data/sample_app_rails_4/db/schema.rb +1 -0
- data/sample_app_rails_4/spec/compare_mocker_and_record_spec.rb +496 -42
- data/sample_app_rails_4/spec/mocks/micropost_mock.rb +19 -10
- data/sample_app_rails_4/spec/mocks/relationship_mock.rb +8 -8
- data/sample_app_rails_4/spec/mocks/user_mock.rb +22 -22
- data/sample_app_rails_4/spec/user_mock_spec.rb +0 -1
- data/spec/lib/active_mocker/{collection_association_spec.rb → collection.rb} +4 -5
- data/spec/lib/active_mocker/generate_spec.rb +19 -30
- metadata +12 -11
- data/lib/active_hash/find_by.rb +0 -31
- data/lib/active_hash/update.rb +0 -18
- data/lib/active_mocker/collection_association.rb +0 -41
@@ -6,19 +6,19 @@ class MicropostMock < ::ActiveHash::Base
|
|
6
6
|
include ActiveMocker::MockInstanceMethods
|
7
7
|
extend ActiveMocker::MockClassMethods
|
8
8
|
|
9
|
-
def initialize(attributes
|
10
|
-
@attributes = HashWithIndifferentAccess.new({"id"=>nil, "content"=>nil, "user_id"=>nil, "created_at"=>nil, "updated_at"=>nil})
|
9
|
+
def initialize(attributes={}, &block)
|
10
|
+
@attributes = HashWithIndifferentAccess.new({"id"=>nil, "content"=>nil, "user_id"=>nil, "up_votes"=>nil, "created_at"=>nil, "updated_at"=>nil})
|
11
11
|
@associations = HashWithIndifferentAccess.new({:user=>nil})
|
12
|
-
super(attributes)
|
12
|
+
super(attributes, &block)
|
13
13
|
end
|
14
14
|
|
15
15
|
|
16
16
|
def self.column_names
|
17
|
-
["id", "content", "user_id", "created_at", "updated_at"]
|
17
|
+
["id", "content", "user_id", "up_votes", "created_at", "updated_at"]
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.attribute_names
|
21
|
-
@attribute_names = [
|
21
|
+
@attribute_names = ["id", "content", "user_id", "up_votes", "created_at", "updated_at"]
|
22
22
|
end
|
23
23
|
|
24
24
|
##################################
|
@@ -26,7 +26,7 @@ class MicropostMock < ::ActiveHash::Base
|
|
26
26
|
##################################
|
27
27
|
|
28
28
|
def id
|
29
|
-
|
29
|
+
@attributes['id']
|
30
30
|
end
|
31
31
|
|
32
32
|
def id=(val)
|
@@ -35,7 +35,7 @@ class MicropostMock < ::ActiveHash::Base
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def content
|
38
|
-
|
38
|
+
@attributes['content']
|
39
39
|
end
|
40
40
|
|
41
41
|
def content=(val)
|
@@ -44,7 +44,7 @@ class MicropostMock < ::ActiveHash::Base
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def user_id
|
47
|
-
|
47
|
+
@attributes['user_id']
|
48
48
|
end
|
49
49
|
|
50
50
|
def user_id=(val)
|
@@ -52,8 +52,17 @@ class MicropostMock < ::ActiveHash::Base
|
|
52
52
|
@attributes['user_id'] = type.coerce(val)
|
53
53
|
end
|
54
54
|
|
55
|
+
def up_votes
|
56
|
+
@attributes['up_votes']
|
57
|
+
end
|
58
|
+
|
59
|
+
def up_votes=(val)
|
60
|
+
type = (types[:up_votes] ||= Virtus::Attribute.build(Fixnum))
|
61
|
+
@attributes['up_votes'] = type.coerce(val)
|
62
|
+
end
|
63
|
+
|
55
64
|
def created_at
|
56
|
-
|
65
|
+
@attributes['created_at']
|
57
66
|
end
|
58
67
|
|
59
68
|
def created_at=(val)
|
@@ -62,7 +71,7 @@ class MicropostMock < ::ActiveHash::Base
|
|
62
71
|
end
|
63
72
|
|
64
73
|
def updated_at
|
65
|
-
|
74
|
+
@attributes['updated_at']
|
66
75
|
end
|
67
76
|
|
68
77
|
def updated_at=(val)
|
@@ -6,10 +6,10 @@ class RelationshipMock < ::ActiveHash::Base
|
|
6
6
|
include ActiveMocker::MockInstanceMethods
|
7
7
|
extend ActiveMocker::MockClassMethods
|
8
8
|
|
9
|
-
def initialize(attributes
|
9
|
+
def initialize(attributes={}, &block)
|
10
10
|
@attributes = HashWithIndifferentAccess.new({"id"=>nil, "follower_id"=>nil, "followed_id"=>nil, "created_at"=>nil, "updated_at"=>nil})
|
11
11
|
@associations = HashWithIndifferentAccess.new({:follower=>nil, :followed=>nil})
|
12
|
-
super(attributes)
|
12
|
+
super(attributes, &block)
|
13
13
|
end
|
14
14
|
|
15
15
|
|
@@ -18,7 +18,7 @@ class RelationshipMock < ::ActiveHash::Base
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.attribute_names
|
21
|
-
@attribute_names = [
|
21
|
+
@attribute_names = ["id", "follower_id", "followed_id", "created_at", "updated_at"]
|
22
22
|
end
|
23
23
|
|
24
24
|
##################################
|
@@ -26,7 +26,7 @@ class RelationshipMock < ::ActiveHash::Base
|
|
26
26
|
##################################
|
27
27
|
|
28
28
|
def id
|
29
|
-
|
29
|
+
@attributes['id']
|
30
30
|
end
|
31
31
|
|
32
32
|
def id=(val)
|
@@ -35,7 +35,7 @@ class RelationshipMock < ::ActiveHash::Base
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def follower_id
|
38
|
-
|
38
|
+
@attributes['follower_id']
|
39
39
|
end
|
40
40
|
|
41
41
|
def follower_id=(val)
|
@@ -44,7 +44,7 @@ class RelationshipMock < ::ActiveHash::Base
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def followed_id
|
47
|
-
|
47
|
+
@attributes['followed_id']
|
48
48
|
end
|
49
49
|
|
50
50
|
def followed_id=(val)
|
@@ -53,7 +53,7 @@ class RelationshipMock < ::ActiveHash::Base
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def created_at
|
56
|
-
|
56
|
+
@attributes['created_at']
|
57
57
|
end
|
58
58
|
|
59
59
|
def created_at=(val)
|
@@ -62,7 +62,7 @@ class RelationshipMock < ::ActiveHash::Base
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def updated_at
|
65
|
-
|
65
|
+
@attributes['updated_at']
|
66
66
|
end
|
67
67
|
|
68
68
|
def updated_at=(val)
|
@@ -6,10 +6,10 @@ class UserMock < ::ActiveHash::Base
|
|
6
6
|
include ActiveMocker::MockInstanceMethods
|
7
7
|
extend ActiveMocker::MockClassMethods
|
8
8
|
|
9
|
-
def initialize(attributes
|
9
|
+
def initialize(attributes={}, &block)
|
10
10
|
@attributes = HashWithIndifferentAccess.new({"id"=>nil, "name"=>nil, "email"=>"", "credits"=>nil, "created_at"=>nil, "updated_at"=>nil, "password_digest"=>nil, "remember_token"=>true, "admin"=>false})
|
11
11
|
@associations = HashWithIndifferentAccess.new({:microposts=>nil, :relationships=>nil, :followed_users=>nil, :reverse_relationships=>nil, :followers=>nil})
|
12
|
-
super(attributes)
|
12
|
+
super(attributes, &block)
|
13
13
|
end
|
14
14
|
|
15
15
|
|
@@ -18,7 +18,7 @@ class UserMock < ::ActiveHash::Base
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.attribute_names
|
21
|
-
@attribute_names = [
|
21
|
+
@attribute_names = ["id", "name", "email", "credits", "created_at", "updated_at", "password_digest", "remember_token", "admin"]
|
22
22
|
end
|
23
23
|
|
24
24
|
##################################
|
@@ -26,7 +26,7 @@ class UserMock < ::ActiveHash::Base
|
|
26
26
|
##################################
|
27
27
|
|
28
28
|
def id
|
29
|
-
|
29
|
+
@attributes['id']
|
30
30
|
end
|
31
31
|
|
32
32
|
def id=(val)
|
@@ -35,7 +35,7 @@ class UserMock < ::ActiveHash::Base
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def name
|
38
|
-
|
38
|
+
@attributes['name']
|
39
39
|
end
|
40
40
|
|
41
41
|
def name=(val)
|
@@ -44,7 +44,7 @@ class UserMock < ::ActiveHash::Base
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def email
|
47
|
-
|
47
|
+
@attributes['email']
|
48
48
|
end
|
49
49
|
|
50
50
|
def email=(val)
|
@@ -53,7 +53,7 @@ class UserMock < ::ActiveHash::Base
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def credits
|
56
|
-
|
56
|
+
@attributes['credits']
|
57
57
|
end
|
58
58
|
|
59
59
|
def credits=(val)
|
@@ -62,7 +62,7 @@ class UserMock < ::ActiveHash::Base
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def created_at
|
65
|
-
|
65
|
+
@attributes['created_at']
|
66
66
|
end
|
67
67
|
|
68
68
|
def created_at=(val)
|
@@ -71,7 +71,7 @@ class UserMock < ::ActiveHash::Base
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def updated_at
|
74
|
-
|
74
|
+
@attributes['updated_at']
|
75
75
|
end
|
76
76
|
|
77
77
|
def updated_at=(val)
|
@@ -80,7 +80,7 @@ class UserMock < ::ActiveHash::Base
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def password_digest
|
83
|
-
|
83
|
+
@attributes['password_digest']
|
84
84
|
end
|
85
85
|
|
86
86
|
def password_digest=(val)
|
@@ -89,7 +89,7 @@ class UserMock < ::ActiveHash::Base
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def remember_token
|
92
|
-
|
92
|
+
@attributes['remember_token']
|
93
93
|
end
|
94
94
|
|
95
95
|
def remember_token=(val)
|
@@ -98,7 +98,7 @@ class UserMock < ::ActiveHash::Base
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def admin
|
101
|
-
|
101
|
+
@attributes['admin']
|
102
102
|
end
|
103
103
|
|
104
104
|
def admin=(val)
|
@@ -115,43 +115,43 @@ class UserMock < ::ActiveHash::Base
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def microposts
|
118
|
-
associations['microposts'] ||= ActiveMocker::
|
118
|
+
associations['microposts'] ||= ActiveMocker::Collection::Association.new
|
119
119
|
end
|
120
120
|
|
121
121
|
def microposts=(val)
|
122
|
-
associations['microposts'] = ActiveMocker::
|
122
|
+
associations['microposts'] = ActiveMocker::Collection::Association.new(val)
|
123
123
|
end
|
124
124
|
|
125
125
|
def relationships
|
126
|
-
associations['relationships'] ||= ActiveMocker::
|
126
|
+
associations['relationships'] ||= ActiveMocker::Collection::Association.new
|
127
127
|
end
|
128
128
|
|
129
129
|
def relationships=(val)
|
130
|
-
associations['relationships'] = ActiveMocker::
|
130
|
+
associations['relationships'] = ActiveMocker::Collection::Association.new(val)
|
131
131
|
end
|
132
132
|
|
133
133
|
def followed_users
|
134
|
-
associations['followed_users'] ||= ActiveMocker::
|
134
|
+
associations['followed_users'] ||= ActiveMocker::Collection::Association.new
|
135
135
|
end
|
136
136
|
|
137
137
|
def followed_users=(val)
|
138
|
-
associations['followed_users'] = ActiveMocker::
|
138
|
+
associations['followed_users'] = ActiveMocker::Collection::Association.new(val)
|
139
139
|
end
|
140
140
|
|
141
141
|
def reverse_relationships
|
142
|
-
associations['reverse_relationships'] ||= ActiveMocker::
|
142
|
+
associations['reverse_relationships'] ||= ActiveMocker::Collection::Association.new
|
143
143
|
end
|
144
144
|
|
145
145
|
def reverse_relationships=(val)
|
146
|
-
associations['reverse_relationships'] = ActiveMocker::
|
146
|
+
associations['reverse_relationships'] = ActiveMocker::Collection::Association.new(val)
|
147
147
|
end
|
148
148
|
|
149
149
|
def followers
|
150
|
-
associations['followers'] ||= ActiveMocker::
|
150
|
+
associations['followers'] ||= ActiveMocker::Collection::Association.new
|
151
151
|
end
|
152
152
|
|
153
153
|
def followers=(val)
|
154
|
-
associations['followers'] = ActiveMocker::
|
154
|
+
associations['followers'] = ActiveMocker::Collection::Association.new(val)
|
155
155
|
end
|
156
156
|
|
157
157
|
##################################
|
@@ -1,21 +1,20 @@
|
|
1
1
|
require 'rspec'
|
2
2
|
$:.unshift File.expand_path('../../', __FILE__)
|
3
3
|
require 'active_support/all'
|
4
|
-
require 'active_mocker/
|
4
|
+
require 'active_mocker/collection/base'
|
5
|
+
require 'active_mocker/collection/queries'
|
6
|
+
require 'active_mocker/collection/relation'
|
5
7
|
require 'ostruct'
|
6
8
|
|
7
|
-
describe ActiveMocker::
|
9
|
+
describe ActiveMocker::Collection::Relation do
|
8
10
|
|
9
11
|
subject{described_class.new}
|
10
12
|
|
11
13
|
describe '#sum' do
|
12
14
|
|
13
|
-
|
14
15
|
it 'sum values by attribute name' do
|
15
|
-
|
16
16
|
subject << [OpenStruct.new(value: 1), OpenStruct.new(value: 1)]
|
17
17
|
expect(subject.sum(:value)).to eq 2
|
18
|
-
|
19
18
|
end
|
20
19
|
|
21
20
|
end
|
@@ -1,51 +1,40 @@
|
|
1
1
|
require 'rspec'
|
2
2
|
$:.unshift File.expand_path('../../', __FILE__)
|
3
|
-
require '
|
4
|
-
require 'logger'
|
5
|
-
require 'forwardable'
|
6
|
-
require 'active_mocker/logger'
|
7
|
-
require 'string_reader'
|
8
|
-
require 'active_mocker/public_methods'
|
9
|
-
require 'file_reader'
|
10
|
-
require 'active_mocker/collection_association'
|
11
|
-
require 'active_mocker/table'
|
12
|
-
require 'active_mocker/config'
|
13
|
-
require 'active_mocker/reparameterize'
|
14
|
-
require 'active_mocker/field'
|
15
|
-
require 'active_mocker/active_record'
|
16
|
-
require 'active_mocker/model_reader'
|
17
|
-
require 'active_mocker/schema_reader'
|
18
|
-
require 'active_mocker/active_record/schema'
|
19
|
-
require 'active_support/all'
|
20
|
-
require 'active_hash/ar_api'
|
21
|
-
require 'active_mocker/generate'
|
22
|
-
require 'erb'
|
23
|
-
require 'virtus'
|
3
|
+
require 'active_mocker'
|
24
4
|
require_relative '../../unit_logger'
|
25
5
|
|
26
6
|
describe ActiveMocker::Generate do
|
27
7
|
|
8
|
+
let(:app_root){ File.expand_path('../../../../', __FILE__)}
|
9
|
+
let(:mock_dir){ File.join(app_root, 'sample_app_rails_4/spec/mocks')}
|
10
|
+
|
28
11
|
before(:each) do
|
29
|
-
app_root = File.expand_path('../../../../', __FILE__)
|
30
12
|
ActiveMocker.config do |config|
|
31
|
-
# Required Options
|
32
13
|
config.schema_file = File.join(app_root, 'sample_app_rails_4/db/schema.rb')
|
33
14
|
config.model_dir = File.join(app_root, 'sample_app_rails_4/app/models')
|
34
|
-
config.mock_dir =
|
35
|
-
config.logger
|
36
|
-
|
15
|
+
config.mock_dir = mock_dir
|
16
|
+
config.logger = UnitLogger
|
37
17
|
end
|
38
18
|
|
19
|
+
FileUtils.rm_rf mock_dir
|
20
|
+
|
39
21
|
end
|
40
22
|
|
41
|
-
|
23
|
+
subject{described_class.new}
|
42
24
|
|
43
|
-
|
25
|
+
describe 'new' do
|
44
26
|
|
45
|
-
|
27
|
+
before(:each) do
|
28
|
+
subject
|
29
|
+
end
|
46
30
|
|
31
|
+
it 'generates all mocks files' do
|
32
|
+
expect(File.exist? File.join(mock_dir, 'user_mock.rb') ).to eq true
|
33
|
+
expect(File.exist? File.join(mock_dir, 'micropost_mock.rb') ).to eq true
|
34
|
+
expect(File.exist? File.join(mock_dir, 'relationship_mock.rb')).to eq true
|
47
35
|
end
|
48
36
|
|
49
37
|
end
|
50
38
|
|
51
|
-
end
|
39
|
+
end
|
40
|
+
|
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.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dustin Zeisler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -152,10 +152,10 @@ dependencies:
|
|
152
152
|
version: '1.3'
|
153
153
|
description: Creates mocks from Active Record models. Allows your test suite to run
|
154
154
|
very fast by not loading Rails or hooking to a database. It parse the schema definition
|
155
|
-
and the
|
156
|
-
|
157
|
-
|
158
|
-
|
155
|
+
and the defined methods on a model then saves a ruby file that can be included with
|
156
|
+
a test. Mocks are regenerated when the schema is modified so your mocks will not
|
157
|
+
go stale. This prevents the case where your units tests pass but production code
|
158
|
+
is failing.
|
159
159
|
email:
|
160
160
|
- dustin@zive.me
|
161
161
|
executables: []
|
@@ -171,9 +171,7 @@ files:
|
|
171
171
|
- Rakefile
|
172
172
|
- active_mocker.gemspec
|
173
173
|
- lib/active_hash/ar_api.rb
|
174
|
-
- lib/active_hash/find_by.rb
|
175
174
|
- lib/active_hash/init.rb
|
176
|
-
- lib/active_hash/update.rb
|
177
175
|
- lib/active_mocker.rb
|
178
176
|
- lib/active_mocker/active_record.rb
|
179
177
|
- lib/active_mocker/active_record/const_missing.rb
|
@@ -183,7 +181,10 @@ files:
|
|
183
181
|
- lib/active_mocker/active_record/unknown_class_method.rb
|
184
182
|
- lib/active_mocker/active_record/unknown_module.rb
|
185
183
|
- lib/active_mocker/class_exists.rb
|
186
|
-
- lib/active_mocker/
|
184
|
+
- lib/active_mocker/collection/association.rb
|
185
|
+
- lib/active_mocker/collection/base.rb
|
186
|
+
- lib/active_mocker/collection/queries.rb
|
187
|
+
- lib/active_mocker/collection/relation.rb
|
187
188
|
- lib/active_mocker/config.rb
|
188
189
|
- lib/active_mocker/const_sets.rb
|
189
190
|
- lib/active_mocker/field.rb
|
@@ -353,7 +354,7 @@ files:
|
|
353
354
|
- sample_app_rails_4/spec/user_mock_spec.rb
|
354
355
|
- sample_app_rails_4/vendor/assets/javascripts/.keep
|
355
356
|
- sample_app_rails_4/vendor/assets/stylesheets/.keep
|
356
|
-
- spec/lib/active_mocker/
|
357
|
+
- spec/lib/active_mocker/collection.rb
|
357
358
|
- spec/lib/active_mocker/generate_spec.rb
|
358
359
|
- spec/lib/active_mocker/model_reader_spec.rb
|
359
360
|
- spec/lib/active_mocker/schema_reader_spec.rb
|
@@ -388,7 +389,7 @@ specification_version: 4
|
|
388
389
|
summary: Creates mocks from Active Record models. Allows your test suite to run very
|
389
390
|
fast by not loading Rails or hooking to a database.
|
390
391
|
test_files:
|
391
|
-
- spec/lib/active_mocker/
|
392
|
+
- spec/lib/active_mocker/collection.rb
|
392
393
|
- spec/lib/active_mocker/generate_spec.rb
|
393
394
|
- spec/lib/active_mocker/model_reader_spec.rb
|
394
395
|
- spec/lib/active_mocker/schema_reader_spec.rb
|