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