test/unit/stored_responses_tests.rb in and-son-0.7.0 vs test/unit/stored_responses_tests.rb in and-son-0.8.0
- old
+ new
@@ -15,87 +15,135 @@
subject{ @responses }
should have_imeths :add, :get, :remove, :remove_all
should "allow adding and getting responses with response data" do
- subject.add(@name, @params){ @response_data }
- protocol_response = subject.get(@name, @params).protocol_response
+ subject.add(@name){ @response_data }
+ protocol_response = subject.get(@name, {}).protocol_response
+
assert_equal 200, protocol_response.code
assert_nil protocol_response.status.message
assert_equal @response_data, protocol_response.data
end
- should "allow adding and gettings responses being yielded a response" do
- code = Factory.integer
+ should "allow adding and getting responses when yielded a response" do
+ code = Factory.integer
message = Factory.string
- data = Factory.string
+ data = Factory.string
yielded = nil
- subject.add(@name, @params) do |response|
+ subject.add(@name) do |response|
yielded = response
- response.code = code
+ response.code = code
response.message = message
- response.data = data
+ response.data = data
end
- protocol_response = subject.get(@name, @params).protocol_response
+ protocol_response = subject.get(@name, {}).protocol_response
assert_instance_of Sanford::Protocol::Response, yielded
- assert_equal code, protocol_response.code
+ assert_equal code, protocol_response.code
assert_equal message, protocol_response.message
- assert_equal data, protocol_response.data
+ assert_equal data, protocol_response.data
end
- should "allow adding and getting responses with no params" do
- subject.add(@name){ @response_data }
- protocol_response = subject.get(@name).protocol_response
- assert_equal @response_data, protocol_response.data
- end
+ should "return a stub when adding a response" do
+ stub = subject.add(@name)
+ assert_instance_of AndSon::StoredResponses::Stub, stub
- should "return a default response for a name/params that isn't configured" do
+ stub.with(@params){ @response_data }
response = subject.get(@name, @params)
+ assert_equal @response_data, response.data
+
+ response = subject.get(@name, {})
+ assert_not_equal @response_data, response.data
+ end
+
+ should "return a default response for a service that isn't configured" do
+ response = subject.get(@name, {})
protocol_response = response.protocol_response
+
assert_equal 200, protocol_response.code
assert_nil protocol_response.status.message
assert_equal({}, protocol_response.data)
end
should "not call a response block until it is retrieved" do
called = false
subject.add(@name){ called = true }
assert_false called
- subject.get(@name)
+ subject.get(@name, {})
assert_true called
end
- should "allow removing a response" do
- subject.add(@name, @params){ @response_data }
- protocol_response = subject.get(@name, @params).protocol_response
- assert_equal @response_data, protocol_response.data
-
- subject.remove(@name, @params)
- protocol_response = subject.get(@name, @params).protocol_response
- assert_not_equal @response_data, protocol_response.data
- end
-
- should "allow removing a response without params" do
+ should "allow removing a stub" do
subject.add(@name){ @response_data }
- protocol_response = subject.get(@name).protocol_response
+ protocol_response = subject.get(@name, {}).protocol_response
assert_equal @response_data, protocol_response.data
subject.remove(@name)
- protocol_response = subject.get(@name).protocol_response
+ protocol_response = subject.get(@name, {}).protocol_response
assert_not_equal @response_data, protocol_response.data
end
should "allow removing all responses" do
- subject.add(@name, @params){ @response_data }
subject.add(@name){ @response_data }
+ other_name = Factory.string
+ subject.add(other_name){ @response_data }
subject.remove_all
- protocol_response = subject.get(@name, @params).protocol_response
+ protocol_response = subject.get(@name, {}).protocol_response
assert_not_equal @response_data, protocol_response.data
- protocol_response = subject.get(@name).protocol_response
+ protocol_response = subject.get(other_name, {}).protocol_response
assert_not_equal @response_data, protocol_response.data
+ end
+
+ end
+
+ class StubTests < UnitTests
+ desc "Stub"
+ setup do
+ @stub = Stub.new
+ end
+ subject{ @stub }
+
+ should have_readers :hash
+ should have_imeths :set_default_proc, :with, :call
+
+ should "default its default response proc" do
+ response = subject.call(@params)
+ assert_equal({}, response.data)
+ end
+
+ should "allow settings its default proc" do
+ data = Factory.string
+ subject.set_default_proc{ |r| r.data = data }
+ response = subject.call(@params)
+ assert_equal data, response.data
+ end
+
+ should "allow setting responses for specific params" do
+ response = subject.call(@params)
+ assert_equal({}, response.data)
+
+ data = Factory.string
+ subject.with(@params){ |r| r.data = data }
+ response = subject.call(@params)
+ assert_equal data, response.data
+ end
+
+ should "yield a response when a response block expects an arg" do
+ yielded = nil
+ subject.with(@params){ |r| yielded = r }
+ exp = Sanford::Protocol::Response.new(200, {})
+ assert_equal exp, subject.call(@params)
+ assert_equal exp, yielded
+ end
+
+ should "set a response data when the response block doesn't expect an arg" do
+ data = Factory.string
+ subject.with(@params){ data }
+ exp = Sanford::Protocol::Response.new(200, data)
+ assert_equal exp, subject.call(@params)
end
end
end