|
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
|