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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca14809dc6ae3ea56989eec5d085f4f7f859ab66
4
- data.tar.gz: 43b93e283310ad88a9f736cf1c7513711914100f
3
+ metadata.gz: 5b346a1eee83aebf3465e4b26be69151ba30def3
4
+ data.tar.gz: a997ba2240100c98dc28fca75965b980aec07dfb
5
5
  SHA512:
6
- metadata.gz: 769db71c56192c654fc4df2e837275c8ba38e3c43171a43107a7dd3fd2336d93ba199061192a4c8cdcc67f33c89386ce2374bdd76c64b7a4cb94ef821e2ec89d
7
- data.tar.gz: 0df196f3b8f1e1cc68606ce0801fa44fbcf27627b8c483f501843e3b6e412884e1776f0529cba5aa507d99512818cfd3f11f6cea798794bb87531d7593af0888
6
+ metadata.gz: 5cef5e1c8a429647bf40465a5e20de022396838edd554d13e99e9342ef59be5c8c96166c860cc68d99afa03247895a09e26baf8c00c5a76cd2565201baa93ffb
7
+ data.tar.gz: 7572bdedc2b5d01f9a091bdba49aae029f18c3edd6c76491681c2fd379c4468c493d692736e84b34652224d3d5c47270a5235a24a42aa729a3c4dc67d51ad3b1
@@ -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
- index = @messages.index { |item| message == item[0] and item[1] == args }
15
- unless index
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 << [message, args]
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
@@ -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.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