View Javadoc
1   package org.kuali.ole.deliver.service;
2   
3   import org.codehaus.plexus.util.FileUtils;
4   import org.junit.Before;
5   import org.junit.Test;
6   import org.kuali.ole.OLEConstants;
7   import org.kuali.ole.OLEParameterConstants;
8   import org.kuali.ole.deliver.bo.OleLoanDocument;
9   import org.kuali.ole.deliver.bo.OlePatronDocument;
10  import org.kuali.ole.deliver.processor.LoanProcessor;
11  import org.kuali.ole.service.OlePatronHelperServiceImpl;
12  import org.kuali.rice.kim.impl.identity.entity.EntityBo;
13  import org.kuali.rice.kim.impl.identity.name.EntityNameBo;
14  import org.kuali.rice.kim.impl.identity.type.EntityTypeContactInfoBo;
15  import org.kuali.rice.krad.service.BusinessObjectService;
16  import org.mockito.Mock;
17  import org.mockito.Mockito;
18  import org.mockito.MockitoAnnotations;
19  
20  import java.io.File;
21  import java.text.SimpleDateFormat;
22  import java.util.ArrayList;
23  import java.util.Date;
24  import java.util.Iterator;
25  import java.util.List;
26  
27  import static org.junit.Assert.assertNotNull;
28  import static org.junit.Assert.assertTrue;
29  
30  /**
31   * Created by premkb on 4/8/15.
32   */
33  public class NoticePDFContentFormatterTest {
34  
35      @Mock
36      private OlePatronHelperServiceImpl mockOlePatronHelperServiceImpl;
37  
38      @Mock
39      private LoanProcessor mockLoanProcessor;
40      @Mock
41      private BusinessObjectService mockBusinessObjectService;
42      @Mock
43      private ParameterValueResolver mockParameterResolverInstance;
44      @Mock
45      NoticesExecutor mockDeliverNoticesExecutor;
46      @Mock
47      private NoticePDFContentFormatter mockNoticePDFContentFormatter;
48  
49      @Before
50      public void setUp() throws Exception {
51          MockitoAnnotations.initMocks(this);
52      }
53  
54      @Test
55      public void testGenerateOverDueNoticeContent() throws Exception {
56          OleLoanDocument oleLoanDocument = new OleLoanDocument();
57          //oleLoanDocument.setItemId("113");
58          mockNoticePDFContentFormatter = new MockNoticePDFContentFormatter();
59  
60          Mockito.when(mockParameterResolverInstance.getParameter(OLEConstants
61                  .APPL_ID, OLEConstants.DLVR_NMSPC, OLEConstants.DLVR_CMPNT,OLEParameterConstants.OVERDUE_TITLE)).thenReturn("TITLE");
62          Mockito.when(mockParameterResolverInstance.getParameter(OLEConstants
63                  .APPL_ID_OLE, OLEConstants.DLVR_NMSPC, OLEConstants.DLVR_CMPNT,OLEConstants.OleDeliverRequest.OVERDUE_NOTICE_CONTENT))
64                  .thenReturn
65                          ("CONTENT");
66          Mockito.when(mockParameterResolverInstance.getParameter(OLEConstants
67                  .APPL_ID_OLE, OLEConstants.DLVR_NMSPC, OLEConstants.DLVR_CMPNT, OLEParameterConstants.DEFAULT_CIRCULATION_DESK))
68                  .thenReturn
69                          ("BL_EDUC");
70          Mockito.when(mockParameterResolverInstance.getParameter(OLEConstants
71                  .APPL_ID, OLEConstants.DLVR_NMSPC, OLEConstants.DLVR_CMPNT, OLEParameterConstants.NOTICE_FROM_MAIL))
72                  .thenReturn
73                          ("dev.ole@kuali.org");
74          Mockito.when(mockParameterResolverInstance.getParameter(OLEConstants.APPL_ID_OLE, OLEConstants
75                  .DLVR_NMSPC, OLEConstants.DLVR_CMPNT,
76                  "OVERDUE_NOTICE_TO_DATE"))
77                  .thenReturn
78                          ("dd/MM/yyyy hh:mm a;");
79          List<OleLoanDocument> loanDocuments = new ArrayList<>();
80          mockDeliverNoticesExecutor = new OverdueNoticesExecutor(loanDocuments);
81  
82          OlePatronDocument olePatron = new OlePatronDocument();
83          olePatron.setBarcode("123125");
84          EntityBo entity = new EntityBo();
85          ArrayList<EntityNameBo> entityNameBos = new ArrayList<EntityNameBo>();
86          EntityNameBo entityNameBo = new EntityNameBo();
87          entityNameBo.setFirstName("FirstName");
88          entityNameBos.add(entityNameBo);
89          entity.setNames(entityNameBos);
90          ArrayList<EntityTypeContactInfoBo> entityTypeContactInfos = new ArrayList<EntityTypeContactInfoBo>();
91          entityTypeContactInfos.add(new EntityTypeContactInfoBo());
92          entity.setEntityTypeContactInfos(entityTypeContactInfos);
93          olePatron.setEntity(entity);
94  
95          oleLoanDocument.setOlePatron(olePatron);
96  
97  
98          mockNoticePDFContentFormatter.setOlePatronHelperService(mockOlePatronHelperServiceImpl);
99          mockNoticePDFContentFormatter.setSimpleDateFormat(new SimpleDateFormat());
100         mockNoticePDFContentFormatter.setUrlProperty("http://localhost:8080/olefs");
101         mockNoticePDFContentFormatter.setParameterResolverInstance(mockParameterResolverInstance);
102 
103 
104         String fileName = mockNoticePDFContentFormatter.generateOverDueNoticeContent(oleLoanDocument);
105         assertNotNull(fileName);
106         boolean isFileExist= FileUtils.fileExists(fileName);
107         assertTrue(isFileExist);
108     }
109 
110     private class MockNoticePDFContentFormatter extends NoticePDFContentFormatter {
111         @Override
112         public String createPDFFile(String title, String itemId) throws Exception {
113             String pdfLocationSystemParam=System.getProperty("user.home")+"/kuali/main/"+System.getProperty("environment")+"/olefs-webapp/work/staging/";
114             boolean locationExist = new File(pdfLocationSystemParam).exists();
115             boolean fileCreated = false;
116             try {
117                 if (!locationExist) {
118                     fileCreated = new File(pdfLocationSystemParam).mkdirs();
119                     if (!fileCreated) {
120                         throw new RuntimeException("Unable to create directory :" + pdfLocationSystemParam);
121                     }
122                 }
123             } catch (Exception e) {
124                 throw e;
125             }
126 
127             if (title == null || title.trim().isEmpty()) {
128                 title = OLEConstants.ITEM_TITLE;
129             }
130             title = title.replaceAll(" ", "_");
131 
132             if (itemId == null || itemId.trim().isEmpty()) {
133                 itemId = OLEConstants.ITEM_ID;
134             }
135             String fileName = pdfLocationSystemParam + title + "_" + itemId + "_" + (new Date(System.currentTimeMillis())).toString().replaceAll(":", "_") + ".pdf";
136             return fileName;
137         }
138     }
139 }