From d9df54fae1da69d4f5b71d3f176402ff103c04f3 Mon Sep 17 00:00:00 2001 From: djagaluru Date: Mon, 28 Oct 2019 20:50:24 +0530 Subject: [PATCH 1/3] Added UT for BatchItemRequestSerializer --- .../BatchItemRequestSerializerTest.java | 246 ++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java diff --git a/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java b/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java new file mode 100644 index 00000000..bf0d788b --- /dev/null +++ b/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java @@ -0,0 +1,246 @@ +/******************************************************************************* + * Copyright (c) 2017 Intuit + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *******************************************************************************/ +package com.intuit.ipp.serialization; + +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; +import com.intuit.ipp.data.BatchItemRequest; +import com.intuit.ipp.data.CDCQuery; +import com.intuit.ipp.data.Customer; +import com.intuit.ipp.data.Invoice; +import com.intuit.ipp.data.Line; +import com.intuit.ipp.data.ObjectFactory; +import com.intuit.ipp.data.OperationEnum; +import com.intuit.ipp.data.ReferenceType; +import com.intuit.ipp.data.Vendor; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import javax.xml.bind.JAXBElement; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.util.Collections; +import java.util.Date; + +public class BatchItemRequestSerializerTest { + + private BatchItemRequestSerializer serializer; + private JsonFactory factory; + + @BeforeClass + public void setUp() { + serializer = new BatchItemRequestSerializer(); + factory = new JsonFactory(); + } + + @Test + public void testBatchSerialize_CustomerCreate() throws IOException { + BatchItemRequest request = new BatchItemRequest(); + OutputStream outputStream = new ByteArrayOutputStream(); + JsonGenerator generator = factory.createGenerator(outputStream); + + Customer customer = getCustomerObject(); + + request.setBId("bID1"); + JAXBElement element = getJaxBElementObject(customer); + request.setIntuitObject(element); + request.setOperation(OperationEnum.CREATE); + + serializer.serialize(request, generator, null); + + generator.flush(); + String output = outputStream.toString(); + Assert.assertEquals(output, "{\"bId\":\"bID1\",\"Customer\":{\"Title\":\"Mr.\",\"GivenName\":\"John\",\"MiddleName\":\"David\",\"FamilyName\":\"Thomson\"},\"operation\":\"create\"}"); + } + + @Test + public void testBatchSerialize_VendorCreate() throws IOException { + BatchItemRequest request = new BatchItemRequest(); + OutputStream outputStream = new ByteArrayOutputStream(); + JsonGenerator generator = factory.createGenerator(outputStream); + + Vendor vendor = getVendorObject(); + + JAXBElement element = getJaxBElementObject(vendor); + request.setIntuitObject(element); + request.setOperation(OperationEnum.CREATE); + + serializer.serialize(request, generator, null); + + generator.flush(); + String output = outputStream.toString(); + Assert.assertEquals(output, "{\"Vendor\":{\"Title\":\"Ms.\",\"GivenName\":\"Penny\",\"MiddleName\":\"Kaley\",\"FamilyName\":\"Cuoco\"},\"operation\":\"create\"}"); + } + + @Test + public void testBatchSerialize_InvoiceUpdate() throws IOException { + BatchItemRequest request = new BatchItemRequest(); + OutputStream outputStream = new ByteArrayOutputStream(); + JsonGenerator generator = factory.createGenerator(outputStream); + + Invoice invoice = getInvoiceObject(); + + request.setBId("bID3"); + JAXBElement element = getJaxBElementObject(invoice); + request.setIntuitObject(element); + request.setOperation(OperationEnum.UPDATE); + + serializer.serialize(request, generator, null); + + generator.flush(); + String output = outputStream.toString(); + 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\"}"); + } + + @Test + public void testBatchSerialize_QueryInvoice() throws IOException { + BatchItemRequest request = new BatchItemRequest(); + OutputStream outputStream = new ByteArrayOutputStream(); + JsonGenerator generator = factory.createGenerator(outputStream); + + request.setBId("bID4"); + request.setQuery("select * from Invoice"); + serializer.serialize(request, generator, null); + + generator.flush(); + String output = outputStream.toString(); + Assert.assertEquals(output, "{\"bId\":\"bID4\",\"Query\":\"select * from Invoice\"}"); + } + + @Test + public void testBatchSerialize_CustomerDelete() throws IOException { + BatchItemRequest request = new BatchItemRequest(); + OutputStream outputStream = new ByteArrayOutputStream(); + JsonGenerator generator = factory.createGenerator(outputStream); + + Customer customer = getCustomerObject(); + customer.setId("34"); + + request.setBId("bID5"); + JAXBElement element = getJaxBElementObject(customer); + request.setIntuitObject(element); + request.setOperation(OperationEnum.DELETE); + + serializer.serialize(request, generator, null); + + generator.flush(); + String output = outputStream.toString(); + Assert.assertEquals(output, "{\"bId\":\"bID5\",\"Customer\":{\"Id\":\"34\",\"Title\":\"Mr.\",\"GivenName\":\"John\",\"MiddleName\":\"David\",\"FamilyName\":\"Thomson\"},\"operation\":\"delete\"}"); + } + + @Test + public void testBatchSerialize_CDCQuery() throws IOException { + BatchItemRequest request = new BatchItemRequest(); + OutputStream outputStream = new ByteArrayOutputStream(); + JsonGenerator generator = factory.createGenerator(outputStream); + + CDCQuery cdcQuery = new CDCQuery(); + cdcQuery.setEntities("Customer"); + cdcQuery.setChangedSince(new Date(1546281000000L)); + request.setBId("bID6"); + request.setCDCQuery(cdcQuery); + + serializer.serialize(request, generator, null); + + generator.flush(); + String output = outputStream.toString(); + Assert.assertEquals(output, "{\"bId\":\"bID6\",\"CDCQuery\":{\"Entities\":\"Customer\",\"ChangedSince\":\"2019-01-01T00:00:00+05:30\"}}"); + } + + @Test + public void testBatchSerialize_ReportQuery() throws IOException { + BatchItemRequest request = new BatchItemRequest(); + OutputStream outputStream = new ByteArrayOutputStream(); + JsonGenerator generator = factory.createGenerator(outputStream); + + request.setBId("bID6"); + request.setReportQuery("report queryData"); + request.setOptionsData("testOptionsData"); + + serializer.serialize(request, generator, null); + + generator.flush(); + String output = outputStream.toString(); + Assert.assertEquals(output, "{\"bId\":\"bID6\",\"ReportQuery\":\"report queryData\",\"optionsData\":\"testOptionsData\"}"); + } + + + private Customer getCustomerObject() { + Customer customer = new Customer(); + customer.setGivenName("John"); + customer.setTitle("Mr."); + customer.setFamilyName("Thomson"); + customer.setMiddleName("David"); + + return customer; + } + + private Vendor getVendorObject() { + Vendor vendor = new Vendor(); + vendor.setGivenName("Penny"); + vendor.setTitle("Ms."); + vendor.setMiddleName("Kaley"); + vendor.setFamilyName("Cuoco"); + + return vendor; + } + + private Invoice getInvoiceObject() { + Invoice invoice = new Invoice(); + invoice.setDocNumber("1001"); + invoice.setTxnDate(new Date(1546281000000L)); + ReferenceType customerRef = new ReferenceType(); + customerRef.setType("Customer"); + customerRef.setName("Mary"); + customerRef.setValue("1"); + invoice.setCustomerRef(customerRef); + + ReferenceType accountRef = new ReferenceType(); + accountRef.setName("Account Receivable"); + accountRef.setType("Account"); + accountRef.setValue("33"); + invoice.setCustomerRef(accountRef); + + Line invLine = new Line(); + invLine.setAmount(new BigDecimal(1000)); + invLine.setDescription("Buttons"); + invoice.setLine(Collections.singletonList(invLine)); + + return invoice; + } + + @SuppressWarnings("unchecked") + private JAXBElement getJaxBElementObject(T object) { + Class objectClass = object.getClass(); + String methodName = "create".concat(objectClass.getSimpleName()); + ObjectFactory objectEntity = new ObjectFactory(); + Class objectEntityClass = objectEntity.getClass(); + + Method method; + JAXBElement jaxbElement = null; + try { + method = objectEntityClass.getMethod(methodName, Class.forName(objectClass.getName())); + jaxbElement = (JAXBElement) method.invoke(objectEntity, object); + } catch (Exception e) { + e.printStackTrace(); + } + return jaxbElement; + } +} From d15b53d1ca16a85bc3c9687db1d028f79a76d09a Mon Sep 17 00:00:00 2001 From: djagaluru Date: Mon, 28 Oct 2019 21:13:30 +0530 Subject: [PATCH 2/3] Fixing UT failure --- .../BatchItemRequestSerializerTest.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java b/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java index bf0d788b..e795ad3f 100644 --- a/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java +++ b/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java @@ -36,8 +36,10 @@ import java.io.OutputStream; import java.lang.reflect.Method; import java.math.BigDecimal; +import java.util.Calendar; import java.util.Collections; import java.util.Date; +import java.util.TimeZone; public class BatchItemRequestSerializerTest { @@ -153,7 +155,7 @@ public void testBatchSerialize_CDCQuery() throws IOException { CDCQuery cdcQuery = new CDCQuery(); cdcQuery.setEntities("Customer"); - cdcQuery.setChangedSince(new Date(1546281000000L)); + cdcQuery.setChangedSince(getDate()); request.setBId("bID6"); request.setCDCQuery(cdcQuery); @@ -161,7 +163,7 @@ public void testBatchSerialize_CDCQuery() throws IOException { generator.flush(); String output = outputStream.toString(); - Assert.assertEquals(output, "{\"bId\":\"bID6\",\"CDCQuery\":{\"Entities\":\"Customer\",\"ChangedSince\":\"2019-01-01T00:00:00+05:30\"}}"); + Assert.assertEquals(output, "{\"bId\":\"bID6\",\"CDCQuery\":{\"Entities\":\"Customer\",\"ChangedSince\":\"2019-01-01T05:30:00.666+05:30\"}}"); } @Test @@ -205,7 +207,7 @@ private Vendor getVendorObject() { private Invoice getInvoiceObject() { Invoice invoice = new Invoice(); invoice.setDocNumber("1001"); - invoice.setTxnDate(new Date(1546281000000L)); + invoice.setTxnDate(getDate()); ReferenceType customerRef = new ReferenceType(); customerRef.setType("Customer"); customerRef.setName("Mary"); @@ -226,6 +228,12 @@ private Invoice getInvoiceObject() { return invoice; } + private Date getDate() { + Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + calendar.setTimeInMillis(1546300800666L); + return calendar.getTime(); + } + @SuppressWarnings("unchecked") private JAXBElement getJaxBElementObject(T object) { Class objectClass = object.getClass(); From 243f17226199d1a7ce068688299c0973ca049bdc Mon Sep 17 00:00:00 2001 From: djagaluru Date: Mon, 28 Oct 2019 22:07:24 +0530 Subject: [PATCH 3/3] Fixing date assert Issue --- .../BatchItemRequestSerializerTest.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java b/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java index e795ad3f..5cf38a60 100644 --- a/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java +++ b/ipp-v3-java-devkit/src/test/java/com/intuit/ipp/serialization/BatchItemRequestSerializerTest.java @@ -17,6 +17,8 @@ import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; +import com.google.gson.Gson; +import com.google.gson.JsonObject; import com.intuit.ipp.data.BatchItemRequest; import com.intuit.ipp.data.CDCQuery; import com.intuit.ipp.data.Customer; @@ -45,11 +47,13 @@ public class BatchItemRequestSerializerTest { private BatchItemRequestSerializer serializer; private JsonFactory factory; + private Gson gson; @BeforeClass public void setUp() { serializer = new BatchItemRequestSerializer(); factory = new JsonFactory(); + gson = new Gson(); } @Test @@ -163,7 +167,13 @@ public void testBatchSerialize_CDCQuery() throws IOException { generator.flush(); String output = outputStream.toString(); - Assert.assertEquals(output, "{\"bId\":\"bID6\",\"CDCQuery\":{\"Entities\":\"Customer\",\"ChangedSince\":\"2019-01-01T05:30:00.666+05:30\"}}"); + JsonObject jsonObject = gson.fromJson(output, JsonObject.class); + Assert.assertNotNull(output); + Assert.assertEquals(jsonObject.get("bId").getAsString(), "bID6"); + JsonObject cdcQueryJson = jsonObject.get("CDCQuery").getAsJsonObject(); + Assert.assertNotNull(cdcQueryJson); + Assert.assertEquals(cdcQueryJson.get("Entities").getAsString(), "Customer"); + Assert.assertEquals(cdcQueryJson.get("ChangedSince").getAsString().split("T")[0], "2019-01-01"); } @Test