active_mocker 1.2.pre.10 → 1.2.pre.11
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/.gitignore +1 -0
- data/README.md +2 -1
- data/Rakefile +1 -0
- data/active_mocker.gemspec +5 -4
- data/lib/active_mocker/mock_template.erb +15 -11
- data/lib/active_mocker/version.rb +1 -1
- data/mocks/micropost_mock.rb +13 -8
- data/mocks/relationship_mock.rb +13 -7
- data/mocks/user_mock.rb +17 -17
- data/sample_app_rails_4/Gemfile +2 -43
- data/sample_app_rails_4/app/models/user.rb +0 -8
- data/sample_app_rails_4/config/initializers/active_mocker.rb +1 -1
- data/sample_app_rails_4/spec/compare_mocker_and_record_spec.rb +116 -0
- data/{spec → sample_app_rails_4/spec}/mocks/micropost_mock.rb +13 -9
- data/{spec → sample_app_rails_4/spec}/mocks/relationship_mock.rb +13 -8
- data/{spec → sample_app_rails_4/spec}/mocks/user_mock.rb +17 -18
- data/sample_app_rails_4/spec/spec_helper.rb +0 -2
- data/{spec/mocks → sample_app_rails_4/spec}/user_mock_spec.rb +1 -1
- data/spec/lib/compare_mocker_and_record_spec.rb +1 -1
- metadata +43 -25
- data/sample_app_rails_4/log/test.log +0 -6727
- data/sample_app_rails_4/spec/controllers/relationships_controller_spec.rb +0 -42
- data/sample_app_rails_4/spec/helpers/application_helper_spec.rb +0 -18
- data/sample_app_rails_4/spec/models/micropost_spec.rb +0 -30
- data/sample_app_rails_4/spec/models/relationship_spec.rb +0 -29
- data/sample_app_rails_4/spec/models/user_spec.rb +0 -194
- data/sample_app_rails_4/spec/support/utilities.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af6dc3ef47eac14967fac5cc58c248eaaff7f27b
|
4
|
+
data.tar.gz: d5d09b834cb7974ee1f39d002809c9400cbcc654
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44910634e7dc665043968e8ee58bc6b83e82e8ae7c4efcc103e328282f4800ef4e89a661c9441c5a4b5f201b86cf0bdaf3690543fd2aef65997b4ea399fcc2a5
|
7
|
+
data.tar.gz: b00603af88b32cd5aecbc5e0ece7b030030ae022e107d3ddc7a545ba4623087df6eebdd39778dffe0473899c670f74e1945013450bf9aceb827df83405ed8ca9
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# ActiveMocker
|
2
2
|
[](https://travis-ci.org/zeisler/active_mocker)
|
3
3
|
|
4
|
-
Create mocks from active record models without loading rails or running a database.
|
4
|
+
Create static mocks from active record models without loading rails or running a database.
|
5
5
|
|
6
6
|
## Installation
|
7
7
|
|
@@ -19,6 +19,7 @@ Or install it yourself as:
|
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
22
|
+
Needs updating, for now see the rails sample application
|
22
23
|
|
23
24
|
#db/schema.rb
|
24
25
|
|
data/Rakefile
CHANGED
data/active_mocker.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = ActiveMocker::VERSION
|
9
9
|
spec.authors = ["Dustin Zeisler"]
|
10
10
|
spec.email = ["dustin@zive.me"]
|
11
|
-
spec.summary = %q{Create mocks from active record models without loading rails or running a database}
|
12
|
-
spec.description = %q{Create mocks from active record models without loading rails or running a database. The Mock's methods have the same arguments as the AR model and if they change you get a error in your test.}
|
11
|
+
spec.summary = %q{Create static mocks from active record models without loading rails or running a database.}
|
12
|
+
spec.description = %q{Create static mocks from active record models without loading rails or running a database. The Mock's methods have the same arguments as the AR model and if they change you get a error in your test.}
|
13
13
|
spec.homepage = "https://github.com/zeisler/active_mocker"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -27,9 +27,10 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency "bundler", "~> 1.5"
|
28
28
|
spec.add_development_dependency "rake", "~>10.1"
|
29
29
|
spec.add_development_dependency "rspec", "~>2.14"
|
30
|
-
# spec.add_development_dependency "i18n", "~>0.6"
|
31
30
|
spec.add_development_dependency "sqlite3", "~>1.3"
|
32
|
-
spec.add_development_dependency "
|
31
|
+
spec.add_development_dependency "rails", "~>4.1"
|
32
|
+
spec.add_development_dependency "rspec-rails", "~>2"
|
33
|
+
spec.add_development_dependency "fuubar", "~>1.3"
|
33
34
|
|
34
35
|
if ENV['DEBUG'] == '1'
|
35
36
|
spec.add_development_dependency "debase", "~>0.0"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'active_mocker/mock_requires'
|
2
|
-
Object.send(:remove_const, "
|
2
|
+
Object.send(:remove_const, "<%= class_name %>") if ActiveMocker.class_exists?("<%= class_name %>")
|
3
3
|
|
4
4
|
class <%= class_name %> < ::ActiveHash::Base
|
5
5
|
include ActiveMocker::ActiveHash::ARApi
|
@@ -10,14 +10,13 @@ class <%= class_name %> < ::ActiveHash::Base
|
|
10
10
|
<%= attribute_names %>
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.association_names
|
14
|
-
@association_names = <%= association_names.map{|a| a.to_sym} %>
|
15
|
-
end
|
16
|
-
|
17
13
|
def self.attribute_names
|
18
14
|
@attribute_names = <%= attribute_names.map{|a| a.to_sym} %>
|
19
15
|
end
|
20
16
|
|
17
|
+
##################################
|
18
|
+
# Attributes getter/setters #
|
19
|
+
##################################
|
21
20
|
<% attributes.each do |meth| %>
|
22
21
|
def <%= meth %>
|
23
22
|
attributes['<%= meth %>']
|
@@ -27,7 +26,13 @@ class <%= class_name %> < ::ActiveHash::Base
|
|
27
26
|
attributes['<%= meth %>'] = val
|
28
27
|
end
|
29
28
|
<% end %>
|
29
|
+
##################################
|
30
|
+
# Association getter/setters #
|
31
|
+
##################################
|
30
32
|
|
33
|
+
def self.association_names
|
34
|
+
@association_names = <%= association_names.map { |a| a.to_sym } %>
|
35
|
+
end
|
31
36
|
<% single_associations.each do |meth| %>
|
32
37
|
def <%= meth %>
|
33
38
|
associations['<%= meth %>']
|
@@ -37,7 +42,6 @@ class <%= class_name %> < ::ActiveHash::Base
|
|
37
42
|
associations['<%= meth %>'] = val
|
38
43
|
end
|
39
44
|
<% end %>
|
40
|
-
|
41
45
|
<% collection_associations.each do |meth| %>
|
42
46
|
def <%= meth %>
|
43
47
|
associations['<%= meth %>']
|
@@ -47,20 +51,21 @@ class <%= class_name %> < ::ActiveHash::Base
|
|
47
51
|
associations['<%= meth %>'] = ActiveMocker::CollectionAssociation.new(val)
|
48
52
|
end
|
49
53
|
<% end %>
|
54
|
+
##################################
|
55
|
+
# Model Methods getter/setters #
|
56
|
+
##################################
|
50
57
|
|
51
58
|
def self.model_instance_methods
|
52
59
|
return @model_instance_methods if @model_instance_methods
|
53
60
|
@model_instance_methods = {}<% model_instance_methods.each do |key, value| %>
|
54
|
-
|
55
|
-
<% end %>
|
61
|
+
@model_instance_methods[:<%= key %>] = :not_implemented<% end %>
|
56
62
|
@model_instance_methods
|
57
63
|
end
|
58
64
|
|
59
65
|
def self.model_class_methods
|
60
66
|
return @model_class_methods if @model_class_methods
|
61
67
|
@model_class_methods = {}<% model_class_methods.each do |key, value| %>
|
62
|
-
@model_class_methods[:<%= key %>] = :not_implemented
|
63
|
-
<% end %>
|
68
|
+
@model_class_methods[:<%= key %>] = :not_implemented<% end %>
|
64
69
|
@model_class_methods
|
65
70
|
end
|
66
71
|
|
@@ -71,7 +76,6 @@ class <%= class_name %> < ::ActiveHash::Base
|
|
71
76
|
instance_exec(*[<%= method.params_pass %>], &block)
|
72
77
|
end
|
73
78
|
<% end %>
|
74
|
-
|
75
79
|
<% class_methods.each do |method| %>
|
76
80
|
def self.<%= method.method %>(<%= method.params %>)
|
77
81
|
block = model_class_methods[<%= method.method.inspect %>]
|
data/mocks/micropost_mock.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'active_mocker/mock_requires'
|
2
|
-
Object.send(:remove_const, "
|
2
|
+
Object.send(:remove_const, "MicropostMock") if ActiveMocker.class_exists?("MicropostMock")
|
3
3
|
|
4
4
|
class MicropostMock < ::ActiveHash::Base
|
5
5
|
include ActiveMocker::ActiveHash::ARApi
|
@@ -10,14 +10,13 @@ class MicropostMock < ::ActiveHash::Base
|
|
10
10
|
["id", "content", "user_id", "created_at", "updated_at"]
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.association_names
|
14
|
-
@association_names = [:user]
|
15
|
-
end
|
16
|
-
|
17
13
|
def self.attribute_names
|
18
14
|
@attribute_names = [:id, :content, :user_id, :created_at, :updated_at]
|
19
15
|
end
|
20
16
|
|
17
|
+
##################################
|
18
|
+
# Attributes getter/setters #
|
19
|
+
##################################
|
21
20
|
|
22
21
|
def id
|
23
22
|
attributes['id']
|
@@ -59,7 +58,13 @@ class MicropostMock < ::ActiveHash::Base
|
|
59
58
|
attributes['updated_at'] = val
|
60
59
|
end
|
61
60
|
|
61
|
+
##################################
|
62
|
+
# Association getter/setters #
|
63
|
+
##################################
|
62
64
|
|
65
|
+
def self.association_names
|
66
|
+
@association_names = [:user]
|
67
|
+
end
|
63
68
|
|
64
69
|
def user
|
65
70
|
associations['user']
|
@@ -70,7 +75,9 @@ class MicropostMock < ::ActiveHash::Base
|
|
70
75
|
end
|
71
76
|
|
72
77
|
|
73
|
-
|
78
|
+
##################################
|
79
|
+
# Model Methods getter/setters #
|
80
|
+
##################################
|
74
81
|
|
75
82
|
def self.model_instance_methods
|
76
83
|
return @model_instance_methods if @model_instance_methods
|
@@ -82,13 +89,11 @@ class MicropostMock < ::ActiveHash::Base
|
|
82
89
|
return @model_class_methods if @model_class_methods
|
83
90
|
@model_class_methods = {}
|
84
91
|
@model_class_methods[:from_users_followed_by] = :not_implemented
|
85
|
-
|
86
92
|
@model_class_methods
|
87
93
|
end
|
88
94
|
|
89
95
|
|
90
96
|
|
91
|
-
|
92
97
|
def self.from_users_followed_by(user)
|
93
98
|
block = model_class_methods[:from_users_followed_by]
|
94
99
|
is_implemented(block, "::from_users_followed_by")
|
data/mocks/relationship_mock.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'active_mocker/mock_requires'
|
2
|
-
Object.send(:remove_const, "
|
2
|
+
Object.send(:remove_const, "RelationshipMock") if ActiveMocker.class_exists?("RelationshipMock")
|
3
3
|
|
4
4
|
class RelationshipMock < ::ActiveHash::Base
|
5
5
|
include ActiveMocker::ActiveHash::ARApi
|
@@ -10,14 +10,13 @@ class RelationshipMock < ::ActiveHash::Base
|
|
10
10
|
["id", "follower_id", "followed_id", "created_at", "updated_at"]
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.association_names
|
14
|
-
@association_names = [:follower, :followed]
|
15
|
-
end
|
16
|
-
|
17
13
|
def self.attribute_names
|
18
14
|
@attribute_names = [:id, :follower_id, :followed_id, :created_at, :updated_at]
|
19
15
|
end
|
20
16
|
|
17
|
+
##################################
|
18
|
+
# Attributes getter/setters #
|
19
|
+
##################################
|
21
20
|
|
22
21
|
def id
|
23
22
|
attributes['id']
|
@@ -59,7 +58,13 @@ class RelationshipMock < ::ActiveHash::Base
|
|
59
58
|
attributes['updated_at'] = val
|
60
59
|
end
|
61
60
|
|
61
|
+
##################################
|
62
|
+
# Association getter/setters #
|
63
|
+
##################################
|
62
64
|
|
65
|
+
def self.association_names
|
66
|
+
@association_names = [:follower, :followed]
|
67
|
+
end
|
63
68
|
|
64
69
|
def follower
|
65
70
|
associations['follower']
|
@@ -78,7 +83,9 @@ class RelationshipMock < ::ActiveHash::Base
|
|
78
83
|
end
|
79
84
|
|
80
85
|
|
81
|
-
|
86
|
+
##################################
|
87
|
+
# Model Methods getter/setters #
|
88
|
+
##################################
|
82
89
|
|
83
90
|
def self.model_instance_methods
|
84
91
|
return @model_instance_methods if @model_instance_methods
|
@@ -95,5 +102,4 @@ class RelationshipMock < ::ActiveHash::Base
|
|
95
102
|
|
96
103
|
|
97
104
|
|
98
|
-
|
99
105
|
end
|
data/mocks/user_mock.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'active_mocker/mock_requires'
|
2
|
-
Object.send(:remove_const, "
|
2
|
+
Object.send(:remove_const, "UserMock") if ActiveMocker.class_exists?("UserMock")
|
3
3
|
|
4
4
|
class UserMock < ::ActiveHash::Base
|
5
5
|
include ActiveMocker::ActiveHash::ARApi
|
@@ -10,14 +10,13 @@ class UserMock < ::ActiveHash::Base
|
|
10
10
|
["id", "name", "email", "created_at", "updated_at", "password_digest", "remember_token", "admin"]
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.association_names
|
14
|
-
@association_names = [:microposts, :relationships, :followed_users, :reverse_relationships, :followers]
|
15
|
-
end
|
16
|
-
|
17
13
|
def self.attribute_names
|
18
14
|
@attribute_names = [:id, :name, :email, :created_at, :updated_at, :password_digest, :remember_token, :admin]
|
19
15
|
end
|
20
16
|
|
17
|
+
##################################
|
18
|
+
# Attributes getter/setters #
|
19
|
+
##################################
|
21
20
|
|
22
21
|
def id
|
23
22
|
attributes['id']
|
@@ -83,8 +82,13 @@ class UserMock < ::ActiveHash::Base
|
|
83
82
|
attributes['admin'] = val
|
84
83
|
end
|
85
84
|
|
85
|
+
##################################
|
86
|
+
# Association getter/setters #
|
87
|
+
##################################
|
86
88
|
|
87
|
-
|
89
|
+
def self.association_names
|
90
|
+
@association_names = [:microposts, :relationships, :followed_users, :reverse_relationships, :followers]
|
91
|
+
end
|
88
92
|
|
89
93
|
|
90
94
|
def microposts
|
@@ -127,18 +131,17 @@ class UserMock < ::ActiveHash::Base
|
|
127
131
|
associations['followers'] = ActiveMocker::CollectionAssociation.new(val)
|
128
132
|
end
|
129
133
|
|
134
|
+
##################################
|
135
|
+
# Model Methods getter/setters #
|
136
|
+
##################################
|
130
137
|
|
131
138
|
def self.model_instance_methods
|
132
139
|
return @model_instance_methods if @model_instance_methods
|
133
140
|
@model_instance_methods = {}
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
@model_instance_methods[:follow!] = :not_implemented
|
139
|
-
|
140
|
-
@model_instance_methods[:unfollow!] = :not_implemented
|
141
|
-
|
141
|
+
@model_instance_methods[:feed] = :not_implemented
|
142
|
+
@model_instance_methods[:following?] = :not_implemented
|
143
|
+
@model_instance_methods[:follow!] = :not_implemented
|
144
|
+
@model_instance_methods[:unfollow!] = :not_implemented
|
142
145
|
@model_instance_methods
|
143
146
|
end
|
144
147
|
|
@@ -146,9 +149,7 @@ class UserMock < ::ActiveHash::Base
|
|
146
149
|
return @model_class_methods if @model_class_methods
|
147
150
|
@model_class_methods = {}
|
148
151
|
@model_class_methods[:new_remember_token] = :not_implemented
|
149
|
-
|
150
152
|
@model_class_methods[:digest] = :not_implemented
|
151
|
-
|
152
153
|
@model_class_methods
|
153
154
|
end
|
154
155
|
|
@@ -178,7 +179,6 @@ class UserMock < ::ActiveHash::Base
|
|
178
179
|
end
|
179
180
|
|
180
181
|
|
181
|
-
|
182
182
|
def self.new_remember_token()
|
183
183
|
block = model_class_methods[:new_remember_token]
|
184
184
|
is_implemented(block, "::new_remember_token")
|
data/sample_app_rails_4/Gemfile
CHANGED
@@ -1,53 +1,12 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
-
#ruby-gemset=railstutorial_rails_4_0
|
3
2
|
|
4
3
|
gem 'rails', '4.1'
|
5
|
-
gem 'bootstrap-sass', '2.3.2.0'
|
6
|
-
gem 'sprockets', '2.11.0'
|
7
|
-
gem 'bcrypt-ruby', '3.1.2'
|
8
|
-
gem 'faker', '1.1.2'
|
9
|
-
gem 'will_paginate', '3.0.4'
|
10
|
-
gem 'bootstrap-will_paginate', '0.0.9'
|
11
4
|
|
12
5
|
group :development, :test do
|
13
|
-
gem 'sqlite3', '1.3
|
6
|
+
gem 'sqlite3', '~>1.3'
|
14
7
|
gem 'rspec-rails', '~>2'
|
15
8
|
end
|
16
9
|
|
17
10
|
group :test do
|
18
|
-
gem 'active_mocker', :path => "
|
19
|
-
gem 'selenium-webdriver', '2.35.1'
|
20
|
-
gem 'capybara', '2.1.0'
|
21
|
-
gem 'factory_girl_rails', '4.2.0'
|
22
|
-
gem 'cucumber-rails', '1.3.0', :require => false
|
23
|
-
gem 'database_cleaner', github: 'bmabey/database_cleaner'
|
24
|
-
gem 'fuubar'
|
25
|
-
gem "minitest"
|
26
|
-
|
27
|
-
# Uncomment this line on OS X.
|
28
|
-
gem 'growl', '1.0.3'
|
29
|
-
|
30
|
-
# Uncomment these lines on Linux.
|
31
|
-
# gem 'libnotify', '0.8.0'
|
32
|
-
|
33
|
-
# Uncomment these lines on Windows.
|
34
|
-
# gem 'rb-notifu', '0.0.4'
|
35
|
-
# gem 'win32console', '1.3.2'
|
36
|
-
# gem 'wdm', '0.1.0'
|
37
|
-
end
|
38
|
-
|
39
|
-
gem 'sass-rails', '4.0.1'
|
40
|
-
gem 'uglifier', '2.1.1'
|
41
|
-
gem 'coffee-rails', '4.0.1'
|
42
|
-
gem 'jquery-rails', '3.0.4'
|
43
|
-
gem 'turbolinks', '1.1.1'
|
44
|
-
gem 'jbuilder', '1.0.2'
|
45
|
-
|
46
|
-
group :doc do
|
47
|
-
gem 'sdoc', '0.3.20', require: false
|
48
|
-
end
|
49
|
-
|
50
|
-
group :production do
|
51
|
-
gem 'pg', '0.15.1'
|
52
|
-
gem 'rails_12factor', '0.0.2'
|
11
|
+
gem 'active_mocker', :path => "../../active_mocker"
|
53
12
|
end
|
@@ -6,14 +6,6 @@ class User < ActiveRecord::Base
|
|
6
6
|
class_name: "Relationship",
|
7
7
|
dependent: :destroy
|
8
8
|
has_many :followers, through: :reverse_relationships, source: :follower
|
9
|
-
before_save { self.email = email.downcase }
|
10
|
-
before_create :create_remember_token
|
11
|
-
validates :name, presence: true, length: { maximum: 50 }
|
12
|
-
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
|
13
|
-
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
|
14
|
-
uniqueness: { case_sensitive: false }
|
15
|
-
has_secure_password
|
16
|
-
validates :password, length: { minimum: 6 }
|
17
9
|
|
18
10
|
def User.new_remember_token
|
19
11
|
SecureRandom.urlsafe_base64
|
@@ -4,7 +4,7 @@ ActiveMocker::Generate.configure do |config|
|
|
4
4
|
# Required Options
|
5
5
|
config.schema_file = File.join(Rails.root, 'db/schema.rb')
|
6
6
|
config.model_dir = File.join(Rails.root, 'app/models')
|
7
|
-
config.mock_dir = File.join(Rails.root, '
|
7
|
+
config.mock_dir = File.join(Rails.root, 'spec/mocks')
|
8
8
|
# Logging
|
9
9
|
config.log_level = Logger::WARN #default
|
10
10
|
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
$:.unshift File.expand_path('../', __FILE__)
|
2
|
+
require 'spec_helper'
|
3
|
+
load 'mocks/user_mock.rb'
|
4
|
+
load 'mocks/micropost_mock.rb'
|
5
|
+
|
6
|
+
describe 'Comparing ActiveMocker Api to ActiveRecord Api' do
|
7
|
+
|
8
|
+
after(:each) do
|
9
|
+
UserMock.destroy_all
|
10
|
+
User.destroy_all
|
11
|
+
MicropostMock.destroy_all
|
12
|
+
Micropost.destroy_all
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:attributes) { {name: 'Dustin Zeisler', email: 'dustin@example.com'} }
|
16
|
+
let(:attributes_with_admin) { {name: 'Dustin Zeisler', email: 'dustin@example.com', admin: true} }
|
17
|
+
|
18
|
+
describe '::superclass' do
|
19
|
+
|
20
|
+
it 'mock has super of active hash' do
|
21
|
+
expect(UserMock.superclass.name).to eq "ActiveHash::Base"
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'ar has super of ar' do
|
25
|
+
expect(User.superclass.name).to eq "ActiveRecord::Base"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '::create' do
|
31
|
+
|
32
|
+
let(:create_attributes){attributes}
|
33
|
+
|
34
|
+
it 'mock will take all attributes that AR takes' do
|
35
|
+
User.create(create_attributes)
|
36
|
+
UserMock.create(create_attributes)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#attributes' do
|
42
|
+
|
43
|
+
let(:user_ar){User.new(attributes)}
|
44
|
+
let(:user_mock){UserMock.new(attributes)}
|
45
|
+
|
46
|
+
it 'they are the same' do
|
47
|
+
expect(user_mock.attributes).to eq user_ar.attributes
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'associations' do
|
53
|
+
|
54
|
+
let(:micropost){ Micropost.create(content: 'post')}
|
55
|
+
let(:create_attributes){attributes.merge({microposts: [micropost]})}
|
56
|
+
|
57
|
+
let(:user_ar){User.new(create_attributes)}
|
58
|
+
let(:user_mock){UserMock.new(create_attributes)}
|
59
|
+
|
60
|
+
it 'the Mock when adding an association will not set the _id attribute, do it manually' do
|
61
|
+
expect(user_mock.attributes).to eq({"id" => nil, "name" => "Dustin Zeisler", "email" => "dustin@example.com", "created_at" => nil, "updated_at" => nil, "password_digest" => nil, "remember_token" => nil, "admin" => nil})
|
62
|
+
expect(user_mock.microposts).to eq [micropost]
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'Ar will not include associations in attributes' do
|
66
|
+
expect(user_ar.attributes).to eq({"id" => nil, "name" => "Dustin Zeisler", "email" => "dustin@example.com", "created_at" => nil, "updated_at" => nil, "password_digest" => nil, "remember_token" => nil, "admin" => nil})
|
67
|
+
expect(user_ar.microposts).to eq [micropost]
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
describe 'column_names' do
|
73
|
+
|
74
|
+
it 'they are the same' do
|
75
|
+
expect(UserMock.column_names).to eq User.column_names
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '::find_by' do
|
81
|
+
|
82
|
+
let!(:ar_record){User.create(attributes)}
|
83
|
+
let!(:mock_record){UserMock.create(attributes)}
|
84
|
+
|
85
|
+
it 'AR' do
|
86
|
+
expect(ar_record).to eq User.find_by(attributes)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'Mock' do
|
90
|
+
expect(UserMock.create(attributes_with_admin)).to eq UserMock.find_by(attributes_with_admin)
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
describe '::where' do
|
96
|
+
|
97
|
+
let(:ar_record){User.create(attributes)}
|
98
|
+
let(:mock_record){UserMock.create(attributes)}
|
99
|
+
let(:mock_record_2){UserMock.create(attributes_with_admin)}
|
100
|
+
|
101
|
+
it 'AR' do
|
102
|
+
expect([ar_record]).to eq User.where(attributes)
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'Mock' do
|
106
|
+
expect([mock_record]).to eq UserMock.where(attributes)
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'Mock will not take sql string needs to be mocked' do
|
110
|
+
UserMock.create(attributes_with_admin)
|
111
|
+
expect{UserMock.where("name = 'Dustin Zeisler'")}.to raise_error
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|