View Javadoc

1   /*
2    * Copyright 2007 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 1.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.kns.document;
17  
18  import java.lang.reflect.InvocationTargetException;
19  import java.util.List;
20  
21  import org.junit.Test;
22  import org.kuali.rice.kew.exception.WorkflowException;
23  import org.kuali.rice.kns.UserSession;
24  import org.kuali.rice.kns.service.KNSServiceLocator;
25  import org.kuali.rice.kns.util.GlobalVariables;
26  import org.kuali.rice.kns.util.KNSConstants;
27  import org.kuali.rice.test.data.UnitTestData;
28  import org.kuali.rice.test.data.UnitTestSql;
29  import org.kuali.test.KNSTestCase;
30  import org.kuali.test.KNSWithTestSpringContext;
31  
32  import edu.sampleu.travel.bo.AttachmentSample;
33  import edu.sampleu.travel.bo.MultiAttachmentSample;
34  
35  
36  /**
37   * This class implements a unit test for a maintenance document
38   * with multiple attachments. The need for this test is tracked 
39   * under the JIRA ticket KULRICE-5144. 
40   * 
41   * @link https://jira.kuali.org/browse/KULRICE-5144
42   * 
43   * @author Kuali Rice Team (rice.collab@kuali.org)
44   *
45   */
46  
47  @KNSWithTestSpringContext
48  public class MultipleAttachmentsTest extends KNSTestCase {
49  	/**
50  	MaintenanceDocument document;
51      
52      @Override
53      public void setUp() throws Exception {
54          super.setUp();
55          GlobalVariables.setUserSession(new UserSession("quickstart"));
56          document = (MaintenanceDocument) KNSServiceLocator.getDocumentService().getNewDocument("AttachmentSampleMaintenanceDocument");
57      }
58  	
59      @Test 
60      @UnitTestData(sqlStatements = {
61              @UnitTestSql("delete from trv_attach_sample_t"),
62              @UnitTestSql("delete from trv_multi_attach_sample_t")
63          })
64      public void test_MultipleAttachments() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException, WorkflowException {
65  
66      	AttachmentSample as = new AttachmentSample();
67      	as.setFileName("test.txt");
68      	as.setId("2340");
69      	as.setDescription("A test attachment");
70      	as.setContentType("text/plain");
71      	as.setAttachmentContent("This is a test".getBytes());
72      	
73      	MultiAttachmentSample child1 = new MultiAttachmentSample();
74      	child1.setFileName("child1.txt");
75      	child1.setDescription("This is the first child");
76      	child1.setContentType("text/plain");
77      	child1.setAttachmentContent("This is the content of the first child".getBytes());
78      	as.getMultiAttachment().add(child1);
79      	
80      	MultiAttachmentSample child2 = new MultiAttachmentSample();
81      	child2.setFileName("child2.txt");
82      	child2.setDescription("This is the second child");
83      	child2.setContentType("text/plain");
84      	child2.setAttachmentContent("This is the content of the second child".getBytes());
85      	as.getMultiAttachment().add(child2);
86      	
87      	MultiAttachmentSample child3 = new MultiAttachmentSample();
88      	child3.setFileName("child3.txt");
89      	child3.setDescription("This is the third child");
90      	child3.setContentType("text/plain");
91      	child3.setAttachmentContent("This is the content of the third child".getBytes());
92      	as.getMultiAttachment().add(child3);
93      	
94      	
95          document.getOldMaintainableObject().setBusinessObject(null);
96          document.getOldMaintainableObject().setBoClass(as.getClass());
97          document.getNewMaintainableObject().setBusinessObject(as);
98          document.getNewMaintainableObject().setBoClass(as.getClass());
99          document.getNewMaintainableObject().setMaintenanceAction(KNSConstants.MAINTENANCE_NEW_ACTION);
100         document.getDocumentHeader().setDocumentDescription("Testing");
101 
102         Document routedDoc = KNSServiceLocator.getDocumentService().routeDocument(document, "Routing", null);
103         
104         MaintenanceDocument retrievedDoc = (MaintenanceDocument) KNSServiceLocator.getDocumentService().getByDocumentHeaderId(routedDoc.getDocumentNumber());
105         
106         AttachmentSample ras = (AttachmentSample)retrievedDoc.getNewMaintainableObject().getBusinessObject();
107         
108         assertEquals("This is a test", new String(ras.getAttachmentContent()));
109         assertEquals("text/plain", ras.getContentType());
110         
111         List<MultiAttachmentSample> multiAttachments = ras.getMultiAttachment();
112         assertEquals(3, multiAttachments.size());
113         
114         int i=1;
115         for (MultiAttachmentSample multiAttachment : multiAttachments) {
116         	String expectedName = "child" + i + ".txt";
117         	assertEquals(expectedName, multiAttachment.getFileName());
118         	assertEquals("text/plain", multiAttachment.getContentType());
119         	i++;
120         }
121     }
122   	 */
123 }
124