1 package com.sri.emo.wizard.completion;
2
3 import com.jcorporate.expresso.services.test.TestSystemInitializer;
4 import com.sri.emo.test.DatabaseTestFixture;
5 import com.sri.emo.test.EmoTestSuite;
6 import com.sri.emo.wizard.Wizard;
7 import com.sri.emo.wizard.WizardException;
8 import com.sri.emo.wizard.WizardPage;
9 import com.sri.emo.wizard.completion.persistence.CompletionDBObjConverterImpl;
10 import com.sri.emo.wizard.completion.persistence.ExpressoCompletionRepository;
11 import com.sri.emo.wizard.defaults.EmoWizardPage;
12 import junit.framework.TestCase;
13 import com.jcorporate.expresso.core.security.SuperUser;
14 import com.jcorporate.expresso.core.registry.MutableRequestRegistry;
15 import com.sri.emo.wizard.PageMetadata;
16
17 /***
18 * Tests all the various parts of the Emo Completion Factory.
19 * @author Michael Rimov
20 * @version 1.0
21 */
22 public class TestEmoCompletionFactory extends TestCase {
23
24 private DatabaseTestFixture databaseFixture = null;
25
26
27 private EmoCompletionFactory factory;
28
29
30 public TestEmoCompletionFactory() {
31 super();
32 try {
33 TestSystemInitializer.setUp();
34 new MutableRequestRegistry(TestSystemInitializer.getTestContext(), SuperUser.INSTANCE);
35 } catch (Exception ex) {
36 throw new RuntimeException("Error setting things up",ex);
37 }
38 }
39
40
41 protected void setUp() throws Exception {
42 super.setUp();
43
44 databaseFixture = new DatabaseTestFixture(TestSystemInitializer.getTestContext(),
45 EmoTestSuite.class.getResourceAsStream("WizardTestData.xml"));
46 databaseFixture.setUp();
47
48 factory = new EmoCompletionFactory(new ExpressoCompletionRepository(new CompletionDBObjConverterImpl()));
49
50 }
51
52 protected void tearDown() throws Exception {
53 databaseFixture.tearDown();
54 databaseFixture = null;
55 factory = null;
56 super.tearDown();
57 }
58
59 public static final int PLAY_GEORGE_LUCAS = 15;
60
61 private static final Integer PAGE_WITH_PICKLIST = new Integer(6);
62 public void testBuildWizardStepWithPickListGetsMenu() throws WizardException {
63 factory.setWizardId(PLAY_GEORGE_LUCAS);
64 Wizard wiz = factory.buildWizard();
65 assertNotNull(wiz);
66 WizardPage onePage = wiz.getPageById(PAGE_WITH_PICKLIST);
67 assertNotNull(onePage.getMenu());
68 assertTrue(onePage.getMenu().length > 0);
69 assertTrue(onePage.getMetadata().isEntryRequired() == false);
70 }
71
72
73 private static final Integer PAGE_WITH_FREETEXT = new Integer(4);
74 public void testBuildWizardStepWithFreeEntryGetsTextBox() throws WizardException {
75 factory.setWizardId(PLAY_GEORGE_LUCAS);
76 Wizard wiz = factory.buildWizard();
77 assertNotNull(wiz);
78 WizardPage onePage = wiz.getPageById(PAGE_WITH_FREETEXT);
79 assertNull(onePage.getMenu());
80 assertTrue(onePage.getMetadata().isEntryRequired() == false);
81 assertTrue(onePage instanceof EmoWizardPage);
82 }
83
84
85 private static final Integer PAGE_WITH_RELATIONS = new Integer(7);
86 public void testBuildWizardStepWithRelationsGetsCheckboxes() throws WizardException {
87 factory.setWizardId(PLAY_GEORGE_LUCAS);
88 Wizard wiz = factory.buildWizard();
89 WizardPage onePage = wiz.getPageById(PAGE_WITH_RELATIONS);
90 assertNotNull(onePage);
91 assertNull(onePage.getMenu());
92 assertTrue (onePage instanceof RelationWizardPage);
93
94 RelationWizardPage relationPage = (RelationWizardPage)onePage;
95 RelationPageMetadata metadata = relationPage.getRelationPageMetadata();
96 assertNotNull(metadata);
97 assertNotNull(metadata.getMinEntries());
98 assertNotNull(metadata.getMaxEntries());
99 assertEquals(1, metadata.getMinEntries().intValue());
100 assertEquals(3, metadata.getMaxEntries().intValue());
101 }
102
103 private static final Integer PAGE_WITH_MULTI_ATTRIBUTES = new Integer(8);
104 public void testBuildWizardStepWtihMultipleAttributes() throws WizardException {
105 factory.setWizardId(PLAY_GEORGE_LUCAS);
106 Wizard wiz = factory.buildWizard();
107 WizardPage onePage = wiz.getPageById(PAGE_WITH_MULTI_ATTRIBUTES);
108
109 assertNotNull(onePage);
110 assertTrue(onePage instanceof EmoWizardPage);
111 PageMetadata pageMetadata = onePage.getMetadata();
112 assertTrue(pageMetadata instanceof MultiEntryMetadata);
113 assertEquals("MultiAttributeWizardEntry", pageMetadata.getViewId());
114 assertEquals(true, pageMetadata.isHasEntry());
115 MultiEntryMetadata multiMeta = (MultiEntryMetadata)pageMetadata;
116 assertEquals(multiMeta.getMinEntries().intValue(),1);
117 assertEquals(multiMeta.getMaxEntries().intValue(),7);
118
119
120 }
121
122 }