Parent

Included Modules

Class Index

Quicksearch

Arrow::AppletTestCase

Test case class

Constants

APPLET_PATH
The default path to the directory where applets live
AnsiAttributes
Set some ANSI escape code constants (Shamelessly stolen from Perl‘s Term::ANSIColor by Russ Allbery <rra@stanford.edu> and Zenin <zenin@best.com>

Attributes

appletclass[RW]

(Not documented)

appletname[RW]

(Not documented)

fixture_data[RW]

(Not documented)

Public Class Methods

ansicode( *attributes ) click to toggle source

Returns a String containing the specified ANSI escapes suitable for inclusion in another string. The attributes should be one or more of the keys of AnsiAttributes.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 129
129:     def self::ansicode( *attributes )
130:         return '' unless /(?:xterm(?:-color)?|eterm|linux)/i =~ ENV['TERM']
131: 
132:         attr = attributes.collect {|a|
133:             AnsiAttributes[a] ? AnsiAttributes[a] : nil
134:         }.compact.join(';')
135:         if attr.empty? 
136:             return ''
137:         else
138:             return "\e[%sm" % attr
139:         end
140:     end
applet_under_test( applet ) click to toggle source

Define the name of the applet under test. The given name will be stringified, downcased, and searched for in the #applet_path.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 203
203:     def self::applet_under_test( applet )
204:         if applet.is_a?( Class )
205:             self.appletclass = applet
206:             self.appletname = applet.signature.name
207:         else
208:             debug_msg "Setting applet under test for testcase: %p" % [self]
209: 
210:             if Arrow::Applet.derivatives.empty?
211:                 Pathname.glob( APPLET_PATH + '**/*.rb' ).each do |appletfile|
212:                    debug_msg "Trying to load #{appletfile}"
213:                     begin
214:                         Arrow::Applet.load( appletfile )
215:                     rescue LoadError
216:                     end
217:                end
218:             end
219: 
220:             # :view_template becomes /view[-_]template/
221:             applet_pat = Regexp.new( applet.to_s.gsub(/_/, '[-_]?') )
222:         
223:             self.appletclass = Arrow::Applet.derivatives.find {|klass|
224:                 debug_msg "  Checking applet '#{klass.name.downcase}' =~ #{applet_pat}..."
225:                 applet_pat.match( klass.name.downcase ) or
226:                     applet_pat.match( klass.filename )
227:             } or raise "Failed to load applet matching #{applet_pat}"
228:             self.appletname = applet.to_s
229: 
230:             debug_msg "Applet under test is: #{self.appletclass}"
231:         end
232:     end
debug_msg( *msgs ) click to toggle source

Output the specified msgs joined together to STDERR if $DEBUG is set.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 145
145:     def self::debug_msg( *msgs )
146:         return unless $DEBUG
147:         self.message "%sDEBUG>>> %s %s" %
148:             [ ansicode('dark', 'white'), msgs.join(''), ansicode('reset') ]
149:     end
message( *msgs ) click to toggle source

Output the specified msgs joined together to STDOUT.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 154
154:     def self::message( *msgs )
155:         $stderr.puts msgs.join('')
156:         $stderr.flush
157:     end
set_fixture_data( model_class, data ) click to toggle source

Set up model data for the given model_class that can be used in the stub data classes. The data argument is an Array of data, and can be either Hashes or Arrays. If Arrays are used, the first one in the list should be a list of fields, and each subsequent Array should be field values. E.g.,

  [
    [ :title, :description, :date ],
    [ "title1", "desc1",    Date.today ],
    [ "title2", "desc2",    Date.today-4 ],
  ]

which is equivalent to:

  [
    { :title => "title1", :description => "desc1", :date => Date.today }
    { :title => "title1", :description => "desc1", :date => Date.today }
  ]

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 175
175:     def self::set_fixture_data( model_class, data )
176:         @fixture_data ||= {}
177:         
178:         # [ [<fields>], [<values1], [<values2>] ]
179:         if data.first.is_a?( Array )
180:             fields = data.shift
181:             objects = data.collect do |row|
182:                 obj = OpenStruct.new
183:                 fields.each_with_index {|f,i| obj.__send__(f, row[i])}
184:             end
185: 
186:         # [ {:field1 => <value1>}, {:field1 => <value2>} ]
187:         elsif data.first.is_a?( Hash )
188:             objects = data.collect do |row|
189:                 OpenStruct.new( row )
190:             end
191: 
192:         # Custom objects (Mocks, etc.)
193:         elsif data.is_a?( Array )
194:             objects = data
195:         end   
196:         
197:         @fixture_data[ model_class ] = objects
198:     end

Public Instance Methods

ansicode( *attributes ) click to toggle source

Instance-alias for the like-named class method

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 300
300:     def ansicode( *attributes )
301:         self.class.ansicode( *attributes )
302:     end
create_mock( name ) click to toggle source

Create a new mock object and register it to be verified at the end of the test.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 471
471:     def create_mock( name )
472:         return flexmock( name )
473:     end
debug_msg( *msgs ) click to toggle source

Instance alias for the like-named class method

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 306
306:     def debug_msg( *msgs )
307:         self.class.debug_msg( *msgs )
308:     end
default_delegation_behavior() click to toggle source

The default block passed to Arrow::Applet#delegate by #with_fixtured_delegation if no block is passed to either #should_delegate or #should_not_delegate. If you override this, you should either super to this method or set @delegate_called yourself.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 414
414:     def default_delegation_behavior
415:         @delegate_called = true
416:     end
extract_parameters( queryhash, key=nil ) click to toggle source

Extract parameters for the given key from the given queryhash using the form validator for the current action and return it.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 490
490:     def extract_parameters( queryhash, key=nil )
491:         profile = @applet.signature.validator_profiles[ @action ] ||
492:             @applet.signature_profiles[ :__default__ ]
493:         validator = Arrow::FormValidator.new( profile )
494:         
495:         validator.validate( queryhash )
496: 
497:         if key
498:             return validator.valid[ key ]
499:         else
500:             return validator.valid
501:         end
502:     end
fixture_session( txn ) click to toggle source

Set up a mock object as the given transaction‘s session.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 477
477:     def fixture_session( txn )
478:         session = create_mock( "session" )
479:         txn.should_receive( :session ).
480:             and_return( session ).zero_or_more_times
481:         session.should_receive( :[] ).and_return( nil ).zero_or_more_times
482:         session.should_receive( :[]= ).and_return( nil ).zero_or_more_times
483:         
484:         return session
485:     end
hrule( length=75, char="-" ) click to toggle source

Return a separator line made up of length of the specified char.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 313
313:     def hrule( length=75, char="-" )
314:         return (char * length ) + "\n"
315:     end
hrule_section( content, caption='' ) click to toggle source

Return a section delimited by hrules with the specified caption and content.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 319
319:     def hrule_section( content, caption='' )
320:         caption << ' ' unless caption.empty?
321:         return caption +
322:             hrule( 75 - caption.length ) +
323:             content.chomp + "\n" +
324:             hrule()
325:     end
message( *msgs ) click to toggle source

Instance alias for the like-named class method.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 294
294:     def message( *msgs )
295:         self.class.message( *msgs )
296:     end
print_test_header( desc ) click to toggle source

Output a header for delimiting tests

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 329
329:     def print_test_header( desc )
330:         return unless $VERBOSE || $DEBUG
331:         message "%s>>> %s <<<%s" % 
332:             [ ansicode('bold','yellow','on_blue'), desc, ansicode('reset') ]
333:     end
run( result ) click to toggle source

Output the name of the test as it‘s running if in verbose mode, and support per-test debugging settings.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 282
282:     def run( result )
283:         print_test_header self.name
284:         super
285:     end
setup() click to toggle source

Set up a test with some useful test objects

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 248
248:     def setup
249:         super
250: 
251:         debug_msg "%p: Setting up test for applet %p" % 
252:             [self.class, self.class.appletclass]
253: 
254:         # Give the test an easy reference to the applet class under test
255:         @appletclass = self.class.appletclass or
256:             raise "No applet defined for '#{self.class.name}'. Add " +
257:                 "'applet_under_test :<appletname>' to correct this."
258:         @appletname = self.class.appletname
259:         @action = nil
260:         
261:         @config = flexmock( "mock config" )
262:         @config.should_receive( :symbolize_keys ).and_return({})
263:         @config.should_receive( :member? ).
264:             with( :db ).
265:             and_return( false )
266:         @config.should_receive( :name ).and_return( "mock" )
267:         @config.should_receive( :member? ).
268:             with( :model ).
269:             and_return( false )
270:         @config.should_ignore_missing
271:         @template_factory = flexmock( "mock template factory" )
272: 
273:         @applet = @appletclass.new( @config, @template_factory, "#{@appletname}" )
274:     
275:         @delegate_behavior = nil
276:         @delegate_should_be_called = true
277:         @delegate_called = false
278:     end
setup_fixtured_request( action, *args ) click to toggle source

Set up faked request and transaction objects for the given action, using the given args as REST-style arguments, and/or query arguments if the last element is a Hash.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 422
422:     def setup_fixtured_request( action, *args )
423:         uri = '/' + File.join( @appletname, action.to_s )
424:         req = Apache::Request.new( uri )
425: 
426:         params = args.last.is_a?( Hash ) ? args.pop : {}
427:         debug_msg "Parameters hash set to: %p" % [params]
428:         req.paramtable = params
429: 
430:         debug_msg "Request is: %p" % [req]
431:         #txn = Arrow::Transaction.new( req, @config, nil )
432:         txn = flexmock( "transaction" )
433:         txn.should_receive( :request ).
434:             and_return( req ).zero_or_more_times
435:         txn.should_receive( :vargs= ).
436:             with( Arrow::FormValidator ).zero_or_more_times
437:         
438:         vargs = flexmock( "form validator" )
439:         txn.should_receive( :vargs ).
440:             and_return( vargs ).
441:             zero_or_more_times
442:         vargs.should_receive( :[] ).zero_or_more_times
443:         
444:         debug_msg "Transaction is: %p" % [txn]
445:         return txn, req, vargs, *args
446:     end
should_delegate( &block ) click to toggle source

The default delegate block — call this from within your #with_fixtured_delegation block if the applet under test should delegate to the next applet in the chain.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 393
393:     def should_delegate( &block )
394:         @delegate_should_be_called = true
395:         @delegate_behavior = block || 
396:             method( :default_delegation_behavior ).to_proc
397:     end
should_load_template( key ) {|mock_template| ...} click to toggle source

Assert that the current action should load the template associated with the given key, and passes a mock template object to the given block for further specification.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 452
452:     def should_load_template( key )
453:         tname = @applet.signature.templates[ key ] or
454:             raise Test::Unit::AssertionFailedError.new(
455:                 "Expected applet to load the '#{key.inspect}' template\n" +
456:                 "but there was no such template registered by the application." )
457:         
458:         mock_template = flexmock( "#{key.inspect} template")
459:         @template_factory.should_receive( :get_template ).
460:             with( tname ).and_return( mock_template ).at_least.once
461:         mock_template.should_ignore_missing
462: 
463:         yield( mock_template ) if block_given?
464:         
465:         return mock_template
466:     end
should_not_delegate( &block ) click to toggle source

Negated delegate block — call this at the end of your #with_fixtured_delegation block if the applet under test should not delegate to the next applet in the chain.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 403
403:     def should_not_delegate( &block )
404:         @delegate_should_be_called = false
405:         @delegate_behavior = block || 
406:             method( :default_delegation_behavior ).to_proc
407:     end
with_fixtured_action( action=nil, *args, &block ) click to toggle source

Set up faked request and transaction objects, yield to the given block with them, then run the applet under test with them when the block returns.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 343
343:     def with_fixtured_action( action=nil, *args, &block )
344:         @action = action
345:         txn, req, vargs, *args = setup_fixtured_request( action, *args )
346:         
347:         if block.arity == 3
348:             block.call( txn, req, vargs )
349:         else
350:             block.call( txn, req )
351:         end
352:         
353:         return @applet.run( txn, action.to_s, *args )
354:     ensure
355:         @action = nil
356:     end
with_fixtured_delegation( chain=[], *args, &block ) click to toggle source

Set up a faked request and transaction object, yield to the given block with them, and then call the #delegate method of the applet under test. Unless otherwise indicated (via a call to #should_not_delegate), the expectation will be set up that the applet under test should call its delegate.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 364
364:     def with_fixtured_delegation( chain=[], *args, &block )
365:         txn, req, vargs, *args = setup_fixtured_request( "delegated_action", *args )
366: 
367:         # Set delegation expectation
368:         @delegate_behavior ||= should_delegate()
369: 
370:         if block.arity == 3
371:             block.call( txn, req, vargs )
372:         else
373:             block.call( txn, req )
374:         end
375:         
376:         rval = @applet.delegate( txn, chain, *args, &@delegate_behavior )
377:         
378:         if @delegate_should_be_called
379:             assert @delegate_called,
380:                 "delegate applet was never called" 
381:         else
382:             assert !@delegate_called,
383:                 "delegate applet was called unexpectedly"
384:         end
385: 
386:         return rval
387:     end

Protected Instance Methods

initialize( *args ) click to toggle source

Check to be sure an applet has been associated before instantiation.

     # File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 241
241:     def initialize( *args ) # :notnew:
242:         throw :invalid_test unless self.class.appletclass
243:         super
244:     end

secsequence

--- SEC00023

seccomment

--- ""

attributes

--- 
- name: appletclass
  rw: RW
  a_desc: ""
- name: appletname
  rw: RW
  a_desc: ""
- name: fixture_data
  rw: RW
  a_desc: ""

method_list

--- 
- methods: 
  - visibility: public
    aref: M000410
    name: ansicode
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 129</span>\n\
      129:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-keyword kw\">self</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">ansicode</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">attributes</span> )\n\
      130:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-value str\">''</span> <span class=\"ruby-keyword kw\">unless</span> <span class=\"ruby-regexp re\">/(?:xterm(?:-color)?|eterm|linux)/i</span> <span class=\"ruby-operator\">=~</span> <span class=\"ruby-constant\">ENV</span>[<span class=\"ruby-value str\">'TERM'</span>]\n\
      131: \n\
      132:         <span class=\"ruby-identifier\">attr</span> = <span class=\"ruby-identifier\">attributes</span>.<span class=\"ruby-identifier\">collect</span> {<span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">a</span><span class=\"ruby-operator\">|</span>\n\
      133:             <span class=\"ruby-constant\">AnsiAttributes</span>[<span class=\"ruby-identifier\">a</span>] <span class=\"ruby-operator\">?</span> <span class=\"ruby-constant\">AnsiAttributes</span>[<span class=\"ruby-identifier\">a</span>] <span class=\"ruby-operator\">:</span> <span class=\"ruby-keyword kw\">nil</span>\n\
      134:         }.<span class=\"ruby-identifier\">compact</span>.<span class=\"ruby-identifier\">join</span>(<span class=\"ruby-value str\">';'</span>)\n\
      135:         <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">attr</span>.<span class=\"ruby-identifier\">empty?</span> \n\
      136:             <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-value str\">''</span>\n\
      137:         <span class=\"ruby-keyword kw\">else</span>\n\
      138:             <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-value str\">&quot;\\e[%sm&quot;</span> <span class=\"ruby-operator\">%</span> <span class=\"ruby-identifier\">attr</span>\n\
      139:         <span class=\"ruby-keyword kw\">end</span>\n\
      140:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Returns a String containing the specified ANSI escapes suitable for
      inclusion in another string. The <tt>attributes</tt> should be one or more
      of the keys of AnsiAttributes.
      </p>
    params: ( *attributes )
  - visibility: public
    aref: M000414
    name: applet_under_test
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 203</span>\n\
      203:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-keyword kw\">self</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">applet_under_test</span>( <span class=\"ruby-identifier\">applet</span> )\n\
      204:         <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">applet</span>.<span class=\"ruby-identifier\">is_a?</span>( <span class=\"ruby-constant\">Class</span> )\n\
      205:             <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">appletclass</span> = <span class=\"ruby-identifier\">applet</span>\n\
      206:             <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">appletname</span> = <span class=\"ruby-identifier\">applet</span>.<span class=\"ruby-identifier\">signature</span>.<span class=\"ruby-identifier\">name</span>\n\
      207:         <span class=\"ruby-keyword kw\">else</span>\n\
      208:             <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-value str\">&quot;Setting applet under test for testcase: %p&quot;</span> <span class=\"ruby-operator\">%</span> [<span class=\"ruby-keyword kw\">self</span>]\n\
      209: \n\
      210:             <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-constant\">Arrow</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">Applet</span>.<span class=\"ruby-identifier\">derivatives</span>.<span class=\"ruby-identifier\">empty?</span>\n\
      211:                 <span class=\"ruby-constant\">Pathname</span>.<span class=\"ruby-identifier\">glob</span>( <span class=\"ruby-constant\">APPLET_PATH</span> <span class=\"ruby-operator\">+</span> <span class=\"ruby-value str\">'**/*.rb'</span> ).<span class=\"ruby-identifier\">each</span> <span class=\"ruby-keyword kw\">do</span> <span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">appletfile</span><span class=\"ruby-operator\">|</span>\n\
      212:                    <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-node\">&quot;Trying to load #{appletfile}&quot;</span>\n\
      213:                     <span class=\"ruby-keyword kw\">begin</span>\n\
      214:                         <span class=\"ruby-constant\">Arrow</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">Applet</span>.<span class=\"ruby-identifier\">load</span>( <span class=\"ruby-identifier\">appletfile</span> )\n\
      215:                     <span class=\"ruby-keyword kw\">rescue</span> <span class=\"ruby-constant\">LoadError</span>\n\
      216:                     <span class=\"ruby-keyword kw\">end</span>\n\
      217:                <span class=\"ruby-keyword kw\">end</span>\n\
      218:             <span class=\"ruby-keyword kw\">end</span>\n\
      219: \n\
      220:             <span class=\"ruby-comment cmt\"># :view_template becomes /view[-_]template/</span>\n\
      221:             <span class=\"ruby-identifier\">applet_pat</span> = <span class=\"ruby-constant\">Regexp</span>.<span class=\"ruby-identifier\">new</span>( <span class=\"ruby-identifier\">applet</span>.<span class=\"ruby-identifier\">to_s</span>.<span class=\"ruby-identifier\">gsub</span>(<span class=\"ruby-regexp re\">/_/</span>, <span class=\"ruby-value str\">'[-_]?'</span>) )\n\
      222:         \n\
      223:             <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">appletclass</span> = <span class=\"ruby-constant\">Arrow</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">Applet</span>.<span class=\"ruby-identifier\">derivatives</span>.<span class=\"ruby-identifier\">find</span> {<span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">klass</span><span class=\"ruby-operator\">|</span>\n\
      224:                 <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-node\">&quot;  Checking applet '#{klass.name.downcase}' =~ #{applet_pat}...&quot;</span>\n\
      225:                 <span class=\"ruby-identifier\">applet_pat</span>.<span class=\"ruby-identifier\">match</span>( <span class=\"ruby-identifier\">klass</span>.<span class=\"ruby-identifier\">name</span>.<span class=\"ruby-identifier\">downcase</span> ) <span class=\"ruby-keyword kw\">or</span>\n\
      226:                     <span class=\"ruby-identifier\">applet_pat</span>.<span class=\"ruby-identifier\">match</span>( <span class=\"ruby-identifier\">klass</span>.<span class=\"ruby-identifier\">filename</span> )\n\
      227:             } <span class=\"ruby-keyword kw\">or</span> <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-node\">&quot;Failed to load applet matching #{applet_pat}&quot;</span>\n\
      228:             <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">appletname</span> = <span class=\"ruby-identifier\">applet</span>.<span class=\"ruby-identifier\">to_s</span>\n\
      229: \n\
      230:             <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-node\">&quot;Applet under test is: #{self.appletclass}&quot;</span>\n\
      231:         <span class=\"ruby-keyword kw\">end</span>\n\
      232:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Define the name of the applet under test. The given <tt>name</tt> will be
      stringified, downcased, and searched for in the #applet_path.
      </p>
    params: ( applet )
  - visibility: public
    aref: M000411
    name: debug_msg
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 145</span>\n\
      145:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-keyword kw\">self</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">debug_msg</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">msgs</span> )\n\
      146:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-keyword kw\">unless</span> <span class=\"ruby-identifier\">$DEBUG</span>\n\
      147:         <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">message</span> <span class=\"ruby-value str\">&quot;%sDEBUG&gt;&gt;&gt; %s %s&quot;</span> <span class=\"ruby-operator\">%</span>\n\
      148:             [ <span class=\"ruby-identifier\">ansicode</span>(<span class=\"ruby-value str\">'dark'</span>, <span class=\"ruby-value str\">'white'</span>), <span class=\"ruby-identifier\">msgs</span>.<span class=\"ruby-identifier\">join</span>(<span class=\"ruby-value str\">''</span>), <span class=\"ruby-identifier\">ansicode</span>(<span class=\"ruby-value str\">'reset'</span>) ]\n\
      149:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Output the specified <tt>msgs</tt> joined together to <tt>STDERR</tt> if
      <tt>$DEBUG</tt> is set.
      </p>
    params: ( *msgs )
  - visibility: public
    aref: M000412
    name: message
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 154</span>\n\
      154:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-keyword kw\">self</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">message</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">msgs</span> )\n\
      155:         <span class=\"ruby-identifier\">$stderr</span>.<span class=\"ruby-identifier\">puts</span> <span class=\"ruby-identifier\">msgs</span>.<span class=\"ruby-identifier\">join</span>(<span class=\"ruby-value str\">''</span>)\n\
      156:         <span class=\"ruby-identifier\">$stderr</span>.<span class=\"ruby-identifier\">flush</span>\n\
      157:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Output the specified <tt>msgs</tt> joined together to <tt>STDOUT</tt>.
      </p>
    params: ( *msgs )
  - visibility: public
    aref: M000413
    name: set_fixture_data
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 175</span>\n\
      175:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-keyword kw\">self</span><span class=\"ruby-operator\">::</span><span class=\"ruby-identifier\">set_fixture_data</span>( <span class=\"ruby-identifier\">model_class</span>, <span class=\"ruby-identifier\">data</span> )\n\
      176:         <span class=\"ruby-ivar\">@fixture_data</span> <span class=\"ruby-operator\">||=</span> {}\n\
      177:         \n\
      178:         <span class=\"ruby-comment cmt\"># [ [&lt;fields&gt;], [&lt;values1], [&lt;values2&gt;] ]</span>\n\
      179:         <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">data</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>( <span class=\"ruby-constant\">Array</span> )\n\
      180:             <span class=\"ruby-identifier\">fields</span> = <span class=\"ruby-identifier\">data</span>.<span class=\"ruby-identifier\">shift</span>\n\
      181:             <span class=\"ruby-identifier\">objects</span> = <span class=\"ruby-identifier\">data</span>.<span class=\"ruby-identifier\">collect</span> <span class=\"ruby-keyword kw\">do</span> <span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">row</span><span class=\"ruby-operator\">|</span>\n\
      182:                 <span class=\"ruby-identifier\">obj</span> = <span class=\"ruby-constant\">OpenStruct</span>.<span class=\"ruby-identifier\">new</span>\n\
      183:                 <span class=\"ruby-identifier\">fields</span>.<span class=\"ruby-identifier\">each_with_index</span> {<span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">f</span>,<span class=\"ruby-identifier\">i</span><span class=\"ruby-operator\">|</span> <span class=\"ruby-identifier\">obj</span>.<span class=\"ruby-identifier\">__send__</span>(<span class=\"ruby-identifier\">f</span>, <span class=\"ruby-identifier\">row</span>[<span class=\"ruby-identifier\">i</span>])}\n\
      184:             <span class=\"ruby-keyword kw\">end</span>\n\
      185: \n\
      186:         <span class=\"ruby-comment cmt\"># [ {:field1 =&gt; &lt;value1&gt;}, {:field1 =&gt; &lt;value2&gt;} ]</span>\n\
      187:         <span class=\"ruby-keyword kw\">elsif</span> <span class=\"ruby-identifier\">data</span>.<span class=\"ruby-identifier\">first</span>.<span class=\"ruby-identifier\">is_a?</span>( <span class=\"ruby-constant\">Hash</span> )\n\
      188:             <span class=\"ruby-identifier\">objects</span> = <span class=\"ruby-identifier\">data</span>.<span class=\"ruby-identifier\">collect</span> <span class=\"ruby-keyword kw\">do</span> <span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">row</span><span class=\"ruby-operator\">|</span>\n\
      189:                 <span class=\"ruby-constant\">OpenStruct</span>.<span class=\"ruby-identifier\">new</span>( <span class=\"ruby-identifier\">row</span> )\n\
      190:             <span class=\"ruby-keyword kw\">end</span>\n\
      191: \n\
      192:         <span class=\"ruby-comment cmt\"># Custom objects (Mocks, etc.)</span>\n\
      193:         <span class=\"ruby-keyword kw\">elsif</span> <span class=\"ruby-identifier\">data</span>.<span class=\"ruby-identifier\">is_a?</span>( <span class=\"ruby-constant\">Array</span> )\n\
      194:             <span class=\"ruby-identifier\">objects</span> = <span class=\"ruby-identifier\">data</span>\n\
      195:         <span class=\"ruby-keyword kw\">end</span>   \n\
      196:         \n\
      197:         <span class=\"ruby-ivar\">@fixture_data</span>[ <span class=\"ruby-identifier\">model_class</span> ] = <span class=\"ruby-identifier\">objects</span>\n\
      198:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Set up model <tt>data</tt> for the given <tt>model_class</tt> that can be
      used in the stub data classes. The <tt>data</tt> argument is an Array of
      data, and can be either Hashes or Arrays. If Arrays are used, the first one
      in the list should be a list of fields, and each subsequent Array should be
      field values. E.g.,
      </p>
      <pre>
        [
          [ :title, :description, :date ],
          [ &quot;title1&quot;, &quot;desc1&quot;,    Date.today ],
          [ &quot;title2&quot;, &quot;desc2&quot;,    Date.today-4 ],
        ]
      </pre>
      <p>
      which is equivalent to:
      </p>
      <pre>
        [
          { :title =&gt; &quot;title1&quot;, :description =&gt; &quot;desc1&quot;, :date =&gt; Date.today }
          { :title =&gt; &quot;title1&quot;, :description =&gt; &quot;desc1&quot;, :date =&gt; Date.today }
        ]
      </pre>
    params: ( model_class, data )
  category: Class
  type: Public
- methods: 
  - visibility: public
    aref: M000419
    name: ansicode
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 300</span>\n\
      300:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">ansicode</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">attributes</span> )\n\
      301:         <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">ansicode</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">attributes</span> )\n\
      302:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Instance-alias for the like-named class method
      </p>
    params: ( *attributes )
  - visibility: public
    aref: M000431
    name: create_mock
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 471</span>\n\
      471:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">create_mock</span>( <span class=\"ruby-identifier\">name</span> )\n\
      472:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">flexmock</span>( <span class=\"ruby-identifier\">name</span> )\n\
      473:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Create a new mock object and register it to be verified at the end of the
      test.
      </p>
    params: ( name )
  - visibility: public
    aref: M000420
    name: debug_msg
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 306</span>\n\
      306:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">debug_msg</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">msgs</span> )\n\
      307:         <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">debug_msg</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">msgs</span> )\n\
      308:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Instance alias for the like-named class method
      </p>
    params: ( *msgs )
  - visibility: public
    aref: M000428
    name: default_delegation_behavior
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 414</span>\n\
      414:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">default_delegation_behavior</span>\n\
      415:         <span class=\"ruby-ivar\">@delegate_called</span> = <span class=\"ruby-keyword kw\">true</span>\n\
      416:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      The default block passed to <a
      href="Applet.html#M000572">Arrow::Applet#delegate</a> by <a
      href="AppletTestCase.html#M000425">#with_fixtured_delegation</a> if no
      block is passed to either <a
      href="AppletTestCase.html#M000426">#should_delegate</a> or <a
      href="AppletTestCase.html#M000427">#should_not_delegate</a>. If you
      override this, you should either super to this method or set
      @delegate_called yourself.
      </p>
    params: ()
  - visibility: public
    aref: M000433
    name: extract_parameters
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 490</span>\n\
      490:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">extract_parameters</span>( <span class=\"ruby-identifier\">queryhash</span>, <span class=\"ruby-identifier\">key</span>=<span class=\"ruby-keyword kw\">nil</span> )\n\
      491:         <span class=\"ruby-identifier\">profile</span> = <span class=\"ruby-ivar\">@applet</span>.<span class=\"ruby-identifier\">signature</span>.<span class=\"ruby-identifier\">validator_profiles</span>[ <span class=\"ruby-ivar\">@action</span> ] <span class=\"ruby-operator\">||</span>\n\
      492:             <span class=\"ruby-ivar\">@applet</span>.<span class=\"ruby-identifier\">signature_profiles</span>[ <span class=\"ruby-identifier\">:__default__</span> ]\n\
      493:         <span class=\"ruby-identifier\">validator</span> = <span class=\"ruby-constant\">Arrow</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">FormValidator</span>.<span class=\"ruby-identifier\">new</span>( <span class=\"ruby-identifier\">profile</span> )\n\
      494:         \n\
      495:         <span class=\"ruby-identifier\">validator</span>.<span class=\"ruby-identifier\">validate</span>( <span class=\"ruby-identifier\">queryhash</span> )\n\
      496: \n\
      497:         <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">key</span>\n\
      498:             <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">validator</span>.<span class=\"ruby-identifier\">valid</span>[ <span class=\"ruby-identifier\">key</span> ]\n\
      499:         <span class=\"ruby-keyword kw\">else</span>\n\
      500:             <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">validator</span>.<span class=\"ruby-identifier\">valid</span>\n\
      501:         <span class=\"ruby-keyword kw\">end</span>\n\
      502:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Extract parameters for the given <tt>key</tt> from the given
      <tt>queryhash</tt> using the form validator for the current action and
      return it.
      </p>
    params: ( queryhash, key=nil )
  - visibility: public
    aref: M000432
    name: fixture_session
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 477</span>\n\
      477:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">fixture_session</span>( <span class=\"ruby-identifier\">txn</span> )\n\
      478:         <span class=\"ruby-identifier\">session</span> = <span class=\"ruby-identifier\">create_mock</span>( <span class=\"ruby-value str\">&quot;session&quot;</span> )\n\
      479:         <span class=\"ruby-identifier\">txn</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:session</span> ).\n\
      480:             <span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-identifier\">session</span> ).<span class=\"ruby-identifier\">zero_or_more_times</span>\n\
      481:         <span class=\"ruby-identifier\">session</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:[]</span> ).<span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-keyword kw\">nil</span> ).<span class=\"ruby-identifier\">zero_or_more_times</span>\n\
      482:         <span class=\"ruby-identifier\">session</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:[]=</span> ).<span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-keyword kw\">nil</span> ).<span class=\"ruby-identifier\">zero_or_more_times</span>\n\
      483:         \n\
      484:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">session</span>\n\
      485:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Set up a mock object as the given transaction&#8216;s session.
      </p>
    params: ( txn )
  - visibility: public
    aref: M000421
    name: hrule
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 313</span>\n\
      313:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">hrule</span>( <span class=\"ruby-identifier\">length</span>=<span class=\"ruby-value\">75</span>, <span class=\"ruby-identifier\">char</span>=<span class=\"ruby-value str\">&quot;-&quot;</span> )\n\
      314:         <span class=\"ruby-keyword kw\">return</span> (<span class=\"ruby-identifier\">char</span> <span class=\"ruby-operator\">*</span> <span class=\"ruby-identifier\">length</span> ) <span class=\"ruby-operator\">+</span> <span class=\"ruby-value str\">&quot;\\n&quot;</span>\n\
      315:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Return a separator line made up of <tt>length</tt> of the specified
      <tt>char</tt>.
      </p>
    params: ( length=75, char=&quot;-&quot; )
  - visibility: public
    aref: M000422
    name: hrule_section
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 319</span>\n\
      319:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">hrule_section</span>( <span class=\"ruby-identifier\">content</span>, <span class=\"ruby-identifier\">caption</span>=<span class=\"ruby-value str\">''</span> )\n\
      320:         <span class=\"ruby-identifier\">caption</span> <span class=\"ruby-operator\">&lt;&lt;</span> <span class=\"ruby-value str\">' '</span> <span class=\"ruby-keyword kw\">unless</span> <span class=\"ruby-identifier\">caption</span>.<span class=\"ruby-identifier\">empty?</span>\n\
      321:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">caption</span> <span class=\"ruby-operator\">+</span>\n\
      322:             <span class=\"ruby-identifier\">hrule</span>( <span class=\"ruby-value\">75</span> <span class=\"ruby-operator\">-</span> <span class=\"ruby-identifier\">caption</span>.<span class=\"ruby-identifier\">length</span> ) <span class=\"ruby-operator\">+</span>\n\
      323:             <span class=\"ruby-identifier\">content</span>.<span class=\"ruby-identifier\">chomp</span> <span class=\"ruby-operator\">+</span> <span class=\"ruby-value str\">&quot;\\n&quot;</span> <span class=\"ruby-operator\">+</span>\n\
      324:             <span class=\"ruby-identifier\">hrule</span>()\n\
      325:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Return a section delimited by hrules with the specified <tt>caption</tt>
      and <tt>content</tt>.
      </p>
    params: ( content, caption='' )
  - visibility: public
    aref: M000418
    name: message
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 294</span>\n\
      294:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">message</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">msgs</span> )\n\
      295:         <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">message</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">msgs</span> )\n\
      296:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Instance alias for the like-named class method.
      </p>
    params: ( *msgs )
  - visibility: public
    aref: M000423
    name: print_test_header
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 329</span>\n\
      329:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">print_test_header</span>( <span class=\"ruby-identifier\">desc</span> )\n\
      330:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-keyword kw\">unless</span> <span class=\"ruby-identifier\">$VERBOSE</span> <span class=\"ruby-operator\">||</span> <span class=\"ruby-identifier\">$DEBUG</span>\n\
      331:         <span class=\"ruby-identifier\">message</span> <span class=\"ruby-value str\">&quot;%s&gt;&gt;&gt; %s &lt;&lt;&lt;%s&quot;</span> <span class=\"ruby-operator\">%</span> \n\
      332:             [ <span class=\"ruby-identifier\">ansicode</span>(<span class=\"ruby-value str\">'bold'</span>,<span class=\"ruby-value str\">'yellow'</span>,<span class=\"ruby-value str\">'on_blue'</span>), <span class=\"ruby-identifier\">desc</span>, <span class=\"ruby-identifier\">ansicode</span>(<span class=\"ruby-value str\">'reset'</span>) ]\n\
      333:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Output a header for delimiting tests
      </p>
    params: ( desc )
  - visibility: public
    aref: M000417
    name: run
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 282</span>\n\
      282:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">run</span>( <span class=\"ruby-identifier\">result</span> )\n\
      283:         <span class=\"ruby-identifier\">print_test_header</span> <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">name</span>\n\
      284:         <span class=\"ruby-keyword kw\">super</span>\n\
      285:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Output the name of the test as it&#8216;s running if in verbose mode, and
      support per-test debugging settings.
      </p>
    params: ( result )
  - visibility: public
    aref: M000416
    name: setup
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 248</span>\n\
      248:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">setup</span>\n\
      249:         <span class=\"ruby-keyword kw\">super</span>\n\
      250: \n\
      251:         <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-value str\">&quot;%p: Setting up test for applet %p&quot;</span> <span class=\"ruby-operator\">%</span> \n\
      252:             [<span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>, <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">appletclass</span>]\n\
      253: \n\
      254:         <span class=\"ruby-comment cmt\"># Give the test an easy reference to the applet class under test</span>\n\
      255:         <span class=\"ruby-ivar\">@appletclass</span> = <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">appletclass</span> <span class=\"ruby-keyword kw\">or</span>\n\
      256:             <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-node\">&quot;No applet defined for '#{self.class.name}'. Add &quot;</span> <span class=\"ruby-operator\">+</span>\n\
      257:                 <span class=\"ruby-value str\">&quot;'applet_under_test :&lt;appletname&gt;' to correct this.&quot;</span>\n\
      258:         <span class=\"ruby-ivar\">@appletname</span> = <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">appletname</span>\n\
      259:         <span class=\"ruby-ivar\">@action</span> = <span class=\"ruby-keyword kw\">nil</span>\n\
      260:         \n\
      261:         <span class=\"ruby-ivar\">@config</span> = <span class=\"ruby-identifier\">flexmock</span>( <span class=\"ruby-value str\">&quot;mock config&quot;</span> )\n\
      262:         <span class=\"ruby-ivar\">@config</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:symbolize_keys</span> ).<span class=\"ruby-identifier\">and_return</span>({})\n\
      263:         <span class=\"ruby-ivar\">@config</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:member?</span> ).\n\
      264:             <span class=\"ruby-identifier\">with</span>( <span class=\"ruby-identifier\">:db</span> ).\n\
      265:             <span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-keyword kw\">false</span> )\n\
      266:         <span class=\"ruby-ivar\">@config</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:name</span> ).<span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-value str\">&quot;mock&quot;</span> )\n\
      267:         <span class=\"ruby-ivar\">@config</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:member?</span> ).\n\
      268:             <span class=\"ruby-identifier\">with</span>( <span class=\"ruby-identifier\">:model</span> ).\n\
      269:             <span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-keyword kw\">false</span> )\n\
      270:         <span class=\"ruby-ivar\">@config</span>.<span class=\"ruby-identifier\">should_ignore_missing</span>\n\
      271:         <span class=\"ruby-ivar\">@template_factory</span> = <span class=\"ruby-identifier\">flexmock</span>( <span class=\"ruby-value str\">&quot;mock template factory&quot;</span> )\n\
      272: \n\
      273:         <span class=\"ruby-ivar\">@applet</span> = <span class=\"ruby-ivar\">@appletclass</span>.<span class=\"ruby-identifier\">new</span>( <span class=\"ruby-ivar\">@config</span>, <span class=\"ruby-ivar\">@template_factory</span>, <span class=\"ruby-node\">&quot;#{@appletname}&quot;</span> )\n\
      274:     \n\
      275:         <span class=\"ruby-ivar\">@delegate_behavior</span> = <span class=\"ruby-keyword kw\">nil</span>\n\
      276:         <span class=\"ruby-ivar\">@delegate_should_be_called</span> = <span class=\"ruby-keyword kw\">true</span>\n\
      277:         <span class=\"ruby-ivar\">@delegate_called</span> = <span class=\"ruby-keyword kw\">false</span>\n\
      278:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Set up a test with some useful test objects
      </p>
    params: ()
  - visibility: public
    aref: M000429
    name: setup_fixtured_request
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 422</span>\n\
      422:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">setup_fixtured_request</span>( <span class=\"ruby-identifier\">action</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> )\n\
      423:         <span class=\"ruby-identifier\">uri</span> = <span class=\"ruby-value str\">'/'</span> <span class=\"ruby-operator\">+</span> <span class=\"ruby-constant\">File</span>.<span class=\"ruby-identifier\">join</span>( <span class=\"ruby-ivar\">@appletname</span>, <span class=\"ruby-identifier\">action</span>.<span class=\"ruby-identifier\">to_s</span> )\n\
      424:         <span class=\"ruby-identifier\">req</span> = <span class=\"ruby-constant\">Apache</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">Request</span>.<span class=\"ruby-identifier\">new</span>( <span class=\"ruby-identifier\">uri</span> )\n\
      425: \n\
      426:         <span class=\"ruby-identifier\">params</span> = <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">last</span>.<span class=\"ruby-identifier\">is_a?</span>( <span class=\"ruby-constant\">Hash</span> ) <span class=\"ruby-operator\">?</span> <span class=\"ruby-identifier\">args</span>.<span class=\"ruby-identifier\">pop</span> <span class=\"ruby-operator\">:</span> {}\n\
      427:         <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-value str\">&quot;Parameters hash set to: %p&quot;</span> <span class=\"ruby-operator\">%</span> [<span class=\"ruby-identifier\">params</span>]\n\
      428:         <span class=\"ruby-identifier\">req</span>.<span class=\"ruby-identifier\">paramtable</span> = <span class=\"ruby-identifier\">params</span>\n\
      429: \n\
      430:         <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-value str\">&quot;Request is: %p&quot;</span> <span class=\"ruby-operator\">%</span> [<span class=\"ruby-identifier\">req</span>]\n\
      431:         <span class=\"ruby-comment cmt\">#txn = Arrow::Transaction.new( req, @config, nil )</span>\n\
      432:         <span class=\"ruby-identifier\">txn</span> = <span class=\"ruby-identifier\">flexmock</span>( <span class=\"ruby-value str\">&quot;transaction&quot;</span> )\n\
      433:         <span class=\"ruby-identifier\">txn</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:request</span> ).\n\
      434:             <span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-identifier\">req</span> ).<span class=\"ruby-identifier\">zero_or_more_times</span>\n\
      435:         <span class=\"ruby-identifier\">txn</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:vargs=</span> ).\n\
      436:             <span class=\"ruby-identifier\">with</span>( <span class=\"ruby-constant\">Arrow</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">FormValidator</span> ).<span class=\"ruby-identifier\">zero_or_more_times</span>\n\
      437:         \n\
      438:         <span class=\"ruby-identifier\">vargs</span> = <span class=\"ruby-identifier\">flexmock</span>( <span class=\"ruby-value str\">&quot;form validator&quot;</span> )\n\
      439:         <span class=\"ruby-identifier\">txn</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:vargs</span> ).\n\
      440:             <span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-identifier\">vargs</span> ).\n\
      441:             <span class=\"ruby-identifier\">zero_or_more_times</span>\n\
      442:         <span class=\"ruby-identifier\">vargs</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:[]</span> ).<span class=\"ruby-identifier\">zero_or_more_times</span>\n\
      443:         \n\
      444:         <span class=\"ruby-identifier\">debug_msg</span> <span class=\"ruby-value str\">&quot;Transaction is: %p&quot;</span> <span class=\"ruby-operator\">%</span> [<span class=\"ruby-identifier\">txn</span>]\n\
      445:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">req</span>, <span class=\"ruby-identifier\">vargs</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span>\n\
      446:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Set up faked request and transaction objects for the given <tt>action</tt>,
      using the given <tt>args</tt> as REST-style arguments, and/or query
      arguments if the last element is a Hash.
      </p>
    params: ( action, *args )
  - visibility: public
    aref: M000426
    name: should_delegate
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 393</span>\n\
      393:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">should_delegate</span>( <span class=\"ruby-operator\">&amp;</span><span class=\"ruby-identifier\">block</span> )\n\
      394:         <span class=\"ruby-ivar\">@delegate_should_be_called</span> = <span class=\"ruby-keyword kw\">true</span>\n\
      395:         <span class=\"ruby-ivar\">@delegate_behavior</span> = <span class=\"ruby-identifier\">block</span> <span class=\"ruby-operator\">||</span> \n\
      396:             <span class=\"ruby-identifier\">method</span>( <span class=\"ruby-identifier\">:default_delegation_behavior</span> ).<span class=\"ruby-identifier\">to_proc</span>\n\
      397:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      The default delegate block &#8212; call this from within your <a
      href="AppletTestCase.html#M000425">#with_fixtured_delegation</a> block if
      the applet under test should delegate to the next applet in the chain.
      </p>
    params: ( &amp;block )
  - visibility: public
    aref: M000430
    name: should_load_template
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 452</span>\n\
      452:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">should_load_template</span>( <span class=\"ruby-identifier\">key</span> )\n\
      453:         <span class=\"ruby-identifier\">tname</span> = <span class=\"ruby-ivar\">@applet</span>.<span class=\"ruby-identifier\">signature</span>.<span class=\"ruby-identifier\">templates</span>[ <span class=\"ruby-identifier\">key</span> ] <span class=\"ruby-keyword kw\">or</span>\n\
      454:             <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">Test</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">Unit</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">AssertionFailedError</span>.<span class=\"ruby-identifier\">new</span>(\n\
      455:                 <span class=\"ruby-node\">&quot;Expected applet to load the '#{key.inspect}' template\\n&quot;</span> <span class=\"ruby-operator\">+</span>\n\
      456:                 <span class=\"ruby-value str\">&quot;but there was no such template registered by the application.&quot;</span> )\n\
      457:         \n\
      458:         <span class=\"ruby-identifier\">mock_template</span> = <span class=\"ruby-identifier\">flexmock</span>( <span class=\"ruby-node\">&quot;#{key.inspect} template&quot;</span>)\n\
      459:         <span class=\"ruby-ivar\">@template_factory</span>.<span class=\"ruby-identifier\">should_receive</span>( <span class=\"ruby-identifier\">:get_template</span> ).\n\
      460:             <span class=\"ruby-identifier\">with</span>( <span class=\"ruby-identifier\">tname</span> ).<span class=\"ruby-identifier\">and_return</span>( <span class=\"ruby-identifier\">mock_template</span> ).<span class=\"ruby-identifier\">at_least</span>.<span class=\"ruby-identifier\">once</span>\n\
      461:         <span class=\"ruby-identifier\">mock_template</span>.<span class=\"ruby-identifier\">should_ignore_missing</span>\n\
      462: \n\
      463:         <span class=\"ruby-keyword kw\">yield</span>( <span class=\"ruby-identifier\">mock_template</span> ) <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">block_given?</span>\n\
      464:         \n\
      465:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">mock_template</span>\n\
      466:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Assert that the current action should load the template associated with the
      given <tt>key</tt>, and passes a mock template object to the given block
      for further specification.
      </p>
    params: ( key ) {|mock_template| ...}
  - visibility: public
    aref: M000427
    name: should_not_delegate
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 403</span>\n\
      403:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">should_not_delegate</span>( <span class=\"ruby-operator\">&amp;</span><span class=\"ruby-identifier\">block</span> )\n\
      404:         <span class=\"ruby-ivar\">@delegate_should_be_called</span> = <span class=\"ruby-keyword kw\">false</span>\n\
      405:         <span class=\"ruby-ivar\">@delegate_behavior</span> = <span class=\"ruby-identifier\">block</span> <span class=\"ruby-operator\">||</span> \n\
      406:             <span class=\"ruby-identifier\">method</span>( <span class=\"ruby-identifier\">:default_delegation_behavior</span> ).<span class=\"ruby-identifier\">to_proc</span>\n\
      407:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Negated delegate block &#8212; call this at the end of your <a
      href="AppletTestCase.html#M000425">#with_fixtured_delegation</a> block if
      the applet under test should <b>not</b> delegate to the next applet in the
      chain.
      </p>
    params: ( &amp;block )
  - visibility: public
    aref: M000424
    name: with_fixtured_action
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 343</span>\n\
      343:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">with_fixtured_action</span>( <span class=\"ruby-identifier\">action</span>=<span class=\"ruby-keyword kw\">nil</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span>, <span class=\"ruby-operator\">&amp;</span><span class=\"ruby-identifier\">block</span> )\n\
      344:         <span class=\"ruby-ivar\">@action</span> = <span class=\"ruby-identifier\">action</span>\n\
      345:         <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">req</span>, <span class=\"ruby-identifier\">vargs</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> = <span class=\"ruby-identifier\">setup_fixtured_request</span>( <span class=\"ruby-identifier\">action</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> )\n\
      346:         \n\
      347:         <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">block</span>.<span class=\"ruby-identifier\">arity</span> <span class=\"ruby-operator\">==</span> <span class=\"ruby-value\">3</span>\n\
      348:             <span class=\"ruby-identifier\">block</span>.<span class=\"ruby-identifier\">call</span>( <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">req</span>, <span class=\"ruby-identifier\">vargs</span> )\n\
      349:         <span class=\"ruby-keyword kw\">else</span>\n\
      350:             <span class=\"ruby-identifier\">block</span>.<span class=\"ruby-identifier\">call</span>( <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">req</span> )\n\
      351:         <span class=\"ruby-keyword kw\">end</span>\n\
      352:         \n\
      353:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-ivar\">@applet</span>.<span class=\"ruby-identifier\">run</span>( <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">action</span>.<span class=\"ruby-identifier\">to_s</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> )\n\
      354:     <span class=\"ruby-keyword kw\">ensure</span>\n\
      355:         <span class=\"ruby-ivar\">@action</span> = <span class=\"ruby-keyword kw\">nil</span>\n\
      356:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Set up faked request and transaction objects, yield to the given block with
      them, then <a href="AppletTestCase.html#M000417">run</a> the applet under
      test with them when the block returns.
      </p>
    params: ( action=nil, *args, &amp;block )
  - visibility: public
    aref: M000425
    name: with_fixtured_delegation
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 364</span>\n\
      364:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">with_fixtured_delegation</span>( <span class=\"ruby-identifier\">chain</span>=[], <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span>, <span class=\"ruby-operator\">&amp;</span><span class=\"ruby-identifier\">block</span> )\n\
      365:         <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">req</span>, <span class=\"ruby-identifier\">vargs</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> = <span class=\"ruby-identifier\">setup_fixtured_request</span>( <span class=\"ruby-value str\">&quot;delegated_action&quot;</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> )\n\
      366: \n\
      367:         <span class=\"ruby-comment cmt\"># Set delegation expectation</span>\n\
      368:         <span class=\"ruby-ivar\">@delegate_behavior</span> <span class=\"ruby-operator\">||=</span> <span class=\"ruby-identifier\">should_delegate</span>()\n\
      369: \n\
      370:         <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">block</span>.<span class=\"ruby-identifier\">arity</span> <span class=\"ruby-operator\">==</span> <span class=\"ruby-value\">3</span>\n\
      371:             <span class=\"ruby-identifier\">block</span>.<span class=\"ruby-identifier\">call</span>( <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">req</span>, <span class=\"ruby-identifier\">vargs</span> )\n\
      372:         <span class=\"ruby-keyword kw\">else</span>\n\
      373:             <span class=\"ruby-identifier\">block</span>.<span class=\"ruby-identifier\">call</span>( <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">req</span> )\n\
      374:         <span class=\"ruby-keyword kw\">end</span>\n\
      375:         \n\
      376:         <span class=\"ruby-identifier\">rval</span> = <span class=\"ruby-ivar\">@applet</span>.<span class=\"ruby-identifier\">delegate</span>( <span class=\"ruby-identifier\">txn</span>, <span class=\"ruby-identifier\">chain</span>, <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span>, <span class=\"ruby-operator\">&amp;</span><span class=\"ruby-ivar\">@delegate_behavior</span> )\n\
      377:         \n\
      378:         <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-ivar\">@delegate_should_be_called</span>\n\
      379:             <span class=\"ruby-identifier\">assert</span> <span class=\"ruby-ivar\">@delegate_called</span>,\n\
      380:                 <span class=\"ruby-value str\">&quot;delegate applet was never called&quot;</span> \n\
      381:         <span class=\"ruby-keyword kw\">else</span>\n\
      382:             <span class=\"ruby-identifier\">assert</span> <span class=\"ruby-operator\">!</span><span class=\"ruby-ivar\">@delegate_called</span>,\n\
      383:                 <span class=\"ruby-value str\">&quot;delegate applet was called unexpectedly&quot;</span>\n\
      384:         <span class=\"ruby-keyword kw\">end</span>\n\
      385: \n\
      386:         <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-identifier\">rval</span>\n\
      387:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Set up a faked request and transaction object, yield to the given block
      with them, and then call the #delegate method of the applet under test.
      Unless otherwise indicated (via a call to <a
      href="AppletTestCase.html#M000427">#should_not_delegate</a>), the
      expectation will be set up that the applet under test should call its
      delegate.
      </p>
    params: ( chain=[], *args, &amp;block )
  category: Instance
  type: Public
- methods: 
  - visibility: protected
    aref: M000415
    name: initialize
    sourcecode: "     <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/applettestcase.rb, line 241</span>\n\
      241:     <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">initialize</span>( <span class=\"ruby-operator\">*</span><span class=\"ruby-identifier\">args</span> ) <span class=\"ruby-comment cmt\"># :notnew:</span>\n\
      242:         <span class=\"ruby-identifier\">throw</span> <span class=\"ruby-identifier\">:invalid_test</span> <span class=\"ruby-keyword kw\">unless</span> <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">class</span>.<span class=\"ruby-identifier\">appletclass</span>\n\
      243:         <span class=\"ruby-keyword kw\">super</span>\n\
      244:     <span class=\"ruby-keyword kw\">end</span>"
    m_desc: |-
      <p>
      Check to be sure an applet has been associated before instantiation.
      </p>
    params: ( *args )
  category: Instance
  type: Protected

sectitle

--- 

constants

--- 
- name: APPLET_PATH
  desc: |+
    
    The default path to the directory where applets live
    
  value: Pathname.new( $0 ).expand_path.dirname + &quot;applets&quot;
- name: AnsiAttributes
  desc: |+
    
    Set some ANSI escape code constants (Shamelessly stolen from Perl&#8216;s
    Term::ANSIColor by Russ Allbery &lt;rra@stanford.edu&gt; and Zenin
    &lt;zenin@best.com&gt;
    
  value: "{         'clear'      =&gt; 0,         'reset'      =&gt; 0,         'bold'       =&gt; 1,         'dark'       =&gt; 2,         'underline'  =&gt; 4,         'underscore' =&gt; 4,         'blink'      =&gt; 5,         'reverse'    =&gt; 7,         'concealed'  =&gt; 8,          'black'      =&gt; 30,   'on_black'   =&gt; 40,          'red'        =&gt; 31,   'on_red'     =&gt; 41,          'green'      =&gt; 32,   'on_green'   =&gt; 42,          'yellow'     =&gt; 33,   'on_yellow'  =&gt; 43,          'blue'       =&gt; 34,   'on_blue'    =&gt; 44,          'magenta'    =&gt; 35,   'on_magenta' =&gt; 45,          'cyan'       =&gt; 36,   'on_cyan'    =&gt; 46,          'white'      =&gt; 37,   'on_white'   =&gt; 47"

[Validate]

Generated with the Darkfish Rdoc Generator.