Skip to content

Commit d9df54f

Browse files
author
djagaluru
committed
Added UT for BatchItemRequestSerializer
1 parent 3eefd1f commit d9df54f

File tree

1 file changed

+246
-0
lines changed

1 file changed

+246
-0
lines changed
Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2017 Intuit
3+
*
4+
* Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
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 com.intuit.ipp.serialization;
17+
18+
import com.fasterxml.jackson.core.JsonFactory;
19+
import com.fasterxml.jackson.core.JsonGenerator;
20+
import com.intuit.ipp.data.BatchItemRequest;
21+
import com.intuit.ipp.data.CDCQuery;
22+
import com.intuit.ipp.data.Customer;
23+
import com.intuit.ipp.data.Invoice;
24+
import com.intuit.ipp.data.Line;
25+
import com.intuit.ipp.data.ObjectFactory;
26+
import com.intuit.ipp.data.OperationEnum;
27+
import com.intuit.ipp.data.ReferenceType;
28+
import com.intuit.ipp.data.Vendor;
29+
import org.testng.Assert;
30+
import org.testng.annotations.BeforeClass;
31+
import org.testng.annotations.Test;
32+
33+
import javax.xml.bind.JAXBElement;
34+
import java.io.ByteArrayOutputStream;
35+
import java.io.IOException;
36+
import java.io.OutputStream;
37+
import java.lang.reflect.Method;
38+
import java.math.BigDecimal;
39+
import java.util.Collections;
40+
import java.util.Date;
41+
42+
public class BatchItemRequestSerializerTest {
43+
44+
private BatchItemRequestSerializer serializer;
45+
private JsonFactory factory;
46+
47+
@BeforeClass
48+
public void setUp() {
49+
serializer = new BatchItemRequestSerializer();
50+
factory = new JsonFactory();
51+
}
52+
53+
@Test
54+
public void testBatchSerialize_CustomerCreate() throws IOException {
55+
BatchItemRequest request = new BatchItemRequest();
56+
OutputStream outputStream = new ByteArrayOutputStream();
57+
JsonGenerator generator = factory.createGenerator(outputStream);
58+
59+
Customer customer = getCustomerObject();
60+
61+
request.setBId("bID1");
62+
JAXBElement element = getJaxBElementObject(customer);
63+
request.setIntuitObject(element);
64+
request.setOperation(OperationEnum.CREATE);
65+
66+
serializer.serialize(request, generator, null);
67+
68+
generator.flush();
69+
String output = outputStream.toString();
70+
Assert.assertEquals(output, "{\"bId\":\"bID1\",\"Customer\":{\"Title\":\"Mr.\",\"GivenName\":\"John\",\"MiddleName\":\"David\",\"FamilyName\":\"Thomson\"},\"operation\":\"create\"}");
71+
}
72+
73+
@Test
74+
public void testBatchSerialize_VendorCreate() throws IOException {
75+
BatchItemRequest request = new BatchItemRequest();
76+
OutputStream outputStream = new ByteArrayOutputStream();
77+
JsonGenerator generator = factory.createGenerator(outputStream);
78+
79+
Vendor vendor = getVendorObject();
80+
81+
JAXBElement element = getJaxBElementObject(vendor);
82+
request.setIntuitObject(element);
83+
request.setOperation(OperationEnum.CREATE);
84+
85+
serializer.serialize(request, generator, null);
86+
87+
generator.flush();
88+
String output = outputStream.toString();
89+
Assert.assertEquals(output, "{\"Vendor\":{\"Title\":\"Ms.\",\"GivenName\":\"Penny\",\"MiddleName\":\"Kaley\",\"FamilyName\":\"Cuoco\"},\"operation\":\"create\"}");
90+
}
91+
92+
@Test
93+
public void testBatchSerialize_InvoiceUpdate() throws IOException {
94+
BatchItemRequest request = new BatchItemRequest();
95+
OutputStream outputStream = new ByteArrayOutputStream();
96+
JsonGenerator generator = factory.createGenerator(outputStream);
97+
98+
Invoice invoice = getInvoiceObject();
99+
100+
request.setBId("bID3");
101+
JAXBElement element = getJaxBElementObject(invoice);
102+
request.setIntuitObject(element);
103+
request.setOperation(OperationEnum.UPDATE);
104+
105+
serializer.serialize(request, generator, null);
106+
107+
generator.flush();
108+
String output = outputStream.toString();
109+
Assert.assertEquals(output, "{\"bId\":\"bID3\",\"Invoice\":{\"DocNumber\":\"1001\",\"TxnDate\":\"2019-01-01\",\"Line\":[{\"Description\":\"Buttons\",\"Amount\":1000}],\"CustomerRef\":{\"value\":\"33\",\"name\":\"Account Receivable\",\"type\":\"Account\"}},\"operation\":\"update\"}");
110+
}
111+
112+
@Test
113+
public void testBatchSerialize_QueryInvoice() throws IOException {
114+
BatchItemRequest request = new BatchItemRequest();
115+
OutputStream outputStream = new ByteArrayOutputStream();
116+
JsonGenerator generator = factory.createGenerator(outputStream);
117+
118+
request.setBId("bID4");
119+
request.setQuery("select * from Invoice");
120+
serializer.serialize(request, generator, null);
121+
122+
generator.flush();
123+
String output = outputStream.toString();
124+
Assert.assertEquals(output, "{\"bId\":\"bID4\",\"Query\":\"select * from Invoice\"}");
125+
}
126+
127+
@Test
128+
public void testBatchSerialize_CustomerDelete() throws IOException {
129+
BatchItemRequest request = new BatchItemRequest();
130+
OutputStream outputStream = new ByteArrayOutputStream();
131+
JsonGenerator generator = factory.createGenerator(outputStream);
132+
133+
Customer customer = getCustomerObject();
134+
customer.setId("34");
135+
136+
request.setBId("bID5");
137+
JAXBElement element = getJaxBElementObject(customer);
138+
request.setIntuitObject(element);
139+
request.setOperation(OperationEnum.DELETE);
140+
141+
serializer.serialize(request, generator, null);
142+
143+
generator.flush();
144+
String output = outputStream.toString();
145+
Assert.assertEquals(output, "{\"bId\":\"bID5\",\"Customer\":{\"Id\":\"34\",\"Title\":\"Mr.\",\"GivenName\":\"John\",\"MiddleName\":\"David\",\"FamilyName\":\"Thomson\"},\"operation\":\"delete\"}");
146+
}
147+
148+
@Test
149+
public void testBatchSerialize_CDCQuery() throws IOException {
150+
BatchItemRequest request = new BatchItemRequest();
151+
OutputStream outputStream = new ByteArrayOutputStream();
152+
JsonGenerator generator = factory.createGenerator(outputStream);
153+
154+
CDCQuery cdcQuery = new CDCQuery();
155+
cdcQuery.setEntities("Customer");
156+
cdcQuery.setChangedSince(new Date(1546281000000L));
157+
request.setBId("bID6");
158+
request.setCDCQuery(cdcQuery);
159+
160+
serializer.serialize(request, generator, null);
161+
162+
generator.flush();
163+
String output = outputStream.toString();
164+
Assert.assertEquals(output, "{\"bId\":\"bID6\",\"CDCQuery\":{\"Entities\":\"Customer\",\"ChangedSince\":\"2019-01-01T00:00:00+05:30\"}}");
165+
}
166+
167+
@Test
168+
public void testBatchSerialize_ReportQuery() throws IOException {
169+
BatchItemRequest request = new BatchItemRequest();
170+
OutputStream outputStream = new ByteArrayOutputStream();
171+
JsonGenerator generator = factory.createGenerator(outputStream);
172+
173+
request.setBId("bID6");
174+
request.setReportQuery("report queryData");
175+
request.setOptionsData("testOptionsData");
176+
177+
serializer.serialize(request, generator, null);
178+
179+
generator.flush();
180+
String output = outputStream.toString();
181+
Assert.assertEquals(output, "{\"bId\":\"bID6\",\"ReportQuery\":\"report queryData\",\"optionsData\":\"testOptionsData\"}");
182+
}
183+
184+
185+
private Customer getCustomerObject() {
186+
Customer customer = new Customer();
187+
customer.setGivenName("John");
188+
customer.setTitle("Mr.");
189+
customer.setFamilyName("Thomson");
190+
customer.setMiddleName("David");
191+
192+
return customer;
193+
}
194+
195+
private Vendor getVendorObject() {
196+
Vendor vendor = new Vendor();
197+
vendor.setGivenName("Penny");
198+
vendor.setTitle("Ms.");
199+
vendor.setMiddleName("Kaley");
200+
vendor.setFamilyName("Cuoco");
201+
202+
return vendor;
203+
}
204+
205+
private Invoice getInvoiceObject() {
206+
Invoice invoice = new Invoice();
207+
invoice.setDocNumber("1001");
208+
invoice.setTxnDate(new Date(1546281000000L));
209+
ReferenceType customerRef = new ReferenceType();
210+
customerRef.setType("Customer");
211+
customerRef.setName("Mary");
212+
customerRef.setValue("1");
213+
invoice.setCustomerRef(customerRef);
214+
215+
ReferenceType accountRef = new ReferenceType();
216+
accountRef.setName("Account Receivable");
217+
accountRef.setType("Account");
218+
accountRef.setValue("33");
219+
invoice.setCustomerRef(accountRef);
220+
221+
Line invLine = new Line();
222+
invLine.setAmount(new BigDecimal(1000));
223+
invLine.setDescription("Buttons");
224+
invoice.setLine(Collections.singletonList(invLine));
225+
226+
return invoice;
227+
}
228+
229+
@SuppressWarnings("unchecked")
230+
private <T> JAXBElement<? extends Object> getJaxBElementObject(T object) {
231+
Class<?> objectClass = object.getClass();
232+
String methodName = "create".concat(objectClass.getSimpleName());
233+
ObjectFactory objectEntity = new ObjectFactory();
234+
Class<?> objectEntityClass = objectEntity.getClass();
235+
236+
Method method;
237+
JAXBElement<? extends Object> jaxbElement = null;
238+
try {
239+
method = objectEntityClass.getMethod(methodName, Class.forName(objectClass.getName()));
240+
jaxbElement = (JAXBElement<? extends Object>) method.invoke(objectEntity, object);
241+
} catch (Exception e) {
242+
e.printStackTrace();
243+
}
244+
return jaxbElement;
245+
}
246+
}

0 commit comments

Comments
 (0)