You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ak...@apache.org on 2020/07/07 06:08:55 UTC

[ofbiz-framework] branch trunk updated: Improved: Convert ShipmentTests.xml to Groovy (OFBIZ-11850)

This is an automated email from the ASF dual-hosted git repository.

akashjain pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new cb3b99b  Improved: Convert ShipmentTests.xml to Groovy (OFBIZ-11850)
cb3b99b is described below

commit cb3b99b9d5a977a134f30c0155f9fc13fb488e56
Author: Akash Jain <ak...@hotwaxsystems.com>
AuthorDate: Tue Jul 7 11:37:45 2020 +0530

    Improved: Convert ShipmentTests.xml to Groovy (OFBIZ-11850)
---
 .../minilang/shipment/test/ShipmentTests.xml       | 218 ---------------------
 .../org/apache/ofbiz/product/ShipmentTests.groovy  | 203 +++++++++++++++++++
 applications/product/testdef/FacilityTest.xml      |   2 +-
 3 files changed, 204 insertions(+), 219 deletions(-)

diff --git a/applications/product/minilang/shipment/test/ShipmentTests.xml b/applications/product/minilang/shipment/test/ShipmentTests.xml
deleted file mode 100644
index e0d475e..0000000
--- a/applications/product/minilang/shipment/test/ShipmentTests.xml
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you 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.
--->
-
-<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">
-    <simple-method method-name="testPackingServices" short-description="test packing services" login-required="false">
-
-        <set field="packSingleItemInMap.productId" value="GZ-2644"/>
-        <set field="packSingleItemInMap.orderId" value="DEMO10090"/>
-        <set field="packSingleItemInMap.shipGroupSeqId" value="00001"/>
-        <set field="packSingleItemInMap.quantity" value="2" type="BigDecimal"/>
-        <set field="packSingleItemInMap.packageSeq" value="1" type="Integer"/>
-        <set field="packSingleItemInMap.pickerPartyId" value="DemoCustomer"/>
-        <set field="packSingleItemInMap.handlingInstructions" value="Handle with care"/>
-        <entity-one entity-name="UserLogin" value-field="userLogin" auto-field-map="false">
-            <field-map field-name="userLoginId" value="system"/>
-        </entity-one>
-        <set field="packSingleItemInMap.userLogin" from-field="userLogin"/>
-        <create-object class-name="org.apache.ofbiz.shipment.packing.PackingSession" field="packingSession">
-            <field field="dispatcher" type="org.apache.ofbiz.service.LocalDispatcher"/>
-            <field field="userLogin" type="org.apache.ofbiz.entity.GenericValue"/>
-        </create-object>
-        <set field="packSingleItemInMap.packingSession" from-field="packingSession"/>
-        <call-service service-name="packSingleItem" in-map-name="packSingleItemInMap">
-            <results-to-map map-name="packSingleItemOutMap"/>
-        </call-service>
-
-        <log level="info" message="=====packSingleItemOutMap========${packSingleItemOutMap}========="/>
-
-        <set field="packBulkItemInMap.updateQuantity" value="Y" type="Boolean"/>
-        <set field="packBulkItemInMap.orderId" value="DEMO10090"/>
-        <set field="packBulkItemInMap.shipGroupSeqId" value="00001"/>
-        <set field="packBulkItemInMap.pickerPartyId" value="DemoCustomer"/>
-        <set field="packBulkItemInMap.handlingInstructions" value="Handle with care"/>
-        <set field="packBulkItemInMap.nextPackageSeq" value="1" type="Integer"/>
-        <set field="packBulkItemInMap.userLogin" from-field="userLogin"/>
-        <set field="packBulkItemInMap.packingSession" from-field="packingSession"/>
-
-        <call-service service-name="packBulkItems" in-map-name="packBulkItemInMap">
-            <results-to-map map-name="packBulkItemsResponseMap"/>
-        </call-service>
-
-        <log level="info" message="=====packBulkItemsResponseMap=======${packBulkItemsResponseMap}======"/>
-
-        <set field="completePackInMap.orderId" value="DEMO10090"/>
-        <set field="completePackInMap.packingSession" from-field="packingSession"/>
-        <set field="completePackInMap.handlingInstructions" value="Handle with care"/>
-        <set field="completePackInMap.pickerPartyId" value="DemoCustomer"/>
-        <set field="completePackInMap.additionalShippingCharge" value="10.0" type="BigDecimal"/>
-        <set field="completePackInMap.forceComplete" value="Y" type="Boolean"/>
-        <set field="completePackInMap.userLogin" from-field="userLogin"/>
-
-        <call-service service-name="completePack" in-map-name="completePackInMap">
-            <results-to-map map-name="completePackOutMap"/>
-        </call-service>
-
-        <log level="info" message="=======ShipmentId=======${completePackOutMap.shipmentId}===="/>
-
-        <entity-one entity-name="Shipment" value-field="shipment">
-            <field-map field-name="shipmentId" from-field="completePackOutMap.shipmentId"/>
-        </entity-one>
-
-        <assert>
-        <not><if-empty field="shipment"/></not>
-        <if-compare-field field="shipment.shipmentId" to-field="completePackOutMap.shipmentId" operator="equals"/>
-        </assert>
-        <check-errors/>
-
-        <set field="createInvFrmShipmentInMap.shipmentId" value="${completePackOutMap.shipmentId}"/>
-        <set field="createInvFrmShipmentInMap.userLogin" from-field="userLogin"/>
-        <call-service service-name="createInvoicesFromShipment" in-map-name="createInvFrmShipmentInMap">
-            <results-to-map map-name="createInvFrmShipmentOutMap"/>
-        </call-service>
-
-        <log level="info" message="=============createInvFrmShipmentOutMap===========${createInvFrmShipmentOutMap}====="/>
-
-        <set field="invoicesCreated" from-field="createInvFrmShipmentOutMap.invoicesCreated"/>
-        <iterate list="invoicesCreated" entry="invoiceCreated">
-            <entity-one entity-name="Invoice" value-field="invoice">
-                <field-map field-name="invoiceId" from-field="invoiceCreated"/>
-            </entity-one>
-
-            <assert>
-            <not><if-empty field="invoice"/></not>
-            </assert>
-            <check-errors/>
-        </iterate>
-
-        <log level="info" message="=============Test case completed===================================="/>
-
-    </simple-method>
-
-    <simple-method method-name="testShipmentServices" short-description="test shipment services" login-required="false">
-        <set field="createShipmentInMap.shipmentTypeId" value="SALES_SHIPMENT"/>
-        <set field="createShipmentInMap.statusId" value="SHIPMENT_INPUT"/>
-        <set field="createShipmentInMap.primaryOrderId" value="DEMO10090"/>
-        <set field="createShipmentInMap.partyIdTo" value="DemoCustomer"/>
-        <set field="createShipmentInMap.originFacilityId" value="WebStoreWarehouse"/>
-        <entity-one entity-name="UserLogin" value-field="userLogin" auto-field-map="false">
-            <field-map field-name="userLoginId" value="system"/>
-        </entity-one>
-        <set field="createShipmentInMap.userLogin" from-field="userLogin"/>
-
-        <call-service service-name="createShipment" in-map-name="createShipmentInMap">
-            <results-to-map map-name="createShipmentOutMap"/>
-        </call-service>
-
-        <log level="info" message="==========Shipment Id============${createShipmentOutMap.shipmentId}=========="/>
-
-        <set field="updateShipmentInMap.shipmentId" from-field="createShipmentOutMap.shipmentId"/>
-        <set field="updateShipmentInMap.statusId" value="SHIPMENT_PACKED"/>
-        <set field="updateShipmentInMap.userLogin" from-field="userLogin"/>
-        <call-service service-name="updateShipment" in-map-name="updateShipmentInMap">
-            <results-to-map map-name="updateShipmentOutMap"/>
-        </call-service>
-
-        <set field="updateShipmentInMap.shipmentId" from-field="createShipmentOutMap.shipmentId"/>
-        <set field="updateShipmentInMap.statusId" value="SHIPMENT_SHIPPED"/>
-        <set field="updateShipmentInMap.userLogin" from-field="userLogin"/>
-        <call-service service-name="updateShipment" in-map-name="updateShipmentInMap">
-            <results-to-map map-name="updateShipmentOutMap"/>
-        </call-service>
-        <log level="info" message="=============Update Shipment Id=============${updateShipmentOutMap.shipmentId}========================="/>
-
-        <entity-one entity-name="Shipment" value-field="shipment">
-            <field-map field-name="shipmentId" from-field="updateShipmentOutMap.shipmentId"/>
-        </entity-one>
-
-        <assert>
-        <not><if-empty field="shipment"/></not>
-        <if-compare-field field="shipment.shipmentId" to-field="updateShipmentOutMap.shipmentId" operator="equals"/>
-        <if-compare-field field="shipment.statusId" to-field="updateShipmentInMap.statusId" operator="equals"/>
-        </assert>
-        <check-errors/>
-        <log level="info" message="=============Test case completed===================================="/>
-    </simple-method>
-
-    <simple-method method-name="testReceiveInventoryNonSerialized" short-description="Test Receive Non-Serialized Inventory" login-required="false">
-        <now-timestamp field="nowTimeStamp"/>
-        <entity-one entity-name="UserLogin" value-field="userLogin">
-            <field-map field-name="userLoginId" value="system"/>
-        </entity-one>
-        <set field="serviceCtx.userLogin" from-field="userLogin"/>
-        <set field="serviceCtx.facilityId" value="WebStoreWarehouse"/>
-        <set field="serviceCtx.productId" value="GZ-2644"/>
-        <set field="serviceCtx.quantityAccepted" value="5" type="BigDecimal"/>
-        <set field="serviceCtx.quantityRejected" value="0" type="BigDecimal"/>
-        <set field="serviceCtx.unitCost" value="24" type="BigDecimal"/>
-        <set field="serviceCtx.inventoryItemTypeId" value="NON_SERIAL_INV_ITEM"/>
-        <set field="serviceCtx.datetimeReceived" from-field="nowTimeStamp"/>
-        <call-service service-name="receiveInventoryProduct" in-map-name="serviceCtx">
-            <result-to-field  field="inventoryItemId" result-name="inventoryItemId"/>
-        </call-service>
-
-        <entity-one entity-name="InventoryItem" value-field="inventoryItem"/>
-        <get-related value-field="inventoryItem" relation-name="InventoryItemDetail" list="inventoryItemDetails"/>
-        <entity-condition entity-name="ShipmentReceipt" list="shipmentReceipts">
-            <condition-expr field-name="inventoryItemId" from-field="inventoryItemId"/>
-            <order-by field-name="datetimeReceived"/>
-        </entity-condition>
-        <first-from-list list="shipmentReceipts" entry="shipmentReceipt"/>
-        <assert>
-            <not><if-empty field="inventoryItem"></if-empty></not>
-            <not><if-empty field="inventoryItemDetails"></if-empty></not>
-            <not><if-empty field="shipmentReceipt"></if-empty></not>
-            <if-compare-field field="inventoryItem.productId" operator="equals" to-field="serviceCtx.productId"/>
-            <if-compare-field field="inventoryItem.facilityId" operator="equals" to-field="serviceCtx.facilityId"/>
-            <if-compare-field field="inventoryItem.quantityOnHandTotal" operator="equals" to-field="serviceCtx.quantityAccepted"/>
-            <if-compare-field field="inventoryItem.availableToPromiseTotal" operator="equals" to-field="serviceCtx.quantityAccepted"/>
-            <if-compare-field field="shipmentReceipt.quantityAccepted" operator="equals" to-field="serviceCtx.quantityAccepted"/>
-            <if-compare-field field="shipmentReceipt.productId" operator="equals" to-field="serviceCtx.productId"/>
-        </assert>
-        <check-errors/>
-    </simple-method>
-
-    <simple-method method-name="testCreateShipmentRouteSegment" short-description="Test to create Shipment Route Segment" login-required="false">
-        <log level="info" message="====================Create a Shipment Route Segment test case=========================================="/>
-        <entity-and entity-name="Shipment" list="shipments">
-            <field-map field-name="primaryOrderId" value="DEMO10090"/>
-            <field-map field-name="shipmentId" value="9998"/>
-        </entity-and>
-        <first-from-list list="shipments" entry="shipment"/>
-        <set field="shipRouteSegMap.shipmentId" from-field="shipment.shipmentId"/>
-        <entity-one entity-name="UserLogin" value-field="shipRouteSegMap.userLogin">
-            <field-map field-name="userLoginId" value="system"/>
-        </entity-one>
-        <call-service service-name="createShipmentRouteSegment" in-map-name="shipRouteSegMap">
-            <result-to-field result-name="shipmentRouteSegmentId" field="routeSegMap.shipmentRouteSegmentId"/>
-        </call-service>
-        <entity-one entity-name="ShipmentRouteSegment" value-field="shipmentRouteSegment">
-            <field-map field-name="shipmentId" from-field="shipRouteSegMap.shipmentId"/>
-            <field-map field-name="shipmentRouteSegmentId" from-field="routeSegMap.shipmentRouteSegmentId"/>
-        </entity-one>
-        <assert>
-            <not><if-empty field="shipmentRouteSegment"/></not>
-            <if-compare-field field="shipmentRouteSegment.shipmentId" to-field="shipRouteSegMap.shipmentId" operator="equals"/>
-            <if-compare-field field="shipmentRouteSegment.shipmentRouteSegmentId" to-field="routeSegMap.shipmentRouteSegmentId" operator="equals"/>
-        </assert>
-        <check-errors/>
-    </simple-method>
-</simple-methods>
diff --git a/applications/product/src/main/groovy/org/apache/ofbiz/product/ShipmentTests.groovy b/applications/product/src/main/groovy/org/apache/ofbiz/product/ShipmentTests.groovy
new file mode 100644
index 0000000..e5de18e
--- /dev/null
+++ b/applications/product/src/main/groovy/org/apache/ofbiz/product/ShipmentTests.groovy
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.ofbiz.product
+
+import org.apache.ofbiz.base.util.UtilDateTime
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.service.testtools.OFBizTestCase
+import org.apache.ofbiz.shipment.packing.PackingSession
+
+class ShipmentTests extends OFBizTestCase {
+    public ShipmentTests(String name) {
+        super(name)
+    }
+
+    void testPackingServices() {
+        PackingSession packingSession = new PackingSession(dispatcher, userLogin)
+        Map serviceCtx = [
+                productId: 'GZ-2644',
+                orderId: 'DEMO10090',
+                shipGroupSeqId: '00001',
+                quantity: new BigDecimal('2'),
+                packageSeq: 1,
+                pickerPartyId: 'DemoCustomer',
+                handlingInstructions: 'Handle with care',
+                packingSession: packingSession,
+                userLogin: userLogin
+        ]
+
+        Map serviceResult = dispatcher.runSync('packSingleItem', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        serviceCtx.clear()
+        serviceResult.clear()
+        serviceCtx = [
+                updateQuantity: true,
+                orderId: 'DEMO10090',
+                shipGroupSeqId: '00001',
+                pickerPartyId: 'DemoCustomer',
+                handlingInstructions: 'Handle with care',
+                nextPackageSeq: 1,
+                packingSession: packingSession,
+                userLogin: userLogin
+        ]
+        serviceResult = dispatcher.runSync('packBulkItems', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        serviceCtx.clear()
+        serviceResult.clear()
+        serviceCtx = [
+                orderId: 'DEMO10090',
+                pickerPartyId: 'DemoCustomer',
+                handlingInstructions: 'Handle with care',
+                packingSession: packingSession,
+                additionalShippingCharge: new BigDecimal('10'),
+                forceComplete: true,
+                userLogin: userLogin
+        ]
+        serviceResult = dispatcher.runSync('completePack', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        String shipmentId = serviceResult.shipmentId
+        assert  shipmentId
+
+        GenericValue shipment = from('Shipment')
+                .where('shipmentId', shipmentId)
+                .queryOne()
+        assert shipment
+
+        serviceCtx.clear()
+        serviceResult.clear()
+        serviceCtx = [
+                shipmentId: shipmentId,
+                userLogin: userLogin
+        ]
+        serviceResult = dispatcher.runSync('createInvoicesFromShipment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        List invoicesCreated = serviceResult.invoicesCreated
+        assert  shipmentId
+
+        for (String invoiceId : invoicesCreated) {
+            GenericValue invoice = from('Invoice')
+                    .where('invoiceId', invoiceId)
+                    .queryOne()
+            assert invoice
+        }
+    }
+
+    void testShipmentServices() {
+        Map serviceCtx = [
+                shipmentTypeId: 'SALES_SHIPMENT',
+                statusId: 'SHIPMENT_INPUT',
+                primaryOrderId: 'DEMO10090',
+                partyIdTo: 'DemoCustomer',
+                originFacilityId: 'WebStoreWarehouse',
+                userLogin: userLogin
+        ]
+
+        Map serviceResult = dispatcher.runSync('createShipment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        String shipmentId = serviceResult.shipmentId
+        assert  shipmentId
+
+        serviceCtx.clear()
+        serviceResult.clear()
+        serviceCtx = [
+                shipmentId: shipmentId,
+                statusId: 'SHIPMENT_PACKED',
+                userLogin: userLogin
+        ]
+        serviceResult = dispatcher.runSync('updateShipment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        serviceCtx.statusId = 'SHIPMENT_SHIPPED'
+        serviceResult = dispatcher.runSync('updateShipment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        GenericValue shipment = from('Shipment')
+                .where('shipmentId', shipmentId)
+                .queryOne()
+        assert shipment
+        assert 'SHIPMENT_SHIPPED'.equals(shipment.statusId)
+    }
+
+    void testReceiveInventoryNonSerialized() {
+        Map serviceCtx = [
+                facilityId: 'WebStoreWarehouse',
+                productId: 'GZ-2644',
+                quantityAccepted: new BigDecimal('2'),
+                quantityRejected: BigDecimal.ZERO,
+                unitCost: new BigDecimal('24'),
+                inventoryItemTypeId: 'NON_SERIAL_INV_ITEM',
+                datetimeReceived: UtilDateTime.nowTimestamp(),
+                userLogin: userLogin
+        ]
+
+        Map serviceResult = dispatcher.runSync('receiveInventoryProduct', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        String inventoryItemId = serviceResult.inventoryItemId
+        assert inventoryItemId
+
+        GenericValue inventoryItem = from('InventoryItem')
+                .where('inventoryItemId', inventoryItemId)
+                .queryOne()
+        assert inventoryItem
+        assert inventoryItem.productId.equals(serviceCtx.productId)
+        assert inventoryItem.facilityId.equals(serviceCtx.facilityId)
+        assert inventoryItem.quantityOnHandTotal.compareTo(serviceCtx.quantityAccepted) == 0
+        assert inventoryItem.availableToPromiseTotal.compareTo(serviceCtx.quantityAccepted) == 0
+
+        List inventoryItemDetails = from('InventoryItemDetail')
+                .where('inventoryItemId', inventoryItemId)
+                .queryList()
+        assert inventoryItemDetails
+
+        GenericValue shipmentReceipt = from('ShipmentReceipt')
+                .where('inventoryItemId', inventoryItemId)
+                .orderBy('datetimeReceived').queryFirst()
+        assert shipmentReceipt
+        assert shipmentReceipt.quantityAccepted.compareTo(serviceCtx.quantityAccepted) == 0
+        assert shipmentReceipt.productId.equals(serviceCtx.productId)
+    }
+
+    void testCreateShipmentRouteSegment() {
+        GenericValue shipment = from('Shipment')
+                .where('shipmentId', '9998')
+                .queryOne()
+        assert shipment
+
+        Map serviceCtx = [
+                shipmentId: shipment.shipmentId,
+                shipmentRouteSegmentId: '0001',
+                userLogin: userLogin
+        ]
+        Map serviceResult = dispatcher.runSync('createShipmentRouteSegment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        String shipmentRouteSegmentId = serviceResult.shipmentRouteSegmentId
+        assert shipmentRouteSegmentId
+
+        GenericValue shipmentRouteSegment = from('ShipmentRouteSegment')
+                .where('shipmentId', shipment.shipmentId, 'shipmentRouteSegmentId', shipmentRouteSegmentId)
+                .queryOne()
+        assert shipmentRouteSegment
+        assert '9998'.equals(shipmentRouteSegment.shipmentId)
+        assert shipmentRouteSegment.shipmentRouteSegmentId.equals(shipmentRouteSegmentId)
+    }
+}
\ No newline at end of file
diff --git a/applications/product/testdef/FacilityTest.xml b/applications/product/testdef/FacilityTest.xml
index 8dcf21c..c0c58d9 100644
--- a/applications/product/testdef/FacilityTest.xml
+++ b/applications/product/testdef/FacilityTest.xml
@@ -32,7 +32,7 @@ under the License.
     </test-case>
 
     <test-case case-name="shipment-tests">
-        <simple-method-test location="component://product/minilang/shipment/test/ShipmentTests.xml"/>
+        <junit-test-suite class-name="org.apache.ofbiz.product.ShipmentTests"/>
     </test-case>
 
     <test-case case-name="loadIssuanceTestData">