Ticket #382: formatExecutionOrderUnitTests.patch

File formatExecutionOrderUnitTests.patch, 14.9 kB (added by cfgrok, 16 years ago)

Unit tests for request format execution order problem

  • ModelGlue/gesture/eventrequest/test/TestEventContext.cfc

     
    567567        <cfset ec = mg.handleRequest() /> 
    568568         
    569569        <cfset assertEquals( "home", ec.getInitialEventHandlerName(), "The requested event should be ""home"" " ) /> 
     570         
     571        <cfset structClear(url) /> 
    570572</cffunction> 
    571573 
    572574<cffunction name="testGetInitialEventHandlerNameForExplicitEvent" returntype="void" access="public"> 
     
    584586        <cfset ec = mg.handleRequest() /> 
    585587         
    586588        <cfset assertEquals( "test", ec.getInitialEventHandlerName(), "The requested event should be ""test"" " ) /> 
     589         
     590        <cfset structClear(url) /> 
    587591</cffunction> 
    588592 
    589593<!--- EVENT HANDLER EXTENSIBILITY TEST ---> 
     
    601605         
    602606        <cfset assertTrue( ec.exists("onRequestStart"), "The internal onRequestStart function was not invoked" ) /> 
    603607        <cfset assertTrue( ec.exists("customOnRequestStart"), "The custom onRequestStart function was not invoked" ) /> 
     608         
     609        <cfset structClear(url) /> 
     610</cffunction> 
     611 
     612<!--- FORMAT EXECUTION ORDER TESTS ---> 
     613<cffunction name="testExecutionOrderOfMessageBroadcastWithFormat" returntype="void" access="public"> 
     614        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     615        <cfset var loader = "" /> 
     616        <cfset var ec = "" /> 
     617         
     618        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     619        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     620         
     621        <cfset structClear(url) /> 
     622         
     623        <cfset url.event = "broadcastEvent" /> 
     624        <cfset url.requestFormat = "format" /> 
     625         
     626        <cfset ec = mg.handleRequest() /> 
     627         
     628        <cfset assertEquals( "format,none", ec.getValue("messageFormats"), "The message with the format of ""format"" should be broadcast first" ) /> 
     629         
     630        <cfset structClear(url) /> 
     631</cffunction> 
     632 
     633<cffunction name="testExecutionOrderOfMessageBroadcastWithFormatFromEventType" returntype="void" access="public"> 
     634        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     635        <cfset var loader = "" /> 
     636        <cfset var ec = "" /> 
     637         
     638        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     639        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     640         
     641        <cfset structClear(url) /> 
     642         
     643        <cfset url.event = "typedBroadcastEvent" /> 
     644        <cfset url.requestFormat = "format" /> 
     645         
     646        <cfset ec = mg.handleRequest() /> 
     647         
     648        <cfset assertEquals( "format,none", ec.getValue("messageFormats"), "The message with the format of ""format"" should be broadcast first" ) /> 
     649         
     650        <cfset structClear(url) /> 
     651</cffunction> 
     652 
     653<cffunction name="testExecutionOrderOfImplicitResultQueuedWithFormat" returntype="void" access="public"> 
     654        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     655        <cfset var loader = "" /> 
     656        <cfset var ec = "" /> 
     657         
     658        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     659        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     660         
     661        <cfset structClear(url) /> 
     662         
     663        <cfset url.event = "resultEvent" /> 
     664        <cfset url.requestFormat = "format" /> 
     665         
     666        <cfset ec = mg.handleRequest() /> 
     667         
     668        <cfset assertEquals( "format,none", ec.getValue("messageFormats"), "The message with the format of ""format"" should be broadcast first" ) /> 
     669         
     670        <cfset structClear(url) /> 
     671</cffunction> 
     672 
     673<cffunction name="testExecutionOrderOfImplicitResultQueuedWithFormatFromEventType" returntype="void" access="public"> 
     674        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     675        <cfset var loader = "" /> 
     676        <cfset var ec = "" /> 
     677         
     678        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     679        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     680         
     681        <cfset structClear(url) /> 
     682         
     683        <cfset url.event = "typedResultEvent" /> 
     684        <cfset url.requestFormat = "format" /> 
     685         
     686        <cfset ec = mg.handleRequest() /> 
     687         
     688        <cfset assertEquals( "format,none", ec.getValue("messageFormats"), "The message with the format of ""format"" should be broadcast first" ) /> 
     689         
     690        <cfset structClear(url) /> 
     691</cffunction> 
     692 
     693<cffunction name="testExecutionOrderOfNamedResultQueuedWithFormat" returntype="void" access="public"> 
     694        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     695        <cfset var loader = "" /> 
     696        <cfset var ec = "" /> 
     697         
     698        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     699        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     700         
     701        <cfset structClear(url) /> 
     702         
     703        <cfset url.event = "namedResultEvent" /> 
     704        <cfset url.requestFormat = "format" /> 
     705         
     706        <cfset ec = mg.handleRequest() /> 
     707         
     708        <cfset assertEquals( "format,none", ec.getValue("messageFormats"), "The message with the format of ""format"" should be broadcast first" ) /> 
     709         
     710        <cfset structClear(url) /> 
     711</cffunction> 
     712 
     713<cffunction name="testExecutionOrderOfNamedResultQueuedWithFormatFromEventType" returntype="void" access="public"> 
     714        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     715        <cfset var loader = "" /> 
     716        <cfset var ec = "" /> 
     717         
     718        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     719        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     720         
     721        <cfset structClear(url) /> 
     722         
     723        <cfset url.event = "typedNamedResultEvent" /> 
     724        <cfset url.requestFormat = "format" /> 
     725         
     726        <cfset ec = mg.handleRequest() /> 
     727         
     728        <cfset assertEquals( "format,none", ec.getValue("messageFormats"), "The message with the format of ""format"" should be broadcast first" ) /> 
     729         
     730        <cfset structClear(url) /> 
     731</cffunction> 
     732 
     733<cffunction name="testExecutionOrderOfViewQueuedWithFormat" returntype="void" access="public"> 
     734        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     735        <cfset var loader = "" /> 
     736        <cfset var ec = "" /> 
     737         
     738        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     739        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     740         
     741        <cfset structClear(url) /> 
     742         
     743        <cfset url.event = "viewEvent" /> 
     744        <cfset url.requestFormat = "format" /> 
     745         
     746        <cfset ec = mg.handleRequest() /> 
     747         
     748        <cfset assertEquals( "none", ec.getViewCollection().getFinalView(), "The view with the content of ""none"" should be the final view" ) /> 
     749         
     750        <cfset structClear(url) /> 
     751</cffunction> 
     752 
     753<cffunction name="testExecutionOrderOfViewQueuedWithFormatFromEventType" returntype="void" access="public"> 
     754        <cfset var mg = createModelGlue(this.coldspringPath) /> 
     755        <cfset var loader = "" /> 
     756        <cfset var ec = "" /> 
     757         
     758        <cfset loader = mg.getInternalBean("modelglue.ModuleLoaderFactory").create("XML") /> 
     759        <cfset loader.load(mg, "/ModelGlue/gesture/eventrequest/test/format/formatOrder.xml") /> 
     760         
     761        <cfset structClear(url) /> 
     762         
     763        <cfset url.event = "typedViewEvent" /> 
     764        <cfset url.requestFormat = "format" /> 
     765         
     766        <cfset ec = mg.handleRequest() /> 
     767         
     768        <cfset assertEquals( "none", ec.getViewCollection().getFinalView(), "The view with the content of ""none"" should be the final view" ) /> 
     769         
     770        <cfset structClear(url) /> 
    604771</cffunction> 
    605772 
    606773</cfcomponent> 
     774 No newline at end of file 
  • ModelGlue/gesture/eventrequest/test/format/FormatController.cfc

     
     1<cfcomponent output="false" extends="ModelGlue.gesture.controller.Controller"> 
     2 
     3<cffunction name="addNamedResult" access="public" output="false" returntype="void"> 
     4        <cfargument name="event" type="any" required="true" /> 
     5         
     6        <cfset arguments.event.addResult("target") /> 
     7</cffunction> 
     8 
     9<cffunction name="addFormatNamedResult" access="public" output="false" returntype="void"> 
     10        <cfargument name="event" type="any" required="true" /> 
     11         
     12        <cfset arguments.event.addResult("formatTarget") /> 
     13</cffunction> 
     14 
     15<cffunction name="message" access="public" output="false" returntype="void"> 
     16        <cfargument name="event" type="any" required="true" /> 
     17         
     18        <cfset var messageFormats = arguments.event.getValue("messageFormats") /> 
     19         
     20        <cfset messageFormats = listAppend(messageFormats, "none") /> 
     21         
     22        <cfset arguments.event.setValue("messageFormats", messageFormats) /> 
     23</cffunction> 
     24 
     25<cffunction name="formatMessage" access="public" output="false" returntype="void"> 
     26        <cfargument name="event" type="any" required="true" /> 
     27         
     28        <cfset var messageFormats = arguments.event.getValue("messageFormats") /> 
     29         
     30        <cfset messageFormats = listAppend(messageFormats, "format") /> 
     31         
     32        <cfset arguments.event.setValue("messageFormats", messageFormats) /> 
     33</cffunction> 
     34 
     35</cfcomponent> 
     36 No newline at end of file 
  • ModelGlue/gesture/eventrequest/test/format/formatOrder.xml

     
     1<modelglue> 
     2 
     3<config> 
     4 
     5        <setting name="viewMappings" value="/ModelGlue/gesture/eventrequest/test/format" /> 
     6 
     7</config> 
     8 
     9<controllers> 
     10 
     11        <controller id="FormatController" type="ModelGlue.gesture.eventrequest.test.format.FormatController"> 
     12                <message-listener message="addNamedResult" /> 
     13                <message-listener message="addFormatNamedResult" /> 
     14                <message-listener message="message" /> 
     15                <message-listener message="formatMessage" /> 
     16        </controller> 
     17 
     18</controllers> 
     19 
     20<event-types> 
     21 
     22        <event-type name="broadcastType"> 
     23                <before> 
     24                        <broadcasts format="format"> 
     25                                <message name="formatMessage" /> 
     26                        </broadcasts> 
     27                </before> 
     28        </event-type> 
     29 
     30        <event-type name="resultType"> 
     31                <before> 
     32                        <results format="format"> 
     33                                <result do="formatTargetEvent" /> 
     34                        </results> 
     35                </before> 
     36        </event-type> 
     37 
     38        <event-type name="namedResultType"> 
     39                <before> 
     40                        <broadcasts format="format"> 
     41                                <message name="addFormatNamedResult" /> 
     42                        </broadcasts> 
     43                </before> 
     44        </event-type> 
     45 
     46        <event-type name="viewType"> 
     47                <before> 
     48                        <views format="format"> 
     49                                <include name="view" template="formatView.cfm" /> 
     50                        </views> 
     51                </before> 
     52        </event-type> 
     53 
     54</event-types> 
     55 
     56<event-handlers> 
     57 
     58        <event-handler name="broadcastEvent"> 
     59                <broadcasts format="format"> 
     60                        <message name="formatMessage" /> 
     61                </broadcasts> 
     62                <broadcasts> 
     63                        <message name="message" /> 
     64                </broadcasts> 
     65        </event-handler> 
     66        <event-handler name="typedBroadcastEvent" type="broadcastType"> 
     67                <broadcasts> 
     68                        <message name="message" /> 
     69                </broadcasts> 
     70        </event-handler> 
     71 
     72        <event-handler name="resultEvent"> 
     73                <results format="format"> 
     74                        <result do="formatTargetEvent" /> 
     75                </results> 
     76                <results> 
     77                        <result do="targetEvent" /> 
     78                </results> 
     79        </event-handler> 
     80        <event-handler name="typedResultEvent" type="resultType"> 
     81                <results> 
     82                        <result do="targetEvent" /> 
     83                </results> 
     84        </event-handler> 
     85 
     86        <event-handler name="namedResultEvent"> 
     87                <broadcasts format="format"> 
     88                        <message name="addFormatNamedResult" /> 
     89                </broadcasts> 
     90                <broadcasts> 
     91                        <message name="addNamedResult" /> 
     92                </broadcasts> 
     93                <results> 
     94                        <result name="target" do="targetEvent" /> 
     95                        <result name="formatTarget" do="formatTargetEvent" /> 
     96                </results> 
     97        </event-handler> 
     98        <event-handler name="typedNamedResultEvent" type="namedResultType"> 
     99                <broadcasts> 
     100                        <message name="addNamedResult" /> 
     101                </broadcasts> 
     102                <results> 
     103                        <result name="target" do="targetEvent" /> 
     104                        <result name="formatTarget" do="formatTargetEvent" /> 
     105                </results> 
     106        </event-handler> 
     107 
     108        <event-handler name="targetEvent"> 
     109                <broadcasts> 
     110                        <message name="message" /> 
     111                </broadcasts> 
     112        </event-handler> 
     113        <event-handler name="formatTargetEvent"> 
     114                <broadcasts> 
     115                        <message name="formatMessage" /> 
     116                </broadcasts> 
     117        </event-handler> 
     118 
     119        <event-handler name="viewEvent"> 
     120                <views format="format"> 
     121                        <include name="view" template="formatView.cfm" /> 
     122                </views> 
     123                <views> 
     124                        <include name="view" template="view.cfm" /> 
     125                </views> 
     126        </event-handler> 
     127        <event-handler name="typedViewEvent" type="viewType"> 
     128                <views> 
     129                        <include name="view" template="view.cfm" /> 
     130                </views> 
     131        </event-handler> 
     132 
     133</event-handlers> 
     134 
     135</modelglue> 
     136 No newline at end of file 
  • ModelGlue/gesture/eventrequest/test/format/formatView.cfm

     
     1format 
     2 No newline at end of file 
  • ModelGlue/gesture/eventrequest/test/format/view.cfm

     
     1none 
     2 No newline at end of file 
  • ModelGlue/gesture/modules/internal/utility/test/TestUtilityModule.cfc

     
    3535        <cfset url.event = "eventHandlerWithEventTypeOfDisabledDebug" /> 
    3636        <cfset ec = mg.handleRequest() /> 
    3737        <cfset assertTrue( request.modelGlueSuppressDebugging IS true, "Disable Debug setting did not work when event type had modelglue.disableModelGlueDebugging broadcast ") /> 
     38        <cfset structClear(url) />       
    3839         
    3940        <!--- If we don't throw error, we made it. ---> 
    4041</cffunction> 
  • ModelGlue/gesture/test/TestModelGlue.cfc

     
    8080        <cfset assertTrue(context.getValue("someFormKey") eq "someFormValue", "form value not populated") /> 
    8181        <cfset assertTrue(context.getValue("someUrlKey") eq "someUrlValue", "form value not populated") /> 
    8282        <cfset assertTrue(context.getValue("conflictKey") eq "formConflictValue", "conflict value not recognized from form") /> 
    83                  
     83         
     84        <cfset structClear(url) /> 
     85        <cfset structClear(form) /> 
    8486</cffunction> 
    8587 
    8688<cffunction name="testPhase_StatefulRedirectPopulation" returntype="void" access="public"> 
     
    99101        <cfset assertTrue(context.getValue("preservedValueName") eq "preservedValue", "preserved value not populated") /> 
    100102        <cfset assertFalse(structKeyExists(session, "_modelgluePreservedState"), "preserved state not cleared") /> 
    101103        <cfset assertTrue(context.getValue("conflictKey") eq "formConflictValue", "conflict value not recognized from form") /> 
     104 
     105        <cfset structClear(form) /> 
     106        <cfset structClear(url) /> 
    102107</cffunction> 
    103108 
    104109</cfcomponent> 
     110 No newline at end of file