ww 0.3.0 → 0.3.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.
- data/ChangeLog +30 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +38 -0
- data/Rakefile +1 -1
- data/example/spy_eye.ru +1 -0
- data/example/spy_eye_output.html +260 -266
- data/lib/ww/double/mock.rb +23 -3
- data/lib/ww/double/spy.rb +5 -1
- data/lib/ww/double.rb +1 -3
- data/lib/ww/server.rb +20 -2
- data/lib/ww/spy_eye.html.haml +26 -26
- data/lib/ww.rb +1 -1
- data/spec/spec_helper.rb +18 -0
- data/spec/ww/double/mock_spec.rb +60 -0
- data/spec/ww/double/spy_spec.rb +80 -0
- data/spec/ww/double/stub_spec.rb +59 -0
- data/spec/ww/server_integration_spec.rb +22 -1
- metadata +8 -3
- data/spec/ww/double_spec.rb +0 -144
data/lib/ww/double/spy.rb
CHANGED
@@ -13,6 +13,10 @@ module Ww
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
def spy_them_all!
|
17
|
+
before { spy! }
|
18
|
+
end
|
19
|
+
|
16
20
|
def requests
|
17
21
|
@requests ||= Store.new
|
18
22
|
end
|
@@ -23,7 +27,7 @@ module Ww
|
|
23
27
|
|
24
28
|
module InstanceMethods
|
25
29
|
def spy!
|
26
|
-
self.class.store(@request)
|
30
|
+
self.class.store(@request) if @spyed ^ (@spyed = true)
|
27
31
|
end
|
28
32
|
alias stump! spy!
|
29
33
|
end
|
data/lib/ww/double.rb
CHANGED
@@ -18,16 +18,14 @@ module Ww
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def unbound_action(klass, mname, block)
|
21
|
-
ret = nil
|
22
21
|
klass.module_eval do
|
23
22
|
begin
|
24
23
|
define_method(mname, &block)
|
25
|
-
|
24
|
+
instance_method(mname)
|
26
25
|
ensure
|
27
26
|
remove_method(mname) if instance_methods.include?(mname)
|
28
27
|
end
|
29
28
|
end
|
30
|
-
return ret
|
31
29
|
end
|
32
30
|
module_function :unbound_action
|
33
31
|
end
|
data/lib/ww/server.rb
CHANGED
@@ -24,7 +24,7 @@ module Ww
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def_delegators :current_app, *double_methods = %w[
|
27
|
-
spy requests mock verify stub
|
27
|
+
spy spy_them_all! requests mock verify stub
|
28
28
|
]
|
29
29
|
|
30
30
|
attr_reader :app, :port
|
@@ -37,6 +37,7 @@ module Ww
|
|
37
37
|
|
38
38
|
def start_once
|
39
39
|
@app.reset!
|
40
|
+
current_app.testing_thread = Thread.current
|
40
41
|
start! unless running?
|
41
42
|
end
|
42
43
|
|
@@ -60,10 +61,27 @@ module Ww
|
|
60
61
|
private
|
61
62
|
def run_with_picking_server_instance!
|
62
63
|
q = Queue.new
|
63
|
-
|
64
|
+
opt = handler_options(@handler)
|
65
|
+
@thread = Thread.new { @handler.run(@app, opt ) {|server| q << silence!(server) } }
|
64
66
|
@server = q.pop
|
65
67
|
end
|
66
68
|
|
69
|
+
def handler_options(handler)
|
70
|
+
opt = {:Port => @port}
|
71
|
+
if handler.name == "Rack::Handler::WEBrick"
|
72
|
+
l = WEBrick::Log.new("/dev/null")
|
73
|
+
opt.update(:Logger => l, :AccessLog => [l, WEBrick::AccessLog::COMMON_LOG_FORMAT])
|
74
|
+
end
|
75
|
+
return opt
|
76
|
+
end
|
77
|
+
|
78
|
+
def silence!(server)
|
79
|
+
case server.class.name
|
80
|
+
when "Thin::Server" then server.silent = true
|
81
|
+
end
|
82
|
+
return server
|
83
|
+
end
|
84
|
+
|
67
85
|
def shutdown_http_server
|
68
86
|
case @server.class.name
|
69
87
|
when "WEBrick::HTTPServer" then @server.shutdown
|
data/lib/ww/spy_eye.html.haml
CHANGED
@@ -6,6 +6,14 @@
|
|
6
6
|
%head
|
7
7
|
%title&= title
|
8
8
|
%script{:src=>"http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"}
|
9
|
+
:javascript
|
10
|
+
$(function(){
|
11
|
+
$(".request .headers h3").click(function(){ $(this).next("table").toggle() });
|
12
|
+
$(".request .body h3").click(function(){ $(this).next("pre").toggle() });
|
13
|
+
$(".request .headers table").hide();
|
14
|
+
$(".request .body pre").hide();
|
15
|
+
});
|
16
|
+
|
9
17
|
%style{:type=>"text/css"}
|
10
18
|
:sass
|
11
19
|
body
|
@@ -15,7 +23,7 @@
|
|
15
23
|
h1
|
16
24
|
font-size: 10px
|
17
25
|
|
18
|
-
|
26
|
+
.request
|
19
27
|
font-size: 10px
|
20
28
|
border: 1px solid silver
|
21
29
|
padding: 0 1em
|
@@ -50,18 +58,18 @@
|
|
50
58
|
font-weight: normal
|
51
59
|
font-family: 'Courier', monospace
|
52
60
|
|
53
|
-
.headers table,
|
61
|
+
.headers table, .body pre
|
54
62
|
border: 1px dashed green
|
55
63
|
margin: 1em
|
56
64
|
padding: 1em
|
57
65
|
|
58
|
-
|
66
|
+
.body pre
|
59
67
|
overflow: auto
|
60
68
|
font-size: 12px
|
61
69
|
%body
|
62
70
|
%h1&= title
|
63
71
|
- requests.each do |wreq|
|
64
|
-
|
72
|
+
.request{:id => wreq.object_id}
|
65
73
|
%h2
|
66
74
|
%span.method&= wreq.request_method
|
67
75
|
%span.path&= wreq.fullpath
|
@@ -69,27 +77,19 @@
|
|
69
77
|
%span.time&= wreq.time.iso8601
|
70
78
|
from
|
71
79
|
%span.source&= wreq.ip
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
-
|
77
|
-
|
78
|
-
%
|
79
|
-
|
80
|
-
%td&= v
|
80
|
+
.headers
|
81
|
+
%h3 Headers
|
82
|
+
%table
|
83
|
+
- wreq.env.each do |k,v|
|
84
|
+
- next if k =~ /\A[a-z]/
|
85
|
+
%tr
|
86
|
+
%th&= k
|
87
|
+
%td&= v
|
81
88
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
89
|
+
- unless wreq.get?
|
90
|
+
.body
|
91
|
+
%h3
|
92
|
+
Body
|
93
|
+
%span.media_type= wreq.media_type
|
94
|
+
%pre&= wreq.parsed_body.pretty_inspect
|
88
95
|
|
89
|
-
:javascript
|
90
|
-
jQuery(function(){
|
91
|
-
$("div.stump .headers h3").click(function(){ $(this).next("table").toggle() });
|
92
|
-
$("div.stump .body h3").click(function(){ $(this).next("pre").toggle() });
|
93
|
-
$("div.stump .headers table").hide();
|
94
|
-
$("div.stump .body pre").hide();
|
95
|
-
});
|
data/lib/ww.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -2,3 +2,21 @@ require 'rubygems'
|
|
2
2
|
require 'sinatra'
|
3
3
|
$: << File.expand_path("../lib", File.dirname(__FILE__))
|
4
4
|
|
5
|
+
module WwSpec
|
6
|
+
module ExampleMethods
|
7
|
+
def servlet_defining_get_root
|
8
|
+
Ww::Servlet.base do
|
9
|
+
get("/") do
|
10
|
+
response.status = 200
|
11
|
+
response["Content-Type"] = "text/plain"
|
12
|
+
response.body = "Hello World"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Spec::Runner.configure do |config|
|
20
|
+
config.include WwSpec::ExampleMethods
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", File.dirname(__FILE__))
|
2
|
+
require 'ww/servlet'
|
3
|
+
|
4
|
+
describe Ww::Double::Mock, "with Servlet" do
|
5
|
+
before do
|
6
|
+
@server = servlet_defining_get_root
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "mock(:get, '/', :verify => lambda" do
|
10
|
+
before do
|
11
|
+
v = Proc.new {|req, par| par["entity_id"].to_i == 1 && par["entity_value"] == "var" }
|
12
|
+
|
13
|
+
@server.mock( :get, '/', :verify => v) do
|
14
|
+
response.status = 200
|
15
|
+
response["Content-Type"] = "text/plain"
|
16
|
+
response.body = "Hi World"
|
17
|
+
end
|
18
|
+
@server.testing_thread = Thread.new{ sleep }
|
19
|
+
end
|
20
|
+
|
21
|
+
it do
|
22
|
+
@server.new.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
23
|
+
@server.testing_thread.should_not be_alive
|
24
|
+
end
|
25
|
+
|
26
|
+
it do
|
27
|
+
@server.new.call( Rack::MockRequest.env_for("/?entity_id=1&entity_value=var", :method => "GET"))
|
28
|
+
@server.testing_thread.should be_alive
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "mock(:get, '/')" do
|
33
|
+
before do
|
34
|
+
@server.mock(:get, '/') do
|
35
|
+
response.status = 200
|
36
|
+
response["Content-Type"] = "text/plain"
|
37
|
+
response.body = "Hi World"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "call" do
|
42
|
+
before do
|
43
|
+
app = @server.new
|
44
|
+
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
45
|
+
end
|
46
|
+
|
47
|
+
subject{ @response }
|
48
|
+
|
49
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
50
|
+
it {
|
51
|
+
expect{ @server.verify }.should_not raise_error Ww::Double::MockError
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "don't call" do
|
56
|
+
it { expect{ @server.verify }.should raise_error Ww::Double::MockError }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", File.dirname(__FILE__))
|
2
|
+
require 'ww/servlet'
|
3
|
+
|
4
|
+
describe Ww::Double, "with Servlet" do
|
5
|
+
before do
|
6
|
+
@server = servlet_defining_get_root
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "spy(:get, '/')" do
|
10
|
+
before do
|
11
|
+
@server.spy(:get, '/') do
|
12
|
+
response.status = 200
|
13
|
+
response["Content-Type"] = "text/plain"
|
14
|
+
response.body = "Hi World"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "GET / リクエストの" do
|
19
|
+
before do
|
20
|
+
app = @server.new
|
21
|
+
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
22
|
+
end
|
23
|
+
|
24
|
+
subject{ @server.requests.first }
|
25
|
+
|
26
|
+
it { should be_a Rack::Request }
|
27
|
+
its(:request_method) { should == 'GET' }
|
28
|
+
its(:fullpath) { should == "/" }
|
29
|
+
|
30
|
+
it "bodyは空のIOであること" do
|
31
|
+
subject.body.rewind
|
32
|
+
subject.body.read.should == ""
|
33
|
+
end
|
34
|
+
|
35
|
+
it "レスポンスは想定どおりのものであること" do
|
36
|
+
@response.should ==
|
37
|
+
[200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "spy(:get, '/') backword compat, old version spy! or spy(:get..) called stump!" do
|
43
|
+
before do
|
44
|
+
@server.get('/backword') do
|
45
|
+
stump!
|
46
|
+
|
47
|
+
response.status = 200
|
48
|
+
response["Content-Type"] = "text/plain"
|
49
|
+
response.body = "Hi World"
|
50
|
+
end
|
51
|
+
|
52
|
+
app = @server.new
|
53
|
+
@response = app.call( Rack::MockRequest.env_for("/backword", :method => "GET"))
|
54
|
+
end
|
55
|
+
|
56
|
+
subject{ @server.requests }
|
57
|
+
it { should_not be_empty }
|
58
|
+
it { @server.requests.first.should be_a Ww::Double::Spy::Request }
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "spy_them_all! - extend spy feature to all actions" do
|
62
|
+
before do
|
63
|
+
@server.spy_them_all!
|
64
|
+
@app = @server.new
|
65
|
+
3.times{ @app.call( Rack::MockRequest.env_for("/", :method => "GET")) }
|
66
|
+
end
|
67
|
+
subject{ @server }
|
68
|
+
|
69
|
+
it { should have(3).requests }
|
70
|
+
|
71
|
+
describe "do-not collect if already collected" do
|
72
|
+
before do
|
73
|
+
@server.spy(:get, '/spyed'){ "Hello" }
|
74
|
+
@app.call( Rack::MockRequest.env_for("/spyed", :method => "GET"))
|
75
|
+
end
|
76
|
+
it { should have(3 + 1).requests }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path("../../spec_helper", File.dirname(__FILE__))
|
2
|
+
require 'ww/servlet'
|
3
|
+
|
4
|
+
describe Ww::Double::Stub, "included to Servlet" do
|
5
|
+
before do
|
6
|
+
@server = servlet_defining_get_root
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "stub(:get, '/dynamic_add')" do
|
10
|
+
before do
|
11
|
+
@server.stub(:get, '/dynamic_add') do
|
12
|
+
response.status = 200
|
13
|
+
response["Content-Type"] = "text/plain"
|
14
|
+
response.body = "Hi World"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
subject{
|
19
|
+
@server.new.call( Rack::MockRequest.env_for("/dynamic_add", :method => "GET"))
|
20
|
+
}
|
21
|
+
|
22
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "stub(:get, '/') # override" do
|
26
|
+
before do
|
27
|
+
@server.stub(:get, '/') do
|
28
|
+
response.status = 200
|
29
|
+
response["Content-Type"] = "text/plain"
|
30
|
+
response.body = "Hi World"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
subject{
|
35
|
+
@server.new.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
36
|
+
}
|
37
|
+
|
38
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "stub(:get, '/') # re-define after app initialized" do
|
42
|
+
before do
|
43
|
+
@app = @server.new
|
44
|
+
|
45
|
+
@server.stub(:get, '/') do
|
46
|
+
response.status = 200
|
47
|
+
response["Content-Type"] = "text/plain"
|
48
|
+
response.body = "Hi! World"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
subject{
|
53
|
+
@app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
54
|
+
}
|
55
|
+
|
56
|
+
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"9"}, ["Hi! World"]] }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
@@ -5,7 +5,7 @@ require 'json'
|
|
5
5
|
|
6
6
|
describe Ww::Server do
|
7
7
|
before do
|
8
|
-
Ww::Server.handler = :
|
8
|
+
Ww::Server.handler = :webrick
|
9
9
|
Ww::Server[:spec] ||= Ww::Server.build_double(3080) do
|
10
10
|
get("/goodnight") { "Good night" }
|
11
11
|
spy(:get, "/hello") { "Hello world" }
|
@@ -69,5 +69,26 @@ describe Ww::Server do
|
|
69
69
|
expect{ Ww::Server[:spec].verify }.should raise_error Ww::Double::MockError
|
70
70
|
end
|
71
71
|
end
|
72
|
+
|
73
|
+
describe "mocking with verifying expectation" do
|
74
|
+
before do
|
75
|
+
v = lambda {|req,par| par["key"] == "value" }
|
76
|
+
Ww::Server[:spec].mock(:get, "/goodnight", :verify => v) do
|
77
|
+
"OYASUMI-NASAI"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
it "fail unless access there" do
|
82
|
+
expect{
|
83
|
+
URI("http://localhost:3080/goodnight").read
|
84
|
+
}.should raise_error Ww::Double::MockError
|
85
|
+
end
|
86
|
+
|
87
|
+
it "pass if access there" do
|
88
|
+
expect{
|
89
|
+
URI("http://localhost:3080/goodnight?key=value").read
|
90
|
+
}.should_not raise_error
|
91
|
+
end
|
92
|
+
end
|
72
93
|
end
|
73
94
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ww
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- moro
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-20 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -61,10 +61,15 @@ extensions: []
|
|
61
61
|
extra_rdoc_files: []
|
62
62
|
|
63
63
|
files:
|
64
|
+
- README.rdoc
|
65
|
+
- ChangeLog
|
66
|
+
- MIT-LICENSE
|
64
67
|
- Rakefile
|
65
68
|
- spec/spec_helper.rb
|
66
69
|
- spec/ww/application_spec.rb
|
67
|
-
- spec/ww/
|
70
|
+
- spec/ww/double/mock_spec.rb
|
71
|
+
- spec/ww/double/spy_spec.rb
|
72
|
+
- spec/ww/double/stub_spec.rb
|
68
73
|
- spec/ww/double_spy_request_spec.rb
|
69
74
|
- spec/ww/server_integration_spec.rb
|
70
75
|
- spec/ww/server_spec.rb
|
data/spec/ww/double_spec.rb
DELETED
@@ -1,144 +0,0 @@
|
|
1
|
-
require File.expand_path("../spec_helper", File.dirname(__FILE__))
|
2
|
-
require 'ww/servlet'
|
3
|
-
|
4
|
-
describe Ww::Double, "with Servlet" do
|
5
|
-
before do
|
6
|
-
@server = Ww::Servlet.base do
|
7
|
-
get("/") do
|
8
|
-
response.status = 200
|
9
|
-
response["Content-Type"] = "text/plain"
|
10
|
-
response.body = "Hello World"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "stub(:get, '/dynamic_add')" do
|
16
|
-
before do
|
17
|
-
@server.stub(:get, '/dynamic_add') do
|
18
|
-
response.status = 200
|
19
|
-
response["Content-Type"] = "text/plain"
|
20
|
-
response.body = "Hi World"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
subject{
|
25
|
-
@server.new.call( Rack::MockRequest.env_for("/dynamic_add", :method => "GET"))
|
26
|
-
}
|
27
|
-
|
28
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "stub(:get, '/') # override" do
|
32
|
-
before do
|
33
|
-
@server.stub(:get, '/') do
|
34
|
-
response.status = 200
|
35
|
-
response["Content-Type"] = "text/plain"
|
36
|
-
response.body = "Hi World"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
subject{
|
41
|
-
@server.new.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
42
|
-
}
|
43
|
-
|
44
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "stub(:get, '/') # re-define after app initialized" do
|
48
|
-
before do
|
49
|
-
@app = @server.new
|
50
|
-
|
51
|
-
@server.stub(:get, '/') do
|
52
|
-
response.status = 200
|
53
|
-
response["Content-Type"] = "text/plain"
|
54
|
-
response.body = "Hi! World"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
subject{
|
59
|
-
@app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
60
|
-
}
|
61
|
-
|
62
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"9"}, ["Hi! World"]] }
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "mock(:get, '/')" do
|
66
|
-
before do
|
67
|
-
@server.mock(:get, '/') do
|
68
|
-
response.status = 200
|
69
|
-
response["Content-Type"] = "text/plain"
|
70
|
-
response.body = "Hi World"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe "call" do
|
75
|
-
before do
|
76
|
-
app = @server.new
|
77
|
-
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
78
|
-
end
|
79
|
-
|
80
|
-
subject{ @response }
|
81
|
-
|
82
|
-
it { should == [200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]] }
|
83
|
-
it {
|
84
|
-
expect{ @server.verify }.should_not raise_error Ww::Double::MockError
|
85
|
-
}
|
86
|
-
end
|
87
|
-
|
88
|
-
describe "don't call" do
|
89
|
-
it { expect{ @server.verify }.should raise_error Ww::Double::MockError }
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe "spy(:get, '/')" do
|
94
|
-
before do
|
95
|
-
@server.spy(:get, '/') do
|
96
|
-
response.status = 200
|
97
|
-
response["Content-Type"] = "text/plain"
|
98
|
-
response.body = "Hi World"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe "GET / リクエストの" do
|
103
|
-
before do
|
104
|
-
app = @server.new
|
105
|
-
@response = app.call( Rack::MockRequest.env_for("/", :method => "GET"))
|
106
|
-
end
|
107
|
-
|
108
|
-
subject{ @server.requests.first }
|
109
|
-
|
110
|
-
it { should be_a Rack::Request }
|
111
|
-
its(:request_method) { should == 'GET' }
|
112
|
-
its(:fullpath) { should == "/" }
|
113
|
-
|
114
|
-
it "bodyは空のIOであること" do
|
115
|
-
subject.body.rewind
|
116
|
-
subject.body.read.should == ""
|
117
|
-
end
|
118
|
-
|
119
|
-
it "レスポンスは想定どおりのものであること" do
|
120
|
-
@response.should ==
|
121
|
-
[200, {"Content-Type"=>"text/plain", "Content-Length"=>"8"}, ["Hi World"]]
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
describe "spy(:get, '/') backword compat" do
|
127
|
-
before do
|
128
|
-
@server.get('/backword') do
|
129
|
-
stump!
|
130
|
-
response.status = 200
|
131
|
-
response["Content-Type"] = "text/plain"
|
132
|
-
response.body = "Hi World"
|
133
|
-
end
|
134
|
-
|
135
|
-
app = @server.new
|
136
|
-
@response = app.call( Rack::MockRequest.env_for("/backword", :method => "GET"))
|
137
|
-
end
|
138
|
-
|
139
|
-
subject{ @server.requests }
|
140
|
-
it { should_not be_empty }
|
141
|
-
it { @server.requests.first.should be_a Ww::Double::Spy::Request }
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|