minitest-mock_expectations 0.9.0 → 1.0.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
  SHA256:
3
- metadata.gz: bea8d6f91af92ae5f55ffb36919b36e9509e6358832b0a52dde9bd5fcd65d7ff
4
- data.tar.gz: 1dce0a9264cc9c43aa074900b9a8be6dc5f816368c9cb4366a4c76f41328b953
3
+ metadata.gz: 01ebd3a13e010b674980be321ca63719fa38bf64d7c048d821cc4cf1347754af
4
+ data.tar.gz: 8519365b930a963f82593a4b3d59bff209889f69d1e2e53a59c4d4d01331ccee
5
5
  SHA512:
6
- metadata.gz: 0a3fa1196dd9a91d7924dad39649eabfab8f6ca189c38065dbbf90c0b14ed1e07a55159b92d3bef9ee4fa8f2809cf36c62a81356208616e318296a97988b1003
7
- data.tar.gz: 89a4de17e26c12f095c6fb5835f6142fc0ae8eb3e93153d299727de8fff5d68907a74ac74fe1841ef676d6bef9c1657d857b3d3b9cf28f518f1de2b7ea9f02c9
6
+ metadata.gz: 2d823714a5f198e096f308200bd902d13fe5536df4595de8e6b68ff276518b680a1bf2bf81853645f268a55398d79e780f1c1a38b6b31a6fdc5c9b0a16865c8e
7
+ data.tar.gz: 3ac1d6d54e1efb6442c36a2a76773f3b5e70196ab98b380501ef8312daf94644b28c4aff5d6682c4c31d1733fc7933f2c6de229fcf7c212a2e15becf9979e1ac
@@ -1,7 +1,7 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.5.1
4
+ - 2.5.3
5
5
  before_install: gem install bundler
6
6
 
