From: Nat P. <np...@us...> - 2002-08-27 20:38:44
|
Update of /cvsroot/mockobjects/no-stone-unturned/rubysrc In directory usw-pr-cvs1:/tmp/cvs-serv29794 Modified Files: addrservlet.rb server.rb tasks.txt test_addrservlet.rb Log Message: Task 2 completed Index: addrservlet.rb =================================================================== RCS file: /cvsroot/mockobjects/no-stone-unturned/rubysrc/addrservlet.rb,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- addrservlet.rb 27 Aug 2002 19:35:34 -0000 1.2 +++ addrservlet.rb 27 Aug 2002 20:38:41 -0000 1.3 @@ -3,8 +3,25 @@ class AddressBookServlet < WEBrick::HTTPServlet::AbstractServlet + def initialize( config, address_book ) + super + @address_book = address_book + end + def do_GET( request, response ) response['content-type'] = 'text/plain' - response.body = 'no address found' + + query = request.query_string + if query == nil + response.body = 'no address found' + else + name = WEBrick::HTTPUtils::unescape_form( request.query_string ) + + if @address_book.has_key?(name) + response.body = @address_book[name] + else + response.body = 'no address found' + end + end end end Index: server.rb =================================================================== RCS file: /cvsroot/mockobjects/no-stone-unturned/rubysrc/server.rb,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- server.rb 27 Aug 2002 19:21:35 -0000 1.1 +++ server.rb 27 Aug 2002 20:38:41 -0000 1.2 @@ -4,7 +4,10 @@ require 'addrservlet' server = WEBrick::HTTPServer.new( :Port => 2000 ) -server.mount( "/address", AddressBookServlet ) +server.mount( "/address", AddressBookServlet, + "Nat Pryce" => "nat...@so...", + "Steve Freeman" => "st...@so...", + "Jeff Martin" => "cus...@so..." ) trap("INT") { server.shutdown } Index: tasks.txt =================================================================== RCS file: /cvsroot/mockobjects/no-stone-unturned/rubysrc/tasks.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- tasks.txt 27 Aug 2002 19:21:35 -0000 1.1 +++ tasks.txt 27 Aug 2002 20:38:41 -0000 1.2 @@ -8,7 +8,17 @@ 1a) accept a name and find no result DONE +Points of Interest: + - no need to implement any interfaces when defining mocks + + 1b) accept a name and return a result from a hard-coded collection. +1b.1) what about the servlet receiving no name? +DONE + +Points of Interest: + - using blocks to handle expectations + + 1c) Retrieve the entries from a file, specified as a servlet property. Values are held in memory. - Index: test_addrservlet.rb =================================================================== RCS file: /cvsroot/mockobjects/no-stone-unturned/rubysrc/test_addrservlet.rb,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- test_addrservlet.rb 27 Aug 2002 19:39:42 -0000 1.3 +++ test_addrservlet.rb 27 Aug 2002 20:38:41 -0000 1.4 @@ -6,6 +6,10 @@ class MockRequest + def _setup_query_string( query ) + @query_string = WEBrick::HTTPUtils::escape_form(query) + end + attr_reader :query_string end class MockResponse @@ -14,6 +18,7 @@ def initialize @content_type_set = false @body_set = false + @body_expectation = nil end def []=( header, value ) @@ -22,26 +27,55 @@ @content_type_set = true end + def _expect_body( &proc ) + @body_expectation = proc + end + def body=( value ) - assert_match( /no address found/, value ) + @body_expectation.call(value) if @body_expectation @body_set = true end def _verify assert( "content-type", @content_type_set ) - assert( "body", @body_set ) + assert( "body", @body_expectation && @body_set ) end end class AddressBookServletTest < Test::Unit::TestCase + NAME1 = "First Last" + ADDR1 = "ADDRESS" + + def set_up + @request = MockRequest.new + @response = MockResponse.new + @servlet = AddressBookServlet.new( {}, NAME1 => ADDR1 ) + end + def test_no_address_found - request = MockRequest.new - response = MockResponse.new + @request._setup_query_string( "UNKNOWN NAME" ) + @response._expect_body { |text| assert_match( /no address found/, text ) } + + @servlet.do_GET( @request, @response ) + + @response._verify + end + + def test_no_address_found_when_no_name + @response._expect_body { |text| assert_match( /no address found/, text ) } + + @servlet.do_GET( @request, @response ) + + @response._verify + end + + def test_address_found + @request._setup_query_string( NAME1 ) + @response._expect_body { |text| assert_match( /#{ADDR1}/, text ) } - servlet = AddressBookServlet.new( {} ) - servlet.do_GET( request, response ) + @servlet.do_GET( @request, @response ) - response._verify + @response._verify end end |