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
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
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 }