7
7
  matrix:
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- minitest-mock_expectations (0.9.0)
4
+ minitest-mock_expectations (1.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -19,4 +19,4 @@ DEPENDENCIES
19
19
  rake (~> 10.0)
20
20
 
21
21
  BUNDLED WITH
22
- 1.16.2
22
+ 1.16.6
data/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # minitest-mock_expectations
2
2
 
3
- Provides method call assertions.
3
+ Provides method call assertions for minitest
4
4
 
5
5
  ## Installation
6
6
 
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'minitest-mock_expectations'
10
+ gem "minitest-mock_expectations"
11
11
  ```
12
12
 
13
13
  And then execute:
@@ -58,23 +58,23 @@ def setup
58
58
  body: "https://bogdanvlviv.com/posts/ruby/rails/what-is-new-in-rails-6_0.html",
59
59
  comments: [
60
60
  "Looking really good.",
61
- "I'm really like this post."
61
+ "I really like this post."
62
62
  ]
63
63
  )
64
64
  end
65
65
  ```
66
66
 
67
- ### assert_called
67
+ ### assert_called(object, method_name, message = nil, times: 1, returns: nil)
68
68
 
69
- Asserts that the method will be called once on the object in the block:
69
+ Asserts that the method will be called on the `object` in the block
70
70
 
71
71
  ```ruby
72
- assert_called @post, :title do
72
+ assert_called(@post, :title) do
73
73
  @post.title
74
74
  end
75
75
  ```
76
76
 
77
- In order to assert that the method will be called multiple times on the object in the block set `:times` option:
77
+ In order to assert that the method will be called multiple times on the `object` in the block set `:times` option:
78
78
 
79
79
  ```ruby
80
80
  assert_called(@post, :title, times: 2) do
@@ -93,19 +93,23 @@ end
93
93
  assert_equal "What is new in Rails 6.0", @object.title
94
94
  ```
95
95
 
96
- ### assert_not_called
96
+ ### refute_called(object, method_name, message = nil, &block)
97
97
 
98
- Asserts that the method will not be called on the object in the block:
98
+ Asserts that the method will not be called on the `object` in the block
99
99
 
100
100
  ```ruby
101
- assert_not_called(@post, :title) do
101
+ refute_called(@post, :title) do
102
102
  @post.body
103
103
  end
104
104
  ```
105
105
 
106
- ### assert_called_with
106
+ ### assert_not_called
107
+
108
+ Alias for `refute_called`.
109
+
110
+ ### assert_called_with(object, method_name, arguments, returns: nil)
107
111
 
108
- Asserts that the method will be called with the arguments once on the object in the block:
112
+ Asserts that the method will be called with the `arguments` on the `object` in the block
109
113
 
110
114
  ```ruby
111
115
  assert_called_with(@post, :add_comment, ["Thanks for sharing this."]) do
@@ -123,7 +127,7 @@ end
123
127
  assert_equal "Thank you!", @post.add_comment("Thanks for sharing this.")
124
128
  ```
125
129
 
126
- You can also assert that the method will be called with different arguments once on the object in the block:
130
+ You can also assert that the method will be called with different `arguments` on the `object` in the block:
127
131
 
128
132
  ```ruby
129
133
  assert_called_with(@post, :add_comment, [["Thanks for sharing this."], ["Thanks!"]]) do
@@ -132,17 +136,17 @@ assert_called_with(@post, :add_comment, [["Thanks for sharing this."], ["Thanks!
132
136
  end
133
137
  ```
134
138
 
135
- ### assert_called_on_instance_of
139
+ ### assert_called_on_instance_of(klass, method_name, message = nil, times: 1, returns: nil)
136
140
 
137
- Asserts that the method will be called once on an instance of the klass in the block:
141
+ Asserts that the method will be called on an instance of the `klass` in the block
138
142
 
139
143
  ```ruby
140
- assert_called_on_instance_of Post, :title do
144
+ assert_called_on_instance_of(Post, :title) do
141
145
  @post.title
142
146
  end
143
147
  ```
144
148
 
145
- In order to assert that the method will be called multiple times on an instance of the klass in the block set `:times` option:
149
+ In order to assert that the method will be called multiple times on an instance of the `klass` in the block set `:times` option:
146
150
 
147
151
  ```ruby
148
152
  assert_called_on_instance_of(Post, :title, times: 2) do
@@ -161,7 +165,7 @@ end
161
165
  assert_equal "What is new in Rails 6.0", @post.title
162
166
  ```
163
167
 
164
- Use nesting of the blocks in order assert that the several methods will be called on an instance of the klass in the block:
168
+ Use nesting of the blocks in order assert that the several methods will be called on an instance of the `klass` in the block:
165
169
 
166
170
  ```ruby
167
171
  assert_called_on_instance_of(Post, :title, times: 3) do
@@ -175,25 +179,29 @@ assert_called_on_instance_of(Post, :title, times: 3) do
175
179
  end
176
180
  ```
177
181
 
178
- ### assert_not_called_on_instance_of
182
+ ### refute_called_on_instance_of(klass, method_name, message = nil, &block)
179
183
 
180
- Asserts that the method will not be called once on an instance of the klass in the block:
184
+ Asserts that the method will not be called on an instance of the `klass` in the block
181
185
 
182
186
  ```ruby
183
- assert_not_called(@post, :title) do
187
+ refute_called(@post, :title) do
184
188
  @post.body
185
189
  end
186
190
  ```
187
191
 
188
- Use nesting of the blocks in order assert that the several methods will not be called on an instance of the klass in the block:
192
+ Use nesting of the blocks in order assert that the several methods will not be called on an instance of the `klass` in the block:
189
193
 
190
194
  ```ruby
191
- assert_not_called_on_instance_of(Post, :title) do
192
- assert_not_called_on_instance_of(Post, :body) do
195
+ refute_called_on_instance_of(Post, :title) do
196
+ refute_called_on_instance_of(Post, :body) do
193
197
  end
194
198
  end
195
199
  ```
196
200
 
201
+ ### assert_not_called_on_instance_of
202
+
203
+ Alias for `refute_called_on_instance_of`.
204
+
197
205
  ## Contributing
198
206
 
199
207
  Bug reports and pull requests are welcome on GitHub at https://github.com/bogdanvlviv/minitest-mock_expectations. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://contributor-covenant.org) code of conduct.
@@ -3,7 +3,7 @@ require "minitest/assertions"
3
3
  require "minitest/mock"
4
4
 
5
5
  module Minitest
6
- # Provides method call assertions
6
+ # Provides method call assertions for minitest
7
7
  #
8
8
  # Imagine we have model +Post+:
9
9
  #
@@ -32,18 +32,18 @@ module Minitest
32
32
  # body: "https://bogdanvlviv.com/posts/ruby/rails/what-is-new-in-rails-6_0.html",
33
33
  # comments: [
34
34
  # "Looking really good.",
35
- # "I'm really like this post."
35
+ # "I really like this post."
36
36
  # ]
37
37
  # )
38
38
  # end
39
39
  module Assertions
40
- # Asserts that the method will be called once on the object in the block:
40
+ # Asserts that the method will be called on the +object+ in the block
41
41
  #
42
- # assert_called @post, :title do
42
+ # assert_called(@post, :title) do
43
43
  # @post.title
44
44
  # end
45
45
  #
46
- # In order to assert that the method will be called multiple times on the object in the block set +:times+ option:
46
+ # In order to assert that the method will be called multiple times on the +object+ in the block set +:times+ option:
47
47
  #
48
48
  # assert_called(@post, :title, times: 2) do
49
49
  # @post.title
@@ -67,16 +67,18 @@ module Minitest
67
67
  assert_equal times, times_called, error
68
68
  end
69
69
 
70
- # Asserts that the method will not be called on the object in the block:
70
+ # Asserts that the method will not be called on the +object+ in the block
71
71
  #
72
- # assert_not_called(@post, :title) do
72
+ # refute_called(@post, :title) do
73
73
  # @post.body
74
74
  # end
75
- def assert_not_called(object, method_name, message = nil, &block)
75
+ def refute_called(object, method_name, message = nil, &block)
76
76
  assert_called(object, method_name, message, times: 0, &block)
77
77
  end
78
78
 
79
- # Asserts that the method will be called with the arguments once on the object in the block:
79
+ alias assert_not_called refute_called
80
+
81
+ # Asserts that the method will be called with the +arguments+ on the +object+ in the block
80
82
  #
81
83
  # assert_called_with(@post, :add_comment, ["Thanks for sharing this."]) do
82
84
  # @post.add_comment("Thanks for sharing this.")
@@ -90,19 +92,19 @@ module Minitest
90
92
  #
91
93
  # assert_equal "Thank you!", @post.add_comment("Thanks for sharing this.")
92
94
  #
93
- # You can also assert that the method will be called with different arguments once on the object in the block:
95
+ # You can also assert that the method will be called with different +arguments+ on the +object+ in the block:
94
96
  #
95
97
  # assert_called_with(@post, :add_comment, [["Thanks for sharing this."], ["Thanks!"]]) do
96
98
  # @post.add_comment("Thanks for sharing this.")
97
99
  # @post.add_comment("Thanks!")
98
100
  # end
99
- def assert_called_with(object, method_name, args, returns: nil)
101
+ def assert_called_with(object, method_name, arguments, returns: nil)
100
102
  mock = Minitest::Mock.new
101
103
 
102
- if args.all? { |arg| arg.is_a?(Array) }
103
- args.each { |arg| mock.expect(:call, returns, arg) }
104
+ if arguments.all? { |argument| argument.is_a?(Array) }
105
+ arguments.each { |argument| mock.expect(:call, returns, argument) }
104
106
  else
105
- mock.expect(:call, returns, args)
107
+ mock.expect(:call, returns, arguments)
106
108
  end
107
109
 
108
110
  object.stub(method_name, mock) { yield }
@@ -110,13 +112,13 @@ module Minitest
110
112
  mock.verify
111
113
  end
112
114
 
113
- # Asserts that the method will be called once on an instance of the klass in the block:
115
+ # Asserts that the method will be called on an instance of the +klass+ in the block
114
116
  #
115
- # assert_called_on_instance_of Post, :title do
117
+ # assert_called_on_instance_of(Post, :title) do
116
118
  # @post.title
117
119
  # end
118
120
  #
119
- # In order to assert that the method will be called multiple times on an instance of the klass in the block set +:times+ option:
121
+ # In order to assert that the method will be called multiple times on an instance of the +klass+ in the block set +:times+ option:
120
122
  #
121
123
  # assert_called_on_instance_of(Post, :title, times: 2) do
122
124
  # @post.title
@@ -131,7 +133,7 @@ module Minitest
131
133
  #
132
134
  # assert_equal "What is new in Rails 6.0", @post.title
133
135
  #
134
- # Use nesting of the blocks in order assert that the several methods will be called on an instance of the klass in the block:
136
+ # Use nesting of the blocks in order assert that the several methods will be called on an instance of the +klass+ in the block:
135
137
  #
136
138
  # assert_called_on_instance_of(Post, :title, times: 3) do
137
139
  # assert_called_on_instance_of(Post, :body, times: 2) do
@@ -166,20 +168,23 @@ module Minitest
166
168
  klass.send(:undef_method, "stubbed_#{method_name}")
167
169
  end
168
170
 
169
- # Asserts that the method will not be called once on an instance of the klass in the block:
171
+ # Asserts that the method will not be called on an instance of the +klass+ in the block
170
172
  #
171
- # assert_not_called(@post, :title) do
173
+ # refute_called_on_instance_of(Post, :title) do
172
174
  # @post.body
173
175
  # end
174
176
  #
175
- # Use nesting of the blocks in order assert that the several methods will not be called on an instance of the klass in the block:
177
+ # Use nesting of the blocks in order assert that the several methods will not be called on an instance of the +klass+ in the block:
176
178
  #
177
- # assert_not_called_on_instance_of(Post, :title) do
178
- # assert_not_called_on_instance_of(Post, :body) do
179
+ # refute_called_on_instance_of(Post, :title) do
180
+ # refute_called_on_instance_of(Post, :body) do
181
+ # @post.add_comment("Thanks for sharing this.")
179
182
  # end
180
183
  # end
181
- def assert_not_called_on_instance_of(klass, method_name, message = nil, &block)
184
+ def refute_called_on_instance_of(klass, method_name, message = nil, &block)
182
185
  assert_called_on_instance_of(klass, method_name, message, times: 0, &block)
183
186
  end
187
+
188
+ alias assert_not_called_on_instance_of refute_called_on_instance_of
184
189
  end
185
190
  end
@@ -1,5 +1,5 @@
1
1
  module Minitest
2
2
  module MockExpectations
3
- VERSION = "0.9.0"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["bogdanvlviv"]
9
9
  spec.email = ["bogdanvlviv@gmail.com"]
10
10
 
11
- spec.summary = "Provides method call assertions"
11
+ spec.summary = "Provides method call assertions for minitest"
12
12
  spec.description = ""
13
13
  spec.homepage = "https://github.com/bogdanvlviv/minitest-mock_expectations"
14
14
  spec.license = "MIT"
@@ -24,13 +24,13 @@ class Minitest::MockExpectations::AssertionsTest < Minitest::Test
24
24
  body: "https://bogdanvlviv.com/posts/ruby/rails/what-is-new-in-rails-6_0.html",
25
25
  comments: [
26
26
  "Looking really good.",
27
- "I'm really like this post."
27
+ "I really like this post."
28
28
  ]
29
29
  )
