1   package com.sri.emo.wizard.selection.management;
2   
3   import com.jcorporate.expresso.core.controller.Block;
4   import com.jcorporate.expresso.core.controller.ControllerException;
5   import com.jcorporate.expresso.core.controller.ExpressoRequest;
6   import com.jcorporate.expresso.core.controller.ExpressoResponse;
7   import com.jcorporate.expresso.core.controller.Input;
8   import com.jcorporate.expresso.core.controller.NonHandleableException;
9   import com.jcorporate.expresso.core.db.DBException;
10  import com.sri.emo.dbobj.WizStep;
11  import com.sri.emo.test.DatabaseTestFixture;
12  import com.sri.emo.test.StateHandlerTestFixture;
13  import junit.framework.TestCase;
14  
15  /***
16   * @author Michael Rimov
17   *
18   */
19  public class TestPromptInstructions extends TestCase {
20      private PromptInstructions promptInstructions = null;
21      StateHandlerTestFixture stateHandlerTestFixture;
22  
23      protected void setUp() throws Exception {
24          super.setUp();
25          promptInstructions = null;
26          stateHandlerTestFixture = new StateHandlerTestFixture();
27          stateHandlerTestFixture.setUp();
28      }
29  
30      protected void tearDown() throws Exception {
31          stateHandlerTestFixture.tearDown();
32  
33          promptInstructions = null;
34          stateHandlerTestFixture = null;
35          super.tearDown();
36      }
37  
38      public void testHandleRequestNewWizStep() throws DBException, ControllerException, NonHandleableException {
39          promptInstructions = new PromptInstructions(Integer.toString(DatabaseTestFixture.DEFAULT_WIZ_ID)
40                  , Integer.toString(DatabaseTestFixture.DEFAULT_WELCOME_STEP));
41  
42          ExpressoRequest request = stateHandlerTestFixture.getControllerRequest(DatabaseTestFixture.DEFAULT_WIZ_ID,DatabaseTestFixture.DEFAULT_WELCOME_STEP
43                  , PromptInstructions.STATE_NAME);
44          ExpressoResponse response = stateHandlerTestFixture.getControllerResponse(request);
45  
46          promptInstructions.handleRequest(request, response);
47  
48          assertTrue(response.getErrors() == null || response.getErrors().getErrorCount() == 0);
49          assertTrue(response.getBlock("wizstep") != null);
50          Block stepDef = response.getBlock("wizstep");
51          Input title = stepDef.getInput(WizStep.FLD_TITLE);
52          assertTrue(title != null);
53  
54          Input helptext = stepDef.getInput(WizStep.FLD_HELPTEXT);
55          assertTrue(helptext != null);
56  
57          Input directive = stepDef.getInput(WizStep.FLD_DIRECTIVE);
58          assertTrue(directive != null);
59      }
60  
61      public void testHandleRequestWithExistingWizStep() throws DBException, ControllerException, NonHandleableException {
62          promptInstructions = new PromptInstructions(Integer.toString(DatabaseTestFixture.DEFAULT_WIZ_ID)
63                  , Integer.toString(DatabaseTestFixture.DEFAULT_WELCOME_STEP));
64          ExpressoRequest request = stateHandlerTestFixture.getControllerRequest(12, PromptInstructions.STATE_NAME);
65          request.setParameter(WizStep.FLD_ID, Integer.toString(DatabaseTestFixture.DEFAULT_WELCOME_STEP));
66          request.setParameter(PromptInstructions.PARAM_INPUT_ID, "5");
67          ExpressoResponse response = stateHandlerTestFixture.getControllerResponse(request);
68  
69          promptInstructions.handleRequest(request, response);
70  
71          assertTrue(response.getErrors() == null || response.getErrors().getErrorCount() == 0);
72          assertTrue(response.getBlock("wizstep") != null);
73          Block stepDef = response.getBlock("wizstep");
74          Input title = stepDef.getInput(WizStep.FLD_TITLE);
75          assertTrue(title != null);
76          assertTrue("Welcome".equals(title.getDefaultValue()));
77  
78          Input helptext = stepDef.getInput(WizStep.FLD_HELPTEXT);
79          assertTrue(helptext != null);
80          assertTrue("This wizard will help you decide which movie you want to see.".equals(helptext.getDefaultValue()));
81  
82          Input directive = stepDef.getInput(WizStep.FLD_DIRECTIVE);
83          assertTrue(directive != null);
84          assertTrue("Click Next To Continue".equals(directive.getDefaultValue()));
85  
86      }
87  
88  }