1 package org.cateproject.controller.name;
2
3 import java.util.List;
4 import java.util.UUID;
5
6 import org.cateproject.controller.flow.action.name.EditAction;
7 import org.easymock.EasyMock;
8 import org.junit.BeforeClass;
9 import org.junit.Ignore;
10 import org.springframework.binding.message.MessageContext;
11 import org.springframework.webflow.config.FlowDefinitionResource;
12 import org.springframework.webflow.config.FlowDefinitionResourceFactory;
13 import org.springframework.webflow.core.collection.LocalAttributeMap;
14 import org.springframework.webflow.core.collection.MutableAttributeMap;
15 import org.springframework.webflow.test.MockExternalContext;
16 import org.springframework.webflow.test.MockFlowBuilderContext;
17 import org.springframework.webflow.test.execution.AbstractXmlFlowExecutionTests;
18
19 import eu.etaxonomy.cdm.api.service.INameService;
20 import eu.etaxonomy.cdm.api.service.ITermService;
21 import eu.etaxonomy.cdm.api.service.pager.Pager;
22 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
23 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
24 import eu.etaxonomy.cdm.model.name.BotanicalName;
25 import eu.etaxonomy.cdm.model.name.NonViralName;
26 import eu.etaxonomy.cdm.model.name.Rank;
27 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
28
29
30 @Ignore
31 public class CreateNameTest extends AbstractXmlFlowExecutionTests {
32
33 protected FlowDefinitionResource getResource(FlowDefinitionResourceFactory resourceFactory) {
34 return resourceFactory.createClassPathResource("/org/cateproject/controller/flows/name/edit.xml", CreateNameTest.class);
35 }
36
37 protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) {
38 builderContext.registerBean("editNameAction", editNameAction);
39 builderContext.registerBean("nameService", nameService);
40 builderContext.registerBean("termService", termService);
41 }
42
43 private EditAction editNameAction;
44 private INameService nameService;
45 private ITermService termService;
46 private NonViralName parent;
47 private UUID parentUuid = UUID.randomUUID();
48 private BotanicalName name;
49 private Pager<DefinedTermBase> ranks;
50
51 DefaultTermInitializer initalizer;
52
53 public void setUp() throws Exception {
54 if(initalizer == null) {
55 initalizer = new DefaultTermInitializer();
56 initalizer.initialize();
57 }
58 editNameAction = new EditAction();
59 nameService = EasyMock.createMock(INameService.class);
60 termService = EasyMock.createMock(ITermService.class);
61 editNameAction.setService(nameService);
62 editNameAction.setTermService(termService);
63 parent = BotanicalName.NewInstance(null);
64 ranks = EasyMock.createMock(Pager.class);
65 name = BotanicalName.NewInstance(Rank.SPECIES());
66 }
67
68 public void testStartFlow() {
69 MutableAttributeMap attributeMap = new LocalAttributeMap();
70 MockExternalContext context = new MockExternalContext();
71 attributeMap.put("related", parentUuid);
72 EasyMock.expect(nameService.load(EasyMock.eq(parentUuid))).andReturn(parent);
73 EasyMock.expect(termService.page(EasyMock.eq(Rank.class), (Integer)EasyMock.isNull(), (Integer)EasyMock.isNull(), EasyMock.isA(List.class), (List)EasyMock.isNull())).andReturn(ranks);
74
75 EasyMock.replay(nameService,termService,ranks);
76
77 this.startFlow(attributeMap,context);
78 EasyMock.verify(nameService,termService,ranks);
79
80 assertCurrentStateEquals("edit");
81 assertTrue(getRequiredFlowAttribute("name") instanceof TaxonNameBase);
82 }
83
84 public void testEnterValidName() {
85 setCurrentState("edit");
86 getFlowScope().put("name", name);
87 getFlowScope().put("isNewName", Boolean.FALSE);
88
89 EasyMock.replay(nameService);
90
91 MockExternalContext context = new MockExternalContext();
92 context.setEventId("proceed");
93
94 resumeFlow(context);
95 assertCurrentStateEquals("review");
96 EasyMock.verify(nameService);
97 }
98
99 public void testReviewName() {
100 setCurrentState("review");
101 getFlowScope().put("name", name);
102 MockExternalContext context = new MockExternalContext();
103 context.setEventId("confirm");
104
105 EasyMock.expect(nameService.saveOrUpdate(EasyMock.eq(name))).andReturn(name.getUuid());
106 EasyMock.replay(nameService);
107 try {
108 resumeFlow(context);
109 } catch(Exception e) {}
110 EasyMock.verify(nameService);
111
112
113 }
114 }