grasshopper 1.0.0 → 1.0.1
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/lib/grasshopper/mock.rb +16 -3
- data/test/mock_test.rb +13 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b346a1eee83aebf3465e4b26be69151ba30def3
|
4
|
+
data.tar.gz: a997ba2240100c98dc28fca75965b980aec07dfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5cef5e1c8a429647bf40465a5e20de022396838edd554d13e99e9342ef59be5c8c96166c860cc68d99afa03247895a09e26baf8c00c5a76cd2565201baa93ffb
|
7
|
+
data.tar.gz: 7572bdedc2b5d01f9a091bdba49aae029f18c3edd6c76491681c2fd379c4468c493d692736e84b34652224d3d5c47270a5235a24a42aa729a3c4dc67d51ad3b1
|
data/lib/grasshopper/mock.rb
CHANGED
@@ -9,22 +9,35 @@ module Grasshopper
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def method_missing(message, *args, &block)
|
12
|
+
request = MessageHeard.new(message, args)
|
13
|
+
|
12
14
|
@messages ||= []
|
13
15
|
if @verify_next
|
14
|
-
|
15
|
-
|
16
|
+
if args.first.is_a? AnyParams
|
17
|
+
index = @messages.index { |heard| request.message == heard.message }
|
18
|
+
else
|
19
|
+
index = @messages.index { |heard| request == heard }
|
20
|
+
end
|
21
|
+
if index.nil?
|
16
22
|
raise "Should have seen an invocation of #{message}(#{args.join(", ")})\n#{@messages.inspect}"
|
17
23
|
end
|
18
24
|
@messages.delete_at(index || @messages.length)
|
19
25
|
else
|
20
|
-
@messages <<
|
26
|
+
@messages << request
|
21
27
|
end
|
22
28
|
nil
|
23
29
|
end
|
24
30
|
|
31
|
+
MessageHeard = Struct.new(:message, :args)
|
32
|
+
|
25
33
|
def self.verify mock
|
34
|
+
raise "Not a #{self.class}" unless mock.is_a? Grasshopper::Mock
|
26
35
|
mock.verify_next
|
27
36
|
mock
|
28
37
|
end
|
38
|
+
|
39
|
+
class AnyParams
|
40
|
+
|
41
|
+
end
|
29
42
|
end
|
30
43
|
end
|
data/test/mock_test.rb
CHANGED
@@ -61,10 +61,23 @@ class MockTest < MiniTest::Test
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
def test_any_param_matcher_can_stand_in_for_any_param
|
65
|
+
mock = Grasshopper::Mock.new
|
66
|
+
mock.value = "nice value"
|
67
|
+
Grasshopper::Mock.verify(mock).value=(Grasshopper::Mock::AnyParams.new)
|
68
|
+
end
|
69
|
+
|
64
70
|
def test_always_returns_nil
|
65
71
|
mock = Grasshopper::Mock.new
|
66
72
|
assert_nil mock.anything
|
67
73
|
assert_nil mock.anything("even with params")
|
68
74
|
assert_nil mock.anything(["even with array params"])
|
69
75
|
end
|
76
|
+
|
77
|
+
def test_dont_verify_non_mocks
|
78
|
+
non_mock = Object.new
|
79
|
+
assert_raises RuntimeError do
|
80
|
+
Grasshopper::Mock.verify(non_mock)
|
81
|
+
end
|
82
|
+
end
|
70
83
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt J Raibert
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: A tiny mocking framework focused on the Arrage-Act-Assert test pattern.
|
70
84
|
Grasshopper is heavily modeled after Mockito.
|
71
85
|
email: mattraibert@positiondev.com
|