grasshopper 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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