View Javadoc

1   package org.cateproject.service;
2   
3   import static org.junit.Assert.fail;
4   
5   import java.io.FileOutputStream;
6   import java.util.UUID;
7   
8   import org.junit.Before;
9   import org.junit.Ignore;
10  import org.junit.Test;
11  
12  import org.springframework.security.authentication.AuthenticationManager;
13  import org.springframework.security.authentication.TestingAuthenticationToken;
14  import org.springframework.security.core.Authentication;
15  import org.springframework.security.core.GrantedAuthority;
16  import org.springframework.security.core.context.SecurityContextHolder;
17  import org.springframework.security.core.context.SecurityContextImpl;
18  import org.unitils.dbunit.annotation.DataSet;
19  import org.unitils.dbunit.annotation.ExpectedDataSet;
20  import org.unitils.spring.annotation.SpringBeanByType;
21  
22  import eu.etaxonomy.cdm.api.service.IDescriptionService;
23  import eu.etaxonomy.cdm.api.service.INameService;
24  import eu.etaxonomy.cdm.api.service.ITaxonService;
25  import eu.etaxonomy.cdm.model.common.User;
26  import eu.etaxonomy.cdm.model.description.TaxonDescription;
27  import eu.etaxonomy.cdm.model.name.Rank;
28  import eu.etaxonomy.cdm.model.name.ZoologicalName;
29  import eu.etaxonomy.cdm.model.reference.WebPage;
30  import eu.etaxonomy.cdm.model.taxon.Taxon;
31  import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
32  
33  @Ignore
34  public class PublicationUsecaseTest extends CdmTransactionalIntegrationTest {
35  
36  	@SpringBeanByType
37  	private ITaxonService taxonService;
38  	
39  	@SpringBeanByType
40  	private INameService nameService;
41  	
42  	@SpringBeanByType
43  	private WebRevisionService webRevisionService;
44  	
45  	@SpringBeanByType
46  	private IDescriptionService descriptionService;
47  	
48  	@SpringBeanByType
49      private AuthenticationManager authenticationManager;
50  	
51  	private UUID parentUuid;  
52  	
53  	@Before
54  	public void setUp() {
55  		parentUuid = UUID.fromString("9bcd319a-2126-4e26-bd10-fac4706578d0");
56  		
57  		User user = User.NewInstance("ben","password");
58  		
59  		TestingAuthenticationToken token = new TestingAuthenticationToken(user, "password",  new GrantedAuthority[0]);
60  	    Authentication authentication = authenticationManager.authenticate(token);
61  	        
62  	    SecurityContextImpl secureContext = new SecurityContextImpl();
63  	    secureContext.setAuthentication(authentication);
64  	    SecurityContextHolder.setContext(secureContext);
65  	}
66  	
67  	@Test
68  	@DataSet("PublicationUsecaseTest.testAddNewTaxon.xml")
69  	@ExpectedDataSet
70  	public void testAddNewTaxon() {	
71  		Taxon parent = (Taxon)taxonService.find(parentUuid);
72  		assert parent != null : "Parent must not be null"; 
73  		
74  		try{
75  		    ZoologicalName name = ZoologicalName.NewInstance(Rank.SPECIES(), "Aus", null, "bus", null, null, null,null,null);
76  		    name.setAuthorshipCache("L. 1758");
77  
78  		    nameService.save(name);
79  		
80  		    Taxon taxon = Taxon.NewInstance(name, webRevisionService.getWebRevision().getCurrentConsensus());
81  		
82  		    saveTaxon(taxon, parent);
83  		} catch(Exception e) {
84  			logger.error(e);
85  	    	for(StackTraceElement ste : e.getStackTrace()) {
86  	    		   logger.error(ste);
87  	    	}
88  			fail("No exception expected here");
89  		}
90  		setComplete();
91  		endTransaction();
92  		try {
93  		  printDataSet(new FileOutputStream("test.xml"));
94  		} catch(Exception e) {
95  			
96  		}
97  	}
98  	
99  	@Test
100 	@DataSet("PublicationUsecaseTest.testAddAnotherTaxon.xml")
101 	@ExpectedDataSet
102 	public void testAddAnotherTaxon() {
103 		Taxon parent = (Taxon)taxonService.find(parentUuid);
104 		assert parent != null : "Parent must not be null"; 
105 		
106 		try{
107 		    ZoologicalName name = ZoologicalName.NewInstance(Rank.SPECIES(), "Aus", null, "ceus", null, null, null,null,null);
108 		    name.setAuthorshipCache("L. 1758");
109 
110 		    nameService.save(name);
111 		
112 		    Taxon taxon = Taxon.NewInstance(name, webRevisionService.getWebRevision().getCurrentConsensus());
113 		
114 		    saveTaxon(taxon, parent);
115 		} catch(Exception e) {
116 			logger.error(e);
117 	    	for(StackTraceElement ste : e.getStackTrace()) {
118 	    		   logger.error(ste);
119 	    	}
120 			fail("No exception expected here");
121 		}
122 		setComplete();
123 		endTransaction();
124 		
125 	}
126 	
127 	@Test
128 	@DataSet("PublicationUsecaseTest.testPublishDataSet.xml")
129 	@ExpectedDataSet
130 	public void testPublishDataSet() {
131 		WebPage currentConsensus = webRevisionService.getWebRevision().getCurrentConsensus();
132 		assert currentConsensus != null : "WebPage cannot be null";
133 		try{
134 		    webRevisionService.publish();
135 		} catch(Exception e) {
136 			logger.error(e);
137 	    	for(StackTraceElement ste : e.getStackTrace()) {
138 	    		   logger.error(ste);
139 	    	}
140 			fail("No exception expected here");
141 		}
142 		setComplete();
143 		endTransaction();
144 	}
145 	
146 	public void saveTaxon(Taxon taxon, Taxon parent) {
147 			taxon.setSec(webRevisionService.getWebRevision().getCurrentConsensus());
148 			taxonService.save(taxon);
149 			TaxonDescription description = TaxonDescription.NewInstance(taxon);
150 			if(webRevisionService.getWebRevision().getRootArea() != null) {
151               description.addGeoScope(webRevisionService.getWebRevision().getRootArea());
152 			}
153 			descriptionService.save(description);
154 			parent.addTaxonomicChild(taxon, null, null);
155 			
156 			taxonService.update(parent);
157 	}
158 }
159