Test::Unit::TestCase
Test case class
(Not documented)
(Not documented)
(Not documented)
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
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
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
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 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
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 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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
--- SEC00023
--- ""
--- - name: appletclass rw: RW a_desc: "" - name: appletname rw: RW a_desc: "" - name: fixture_data rw: RW a_desc: ""
---
- 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\">"\\e[%sm"</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\">"Setting applet under test for testcase: %p"</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\">"Trying to load #{appletfile}"</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\">" Checking applet '#{klass.name.downcase}' =~ #{applet_pat}..."</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\">"Failed to load applet matching #{applet_pat}"</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\">"Applet under test is: #{self.appletclass}"</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\">"%sDEBUG>>> %s %s"</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\"># [ [<fields>], [<values1], [<values2>] ]</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 => <value1>}, {:field1 => <value2>} ]</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 ],
[ "title1", "desc1", Date.today ],
[ "title2", "desc2", Date.today-4 ],
]
</pre>
<p>
which is equivalent to:
</p>
<pre>
[
{ :title => "title1", :description => "desc1", :date => Date.today }
{ :title => "title1", :description => "desc1", :date => 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\">"session"</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‘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\">"-"</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\">"\\n"</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="-" )
- 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\"><<</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\">"\\n"</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\">"%s>>> %s <<<%s"</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‘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\">"%p: Setting up test for applet %p"</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\">"No applet defined for '#{self.class.name}'. Add "</span> <span class=\"ruby-operator\">+</span>\n\
257: <span class=\"ruby-value str\">"'applet_under_test :<appletname>' to correct this."</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\">"mock config"</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\">"mock"</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\">"mock template factory"</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\">"#{@appletname}"</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\">"Parameters hash set to: %p"</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\">"Request is: %p"</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\">"transaction"</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\">"form validator"</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\">"Transaction is: %p"</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\">&</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 — 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: ( &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\">"Expected applet to load the '#{key.inspect}' template\\n"</span> <span class=\"ruby-operator\">+</span>\n\
456: <span class=\"ruby-value str\">"but there was no such template registered by the application."</span> )\n\
457: \n\
458: <span class=\"ruby-identifier\">mock_template</span> = <span class=\"ruby-identifier\">flexmock</span>( <span class=\"ruby-node\">"#{key.inspect} template"</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\">&</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 — 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: ( &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\">&</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, &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\">&</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\">"delegated_action"</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\">&</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\">"delegate applet was never called"</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\">"delegate applet was called unexpectedly"</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, &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
---
---
- name: APPLET_PATH
desc: |+
The default path to the directory where applets live
value: Pathname.new( $0 ).expand_path.dirname + "applets"
- name: AnsiAttributes
desc: |+
Set some ANSI escape code constants (Shamelessly stolen from Perl‘s
Term::ANSIColor by Russ Allbery <rra@stanford.edu> and Zenin
<zenin@best.com>
value: "{ 'clear' => 0, 'reset' => 0, 'bold' => 1, 'dark' => 2, 'underline' => 4, 'underscore' => 4, 'blink' => 5, 'reverse' => 7, 'concealed' => 8, 'black' => 30, 'on_black' => 40, 'red' => 31, 'on_red' => 41, 'green' => 32, 'on_green' => 42, 'yellow' => 33, 'on_yellow' => 43, 'blue' => 34, 'on_blue' => 44, 'magenta' => 35, 'on_magenta' => 45, 'cyan' => 36, 'on_cyan' => 46, 'white' => 37, 'on_white' => 47"
Generated with the Darkfish Rdoc Generator.