View Javadoc

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 //		assertFlowExecutionEnded();
112 //		assertFlowExecutionOutcomeEquals("created");
113 	}
114 }