grasshopper 0.4.1 → 0.4.2

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.
@@ -1,64 +1,2 @@
1
- require 'minitest/unit'
2
-
3
- class Mock
4
- include MiniTest::Assertions
5
-
6
- def verify_next
7
- @verify_next = true
8
- end
9
-
10
- def method_missing(message, *args, &block)
11
- @messages ||= []
12
- if @verify_next
13
- index = @messages.index { |item| message == item[0] and item[1] == args }
14
- assert(index, "Should have seen an invocation of #{message}")
15
- @messages.delete_at(index || @messages.length)
16
- else
17
- @messages << [message, args]
18
- end
19
- end
20
-
21
- def self.verify mock
22
- mock.verify_next
23
- mock
24
- end
25
- end
26
-
27
- class StubHelper
28
- def initialize(stub, message)
29
- @stub = stub
30
- @message = message
31
- end
32
-
33
- def then_return(retval)
34
- @stub.add_a_stub(@message, retval)
35
- end
36
- end
37
-
38
- class Stub
39
- def initialize
40
- @stubs = {}
41
- end
42
-
43
- def add_a_stub(message, retval)
44
- @stubs[message] = retval
45
- end
46
-
47
- def self.when(whatever)
48
- StubHelper.new(@@stub, @@message)
49
- end
50
-
51
- def method_missing(sym, *args)
52
- @@stub = self
53
- @@message = [sym, args]
54
- @stubs[[sym, args]]
55
- end
56
-
57
- def self.like(stubs)
58
- stub = Stub.new
59
- stubs.each do |method, retval|
60
- Stub.when(stub.send(method)).then_return(retval)
61
- end
62
- stub
63
- end
64
- end
1
+ require 'grasshopper/mock'
2
+ require 'grasshopper/stub'
@@ -0,0 +1,25 @@
1
+ require 'minitest/unit'
2
+
3
+ class Mock
4
+ include MiniTest::Assertions
5
+
6
+ def verify_next
7
+ @verify_next = true
8
+ end
9
+
10
+ def method_missing(message, *args, &block)
11
+ @messages ||= []
12
+ if @verify_next
13
+ index = @messages.index { |item| message == item[0] and item[1] == args }
14
+ assert(index, "Should have seen an invocation of #{message}")
15
+ @messages.delete_at(index || @messages.length)
16
+ else
17
+ @messages << [message, args]
18
+ end
19
+ end
20
+
21
+ def self.verify mock
22
+ mock.verify_next
23
+ mock
24
+ end
25
+ end
@@ -0,0 +1,38 @@
1
+ class Stub
2
+ def initialize
3
+ @stubs = {}
4
+ end
5
+
6
+ def add_a_stub(message, retval)
7
+ @stubs[message] = retval
8
+ end
9
+
10
+ def self.when(whatever)
11
+ StubHelper.new(@@stub, @@message)
12
+ end
13
+
14
+ def method_missing(sym, *args)
15
+ @@stub = self
16
+ @@message = [sym, args]
17
+ @stubs[[sym, args]]
18
+ end
19
+
20
+ def self.like(stubs)
21
+ stub = Stub.new
22
+ stubs.each do |method, retval|
23
+ Stub.when(stub.send(method)).then_return(retval)
24
+ end
25
+ stub
26
+ end
27
+ end
28
+
29
+ class StubHelper
30
+ def initialize(stub, message)
31
+ @stub = stub
32
+ @message = message
33
+ end
34
+
35
+ def then_return(retval)
36
+ @stub.add_a_stub(@message, retval)
37
+ end
38
+ end
@@ -0,0 +1,63 @@
1
+ require 'test_helper'
2
+ require 'grasshopper/mock'
3
+
4
+ class MockTest < MiniTest::Unit::TestCase
5
+ def test_fails_verify_if_no_such_message
6
+ mock = Mock.new
7
+
8
+ assert_raises MiniTest::Assertion do
9
+ Mock.verify(mock).never_sent
10
+ end
11
+ end
12
+
13
+ def test_no_failure_if_message_was_sent
14
+ mock = Mock.new
15
+ mock.message_was_sent
16
+ Mock.verify(mock).message_was_sent
17
+ end
18
+
19
+ def test_can_verify_number_of_invocations
20
+ mock = Mock.new
21
+ 2.times { mock.message_sent_twice }
22
+ 2.times { Mock.verify(mock).message_sent_twice }
23
+ end
24
+
25
+ def test_fails_if_too_few_invocations
26
+ mock = Mock.new
27
+ mock.message_sent_once
28
+
29
+ assert_raises MiniTest::Assertion do
30
+ 2.times { Mock.verify(mock).message_sent_once }
31
+ end
32
+ end
33
+
34
+ def test_validate_param
35
+ mock = Mock.new
36
+ mock.message_with_param("to verify")
37
+ Mock.verify(mock).message_with_param("to verify")
38
+ end
39
+
40
+ def test_validate_two_params
41
+ mock = Mock.new
42
+ mock.message_with_params("to", "verify")
43
+ Mock.verify(mock).message_with_params("to", "verify")
44
+ end
45
+
46
+ def test_validate_wrong_param_explodes
47
+ mock = Mock.new
48
+ mock.message_with_param("param")
49
+
50
+ assert_raises MiniTest::Assertion do
51
+ Mock.verify(mock).message_with_param("wrong param")
52
+ end
53
+ end
54
+
55
+ def test_validate_wrong_number_params_explodes
56
+ mock = Mock.new
57
+ mock.message_with_param("param", "two")
58
+
59
+ assert_raises MiniTest::Assertion do
60
+ Mock.verify(mock).message_with_param("param")
61
+ end
62
+ end
63
+ end
@@ -1,66 +1,7 @@
1
1
  require 'test_helper'
