GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / test / groovy / org / codehaus / groovy / grails / webflow / engine / builder / FlowBuilderExecutionTests.groovy
blob45d9db2bc93793050d85c80eda85536bcb17e061
1 package org.codehaus.groovy.grails.webflow.engine.builder;
3 import org.springframework.webflow.engine.*
4 import org.springframework.webflow.test.execution.*
5 import org.springframework.webflow.definition.*
7 class FlowBuilderExecutionTests extends AbstractFlowExecutionTests{
9 void setUp() {
10 ExpandoMetaClass.enableGlobally()
13 void tearDown() {
14 ExpandoMetaClass.disableGlobally()
17 def searchService = [executeSearch:{["foo", "bar"]}]
18 def params = [q:"foo"]
20 void testFlowExecution() {
21 grails.util.GrailsWebUtil.bindMockWebRequest()
22 def viewSelection = startFlow()
23 assert viewSelection
24 assertEquals "displaySearchForm", viewSelection.viewName
25 viewSelection = signalEvent( "submit" )
26 assert viewSelection
27 assertEquals "displayResults", viewSelection.viewName
28 assertEquals( ["foo", "bar"],viewSelection.model.results)
29 viewSelection = signalEvent("return")
30 assertEquals "displaySearchForm", viewSelection.viewName
33 void testFlowExecutionException() {
34 grails.util.GrailsWebUtil.bindMockWebRequest()
35 searchService.executeSearch = { throw new FooException() }
37 def viewSelection = startFlow()
38 assert viewSelection
39 assertEquals "displaySearchForm", viewSelection.viewName
40 viewSelection = signalEvent( "submit" )
41 assert viewSelection
42 assertEquals "errorView", viewSelection.viewName
46 FlowDefinition getFlowDefinition() {
48 new FlowBuilder("myFlow").flow {
49 displaySearchForm {
50 on("submit").to "executeSearch"
52 executeSearch {
53 action {
54 [results:searchService.executeSearch(params.q)]
56 on("success").to "displayResults"
57 on("error").to "displaySearchForm"
58 on(FooException).to "errorView"
60 displayResults {
61 on("return").to "displaySearchForm"
63 errorView()
67 class FooException extends Exception {}