30
30
  end
31
31
 
32
32
  def test_assert_called_with_defaults_to_expect_once
33
- assert_called @post, :title do
33
+ assert_called(@post, :title) do
34
34
  @post.title
35
35
  end
36
36
  end
@@ -59,35 +59,51 @@ class Minitest::MockExpectations::AssertionsTest < Minitest::Test
59
59
  def test_assert_called_failure
60
60
  error = assert_raises(Minitest::Assertion) do
61
61
  assert_called(@post, :title) do
62
+ @post.body
62
63
  end
63
64
  end
64
65
 
65
66
  assert_equal "Expected title to be called 1 times, but was called 0 times.\nExpected: 1\n Actual: 0", error.message
66
67
  end
67
68
 
68
- def test_assert_not_called
69
- assert_not_called(@post, :title) do
69
+ def test_assert_called_with_message
70
+ error = assert_raises(Minitest::Assertion) do
71
+ assert_called(@post, :title, "Message") do
72
+ @post.body
73
+ end
74
+ end
75
+
76
+ assert_equal "Message.\nExpected title to be called 1 times, but was called 0 times.\nExpected: 1\n Actual: 0", error.message
77
+ end
78
+
79
+ def test_refute_called
80
+ refute_called(@post, :title) do
70
81
  @post.body
