1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.purap.document;
20
21 import static org.kuali.kfs.sys.fixture.UserNameFixture.appleton;
22 import junit.framework.Assert;
23
24 import org.kuali.kfs.module.purap.businessobject.ElectronicInvoiceLoadSummary;
25 import org.kuali.kfs.module.purap.fixture.ElectronicInvoiceLoadSummaryFixture;
26 import org.kuali.kfs.module.purap.fixture.ElectronicInvoiceRejectDocumentFixture;
27 import org.kuali.kfs.module.purap.fixture.PurchaseOrderDocumentFixture;
28 import org.kuali.kfs.sys.ConfigureContext;
29 import org.kuali.kfs.sys.context.KualiTestBase;
30 import org.kuali.kfs.sys.context.SpringContext;
31 import org.kuali.kfs.sys.document.AccountingDocumentTestUtils;
32 import org.kuali.kfs.sys.document.workflow.WorkflowTestUtils;
33 import org.kuali.rice.kew.api.document.DocumentStatus;
34 import org.kuali.rice.kew.api.exception.WorkflowException;
35 import org.kuali.rice.krad.document.Document;
36 import org.kuali.rice.krad.exception.ValidationException;
37 import org.kuali.rice.krad.service.BusinessObjectService;
38 import org.kuali.rice.krad.service.DocumentService;
39 import org.kuali.rice.krad.util.GlobalVariables;
40
41
42
43
44 @ConfigureContext(session = appleton)
45 public class ElectronicInvoiceRejectDocumentTest extends KualiTestBase {
46 public static final Class<ElectronicInvoiceRejectDocument> DOCUMENT_CLASS = ElectronicInvoiceRejectDocument.class;
47
48 private ElectronicInvoiceRejectDocument eirDoc = null;
49
50 @Override
51 protected void setUp() throws Exception {
52 super.setUp();
53 }
54
55 @Override
56 protected void tearDown() throws Exception {
57 eirDoc = null;
58 super.tearDown();
59 }
60
61 @ConfigureContext(session = appleton, shouldCommitTransactions = true)
62 public final void testSaveDocument() throws Exception {
63 ElectronicInvoiceLoadSummary eils = ElectronicInvoiceLoadSummaryFixture.EILS_BASIC.createElectronicInvoiceLoadSummary();
64 BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class);
65 boService.save(eils);
66
67 GlobalVariables.getUserSession().setBackdoorUser( "kfs" );
68 eirDoc = ElectronicInvoiceRejectDocumentFixture.EIR_ONLY_REQUIRED_FIELDS.createElectronicInvoiceRejectDocument(eils);
69 eirDoc.prepareForSave();
70 DocumentService documentService = SpringContext.getBean(DocumentService.class);
71 assertFalse(DocumentStatus.ENROUTE.equals(eirDoc.getDocumentHeader().getWorkflowDocument().getStatus()));
72 saveDocument(eirDoc, "saving copy source document", documentService);
73 GlobalVariables.getUserSession().clearBackdoorUser();
74
75 Document document = documentService.getByDocumentHeaderId(eirDoc.getDocumentNumber());
76 assertTrue("Document should be saved.", document.getDocumentHeader().getWorkflowDocument().isSaved());
77 Document result = documentService.getByDocumentHeaderId(eirDoc.getDocumentNumber());
78 assertMatch(eirDoc, result);
79 }
80
81 @ConfigureContext(session = appleton, shouldCommitTransactions = true)
82 public final void testSaveDocumentWithNonMatchingPO() throws Exception {
83 ElectronicInvoiceLoadSummary eils = ElectronicInvoiceLoadSummaryFixture.EILS_BASIC.createElectronicInvoiceLoadSummary();
84 BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class);
85 boService.save(eils);
86
87 GlobalVariables.getUserSession().setBackdoorUser( "parke" );
88 Integer poId = routePO();
89
90 GlobalVariables.getUserSession().setBackdoorUser( "kfs" );
91 eirDoc = ElectronicInvoiceRejectDocumentFixture.EIR_ONLY_REQUIRED_FIELDS.createElectronicInvoiceRejectDocument(eils);
92 eirDoc.setPurchaseOrderIdentifier(poId);
93 eirDoc.setInvoicePurchaseOrderNumber(poId.toString());
94 eirDoc.prepareForSave();
95 DocumentService documentService = SpringContext.getBean(DocumentService.class);
96 assertFalse(DocumentStatus.ENROUTE.equals(eirDoc.getDocumentHeader().getWorkflowDocument().getStatus()));
97 saveDocument(eirDoc, "saving copy source document", documentService);
98 GlobalVariables.getUserSession().clearBackdoorUser();
99
100 Document document = documentService.getByDocumentHeaderId(eirDoc.getDocumentNumber());
101 assertTrue("Document should be saved.", document.getDocumentHeader().getWorkflowDocument().isSaved());
102 Document result = documentService.getByDocumentHeaderId(eirDoc.getDocumentNumber());
103 assertMatch(eirDoc, result);
104 }
105
106 @ConfigureContext(session = appleton, shouldCommitTransactions = true)
107 public final void testSaveDocumentWithMatchingPO() throws Exception {
108 ElectronicInvoiceLoadSummary eils = ElectronicInvoiceLoadSummaryFixture.EILS_MATCHING.createElectronicInvoiceLoadSummary();
109 BusinessObjectService boService = SpringContext.getBean(BusinessObjectService.class);
110 boService.save(eils);
111
112 GlobalVariables.getUserSession().setBackdoorUser( "parke" );
113 Integer poId = routeMatchingPO();
114
115 GlobalVariables.getUserSession().setBackdoorUser( "kfs" );
116 eirDoc = ElectronicInvoiceRejectDocumentFixture.EIR_MATCHING.createElectronicInvoiceRejectDocument(eils);
117 eirDoc.setPurchaseOrderIdentifier(poId);
118 eirDoc.setInvoicePurchaseOrderNumber(poId.toString());
119 eirDoc.prepareForSave();
120 DocumentService documentService = SpringContext.getBean(DocumentService.class);
121 assertFalse(DocumentStatus.ENROUTE.equals(eirDoc.getDocumentHeader().getWorkflowDocument().getStatus()));
122 saveDocument(eirDoc, "saving copy source document", documentService);
123 GlobalVariables.getUserSession().clearBackdoorUser();
124
125 Document document = documentService.getByDocumentHeaderId(eirDoc.getDocumentNumber());
126 assertTrue("Document should be saved.", document.getDocumentHeader().getWorkflowDocument().isSaved());
127 Document result = documentService.getByDocumentHeaderId(eirDoc.getDocumentNumber());
128 assertMatch(eirDoc, result);
129
130 }
131
132 @ConfigureContext(session = appleton, shouldCommitTransactions = false)
133 public final void testRouteDocument() throws Exception {
134
135
136
137
138
139
140
141
142
143
144
145
146
147 }
148
149 @ConfigureContext(session = appleton, shouldCommitTransactions = false)
150 public final void testRouteDocumentToFinal() throws Exception {
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 }
171
172
173
174
175
176
177
178
179
180
181 private void routeDocument(Document document, String annotation, DocumentService documentService) throws WorkflowException {
182 try {
183 documentService.routeDocument(document, annotation, null);
184 }
185 catch (ValidationException e) {
186
187 fail(e.getMessage() + ", " + GlobalVariables.getMessageMap());
188 }
189 }
190
191
192
193
194
195
196
197
198
199 private void saveDocument(Document document, String annotation, DocumentService documentService) throws WorkflowException {
200 try {
201 documentService.saveDocument(document);
202 }
203 catch (ValidationException e) {
204
205 fail(e.getMessage() + ", " + GlobalVariables.getMessageMap());
206 }
207 }
208
209 public static <T extends Document> void assertMatch(T document1, T document2) {
210 Assert.assertEquals(document1.getDocumentNumber(), document2.getDocumentNumber());
211 Assert.assertEquals(document1.getDocumentHeader().getWorkflowDocument().getDocumentTypeName(), document2.getDocumentHeader().getWorkflowDocument().getDocumentTypeName());
212
213
214 ElectronicInvoiceRejectDocument d1 = (ElectronicInvoiceRejectDocument) document1;
215 ElectronicInvoiceRejectDocument d2 = (ElectronicInvoiceRejectDocument) document2;
216 Assert.assertEquals(d1.getInvoiceFileName(), d2.getInvoiceFileName());
217 Assert.assertEquals(d1.getVendorDunsNumber(), d2.getVendorDunsNumber());
218 Assert.assertEquals(d1.getInvoiceRejectItems().size(), d2.getInvoiceRejectItems().size());
219 Assert.assertEquals(d1.getInvoiceRejectReasons().size(), d2.getInvoiceRejectReasons().size());
220
221
222
223
224
225
226
227 }
228
229 private Integer routePO() {
230 PurchaseOrderDocumentTest purchaseOrderDocumentTest = new PurchaseOrderDocumentTest();
231 PurchaseOrderDocument poDocument;
232 try {
233 poDocument = PurchaseOrderDocumentFixture.PO_ONLY_REQUIRED_FIELDS.createPurchaseOrderDocument();
234 DocumentService documentService = SpringContext.getBean(DocumentService.class);
235 poDocument.prepareForSave();
236 AccountingDocumentTestUtils.routeDocument(poDocument, "saving copy source document", null, documentService);
237 WorkflowTestUtils.waitForDocumentApproval(poDocument.getDocumentNumber());
238 return poDocument.getPurapDocumentIdentifier();
239 }
240 catch (Exception e) {
241
242 e.printStackTrace();
243 return null;
244 }
245 }
246
247 private Integer routeMatchingPO() {
248 PurchaseOrderDocumentTest purchaseOrderDocumentTest = new PurchaseOrderDocumentTest();
249 PurchaseOrderDocument poDocument;
250 try {
251 poDocument = PurchaseOrderDocumentFixture.EINVOICE_PO.createPurchaseOrderDocument();
252 DocumentService documentService = SpringContext.getBean(DocumentService.class);
253 poDocument.prepareForSave();
254 AccountingDocumentTestUtils.routeDocument(poDocument, "saving copy source document", null, documentService);
255 WorkflowTestUtils.waitForDocumentApproval(poDocument.getDocumentNumber());
256 return poDocument.getPurapDocumentIdentifier();
257 }
258 catch (Exception e) {
259
260 e.printStackTrace();
261 return null;
262 }
263 }
264
265 }
266