response_code_matchers 0.0.1 → 0.0.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.
data/README.md CHANGED
@@ -59,6 +59,22 @@ end
59
59
  ```
60
60
 
61
61
 
62
+ ## Advantage
63
+ [Rack::Response](https://github.com/rack/rack/blob/master/lib/rack/response.rb) has predicative methods like `#not_found?`, `#bad_request?`, and etc. so we can use `response.should be_not_found` without this gem.
64
+
65
+ There are 2 advantages to use this gem.
66
+ 1. The range of differences that Rack::Response does not have
67
+ 2. Useful failure messages for each failed reason
68
+
69
+ ```
70
+ # without response_code_matchers.gem
71
+ expected not_found? to return true, got false
72
+
73
+ # with response_code_matchers.gem
74
+ expected response code to be 404, but 400
75
+ ```
76
+
77
+
62
78
  ## Matchers
63
79
  ```ruby
64
80
  100: response.should be_continue
@@ -11,25 +11,48 @@ module ResponseCodeMatchers
11
11
 
12
12
  class ResponseCodeMatcher
13
13
  def initialize(expected, name)
14
- @expected = expected
15
- @description = name.to_s.gsub("_", " ")
14
+ @expected = expected
15
+ @name = name
16
16
  end
17
17
 
18
18
  def matches?(response)
19
- @actual = response.code
20
- @actual == @expected
19
+ @valid = response.respond_to?(:code)
20
+ if @valid
21
+ @actual = response.code
22
+ @actual == @expected
23
+ else
24
+ response.__send__(method_name)
25
+ end
21
26
  end
22
27
 
23
28
  def description
24
- "be #@description"
29
+ "be #{human_name}"
25
30
  end
26
31
 
27
32
  def failure_message
28
- "expected response code to be #@expected, but #@actual"
33
+ if @valid
34
+ "expected response code to be #@expected, but #@actual"
35
+ else
36
+ "expected #{method_name} to return true, got false"
37
+ end
29
38
  end
30
39
 
31
40
  def negative_failure_message
32
- "expected response code not to be #@expected, but #@actual"
41
+ if @valid
42
+ "expected response code not to be #@expected, but #@actual"
43
+ else
44
+ "expected #{method_name} to return false, got true"
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def method_name
51
+ "#@name?"
52
+ end
53
+
54
+ def human_name
55
+ @name.gsub("_", " ")
33
56
  end
34
57
  end
35
58
  end
@@ -1,3 +1,3 @@
1
1
  module ResponseCodeMatchers
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -65,4 +65,14 @@ describe ResponseCodeMatchers do
65
65
  end
66
66
  end
67
67
  end
68
+
69
+ context "when receiver does not have a method #code" do
70
+ let(:receiver) do
71
+ mock(:accepted? => true)
72
+ end
73
+
74
+ it "calls original receiver.xxx?" do
75
+ receiver.should be_accepted
76
+ end
77
+ end
68
78
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: response_code_matchers
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryo NAKAMURA
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-11-28 00:00:00 Z
18
+ date: 2012-12-05 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rack