71
82
  end
72
83
  end
73
84
 
74
- def test_assert_not_called_failure
85
+ def test_refute_called_failure
75
86
  error = assert_raises(Minitest::Assertion) do
76
- assert_not_called(@post, :title) do
77
- @post.title
87
+ refute_called(@post, :add_comment) do
88
+ @post.add_comment("Thanks for sharing this.")
78
89
  end
79
90
  end
80
91
 
81
- assert_equal "Expected title to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
92
+ assert_equal "Expected add_comment to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
82
93
  end
83
94
 
84
- def test_assert_called_with_message
95
+ def test_refute_called_with_message
85
96
  error = assert_raises(Minitest::Assertion) do
86
- assert_called(@post, :title, "Message") do
97
+ refute_called(@post, :title, "Message") do
98
+ @post.title
87
99
  end
88
100
  end
89
101
 
90
- assert_equal "Message.\nExpected title to be called 1 times, but was called 0 times.\nExpected: 1\n Actual: 0", error.message
102
+ assert_equal "Message.\nExpected title to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
103
+ end
104
+
105
+ def test_assert_not_called_is_alias_for_refute_called
106
+ assert method(:assert_not_called).eql?(method(:refute_called))
91
107
  end
92
108
 
93
109
  def test_assert_called_with_arguments