2
- require 'grasshopper'
3
-
4
- class MockTest < MiniTest::Unit::TestCase
5
- def test_fails_verify_if_no_such_message
6
- mock = Mock.new
7
-
8
- assert_raises MiniTest::Assertion do
9
- Mock.verify(mock).never_sent
10
- end
11
- end
12
-
13
- def test_no_failure_if_message_was_sent
14
- mock = Mock.new
15
- mock.message_was_sent
16
- Mock.verify(mock).message_was_sent
17
- end
18
-
19
- def test_can_verify_number_of_invocations
20
- mock = Mock.new
21
- 2.times { mock.message_sent_twice }
22
- 2.times { Mock.verify(mock).message_sent_twice }
23
- end
24
-
25
- def test_fails_if_too_few_invocations
26
- mock = Mock.new
27
- mock.message_sent_once
28
-
29
- assert_raises MiniTest::Assertion do
30
- 2.times { Mock.verify(mock).message_sent_once }
31
- end
32
- end
33
-
34
- def test_validate_param
35
- mock = Mock.new
36
- mock.message_with_param("to verify")
37
- Mock.verify(mock).message_with_param("to verify")
38
- end
39
-
40
- def test_validate_two_params
41
- mock = Mock.new
42
- mock.message_with_params("to", "verify")
43
- Mock.verify(mock).message_with_params("to", "verify")
44
- end
45
-
46
- def test_validate_wrong_param_explodes
47
- mock = Mock.new
48
- mock.message_with_param("param")
49
-
50
- assert_raises MiniTest::Assertion do
51
- Mock.verify(mock).message_with_param("wrong param")
52
- end
53
- end
54
-
55
- def test_validate_wrong_number_params_explodes
56
- mock = Mock.new
57
- mock.message_with_param("param", "two")
58
-
59
- assert_raises MiniTest::Assertion do
60
- Mock.verify(mock).message_with_param("param")
61
- end
62
- end
2
+ require 'grasshopper/stub'
63
3
 
4
+ class StubTest < MiniTest::Unit::TestCase
64
5
  def test_stub_returns_nil
65
6
  assert_nil(Stub.new.unknown_method)
66
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grasshopper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -85,10 +85,13 @@ extra_rdoc_files:
85
85
  - README.md
86
86
  files:
87
87
  - lib/grasshopper.rb
88
+ - lib/grasshopper/mock.rb
89
+ - lib/grasshopper/stub.rb
88
90
  - LICENSE.txt
89
91
  - README.md
90
- - test/grasshopper_test.rb
91
92
  - test/test_helper.rb
93
+ - test/mock_test.rb
94
+ - test/stub_test.rb
92
95
  homepage: http://github.com/mattraibert/grasshopper
93
96
  licenses:
94
97
  - GPLv3
@@ -104,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
107
  version: '0'
105
108
  segments:
106
109
  - 0
107
- hash: 3373509623248960979
110
+ hash: -2614166097439653959
108
111
  required_rubygems_version: !ruby/object:Gem::Requirement
109
112
  none: false
110
113
  requirements:
@@ -118,5 +121,6 @@ signing_key:
118
121
  specification_version: 3
119
122
  summary: A tiny mocking framework focused on the Arrange-Act-Assert test pattern
120
123
  test_files:
121
- - test/grasshopper_test.rb
122
124
  - test/test_helper.rb
125
+ - test/mock_test.rb
126
+ - test/stub_test.rb