@@ -120,7 +136,7 @@ class Minitest::MockExpectations::AssertionsTest < Minitest::Test
120
136
  end
121
137
 
122
138
  def test_assert_called_on_instance_of_with_defaults_to_expect_once
123
- assert_called_on_instance_of Post, :title do
139
+ assert_called_on_instance_of(Post, :title) do
124
140
  @post.title
125
141
  end
126
142
  end
@@ -149,6 +165,7 @@ class Minitest::MockExpectations::AssertionsTest < Minitest::Test
149
165
  def test_assert_called_on_instance_of_failure
150
166
  error = assert_raises(Minitest::Assertion) do
151
167
  assert_called_on_instance_of(Post, :title) do
168
+ @post.body
152
169
  end
153
170
  end
154
171
 
@@ -158,6 +175,7 @@ class Minitest::MockExpectations::AssertionsTest < Minitest::Test
158
175
  def test_assert_called_on_instance_of_with_message
159
176
  error = assert_raises(Minitest::Assertion) do
160
177
  assert_called_on_instance_of(Post, :title, "Message") do
178
+ @post.body
161
179
  end
162
180
  end
163
181
 
@@ -176,26 +194,41 @@ class Minitest::MockExpectations::AssertionsTest < Minitest::Test
176
194
  end
177
195
  end
178
196
 
179
- def test_assert_not_called_on_instance_of
180
- assert_not_called_on_instance_of(Post, :title) do
197
+ def test_refute_called_on_instance_of
198
+ refute_called_on_instance_of(Post, :title) do
181
199
  @post.body
182
200
  end
183
201
  end
184
202
 
185
- def test_assert_not_called_on_instance_of_failure
203
+ def test_refute_called_on_instance_of_failure
204
+ error = assert_raises(Minitest::Assertion) do
205
+ refute_called_on_instance_of(Post, :add_comment) do
206
+ @post.add_comment("Thanks for sharing this.")
207
+ end
208
+ end
209
+
210
+ assert_equal "Expected add_comment to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
211
+ end
212
+
213
+ def test_refute_called_on_instance_of_with_message
186
214
  error = assert_raises(Minitest::Assertion) do
187
- assert_not_called_on_instance_of(Post, :title) do
215
+ refute_called_on_instance_of(Post, :title, "Message") do
188
216
  @post.title
189
217
  end
190
218
  end
191
219
 
192
- assert_equal "Expected title to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
220
+ assert_equal "Message.\nExpected title to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
193
221
  end
194
222
 
195
- def test_assert_not_called_on_instance_of_nesting
196
- assert_not_called_on_instance_of(Post, :title) do
197
- assert_not_called_on_instance_of(Post, :body) do
223
+ def test_refute_called_on_instance_of_nesting
224
+ refute_called_on_instance_of(Post, :title) do
225
+ refute_called_on_instance_of(Post, :body) do
226
+ @post.add_comment("Thanks for sharing this.")
198
227
  end
199
228
  end
200
229
  end
230
+
231
+ def test_assert_called_on_instance_of_is_alias_for_refute_called
232
+ assert method(:assert_not_called_on_instance_of).eql?(method(:refute_called_on_instance_of))
233
+ end
201
234
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-mock_expectations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanvlviv
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-18 00:00:00.000000000 Z
11
+ date: 2018-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -59,7 +59,6 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - ".gitignore"
63
62
  - ".travis.yml"
64
63
  - Gemfile
65
64
  - Gemfile.lock
@@ -96,5 +95,5 @@ rubyforge_project:
96
95
  rubygems_version: 2.7.6
97
96
  signing_key:
98
97
  specification_version: 4
99
- summary: Provides method call assertions
98
+ summary: Provides method call assertions for minitest
100
99
  test_files: []
data/.gitignore DELETED
File without changes