You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mt...@apache.org on 2019/08/23 18:00:02 UTC

svn commit: r1865786 [1/2] - in /ofbiz/ofbiz-framework/trunk: applications/accounting/groovyScripts/test/ applications/accounting/src/main/groovy/ applications/accounting/src/main/groovy/org/ applications/accounting/src/main/groovy/org/apache/ applicat...

Author: mthl
Date: Fri Aug 23 18:00:01 2019
New Revision: 1865786

URL: http://svn.apache.org/viewvc?rev=1865786&view=rev
Log:
Improved: Compile groovy integration tests
(OFBIZ-11165)

Since there is no need for dynamic reload for integration tests,
it is better to compile Groovy tests.

Added:
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/
    ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/
    ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/
    ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/
    ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/
    ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/
    ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/
    ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/
    ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/
    ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/
    ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy   (with props)
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy   (with props)
Removed:
    ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/test/
    ofbiz/ofbiz-framework/trunk/applications/content/groovyScripts/test/
    ofbiz/ofbiz-framework/trunk/applications/order/groovyScripts/order/test/
    ofbiz/ofbiz-framework/trunk/applications/order/groovyScripts/test/
    ofbiz/ofbiz-framework/trunk/applications/party/groovyScripts/test/
    ofbiz/ofbiz-framework/trunk/applications/product/groovyScripts/product/test/
    ofbiz/ofbiz-framework/trunk/applications/product/groovyScripts/test/
    ofbiz/ofbiz-framework/trunk/framework/base/groovyScripts/
Modified:
    ofbiz/ofbiz-framework/trunk/applications/accounting/testdef/accountingtests.xml
    ofbiz/ofbiz-framework/trunk/applications/content/testdef/ContentTests.xml
    ofbiz/ofbiz-framework/trunk/applications/order/testdef/CustRequestTests.xml
    ofbiz/ofbiz-framework/trunk/applications/order/testdef/OrderTest.xml
    ofbiz/ofbiz-framework/trunk/applications/order/testdef/QuoteTests.xml
    ofbiz/ofbiz-framework/trunk/applications/party/testdef/PartyContactMechTests.xml
    ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductPromoTests.xml
    ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductTest.xml
    ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml

Added: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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.accounting
+
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class AutoAcctgBudgetTests extends GroovyScriptTestCase {
+    void testCreateBudget() {
+        Map serviceCtx = [:]
+        serviceCtx.budgetTypeId = 'CAPITAL_BUDGET'
+        serviceCtx.comments = 'Capital Budget'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').queryOne()
+        Map result = dispatcher.runSync('createBudget', serviceCtx)
+        assert ServiceUtil.isSuccess(result)
+
+        GenericValue budget = EntityQuery.use(delegator).from('Budget').where(result).queryOne()
+        assert budget
+        assert budget.budgetTypeId == 'CAPITAL_BUDGET'
+        assert budget.comments == 'Capital Budget'
+    }
+
+    void testUpdateBudgetStatus() {
+        Map serviceCtx = [:]
+        serviceCtx.budgetId = '9999'
+        serviceCtx.statusId = 'BG_APPROVED'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').queryOne()
+        Map result = dispatcher.runSync('updateBudgetStatus', serviceCtx)
+
+        List<GenericValue> budgetStatuses = EntityQuery.use(delegator).from('BudgetStatus').where('budgetId', '9999').orderBy('-statusDate').queryList()
+        assert ! budgetStatuses?.isEmpty()
+        assert budgetStatuses[0].statusId == 'BG_APPROVED'
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgBudgetTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,51 @@
+/*
+ * 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.accounting
+
+import org.apache.ofbiz.base.util.UtilDateTime
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+class AutoAcctgInvoiceTests extends GroovyScriptTestCase {
+    void testCreateInvoiceContent() {
+        def userLogin = EntityQuery.use(delegator).from('UserLogin')
+            .where('userLoginId', 'system')
+            .cache()
+            .queryOne()
+
+        Map serviceCtx = [
+            invoiceId: '1008',
+            contentId: '1000',
+            invoiceContentTypeId: 'COMMENTS',
+            fromDate: UtilDateTime.nowTimestamp(),
+            userLogin: userLogin
+        ]
+        Map serviceResult = dispatcher.runSync('createInvoiceContent', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        GenericValue invoiceContent = EntityQuery.use(delegator).from('InvoiceContent')
+            .where('invoiceId', serviceResult.invoiceId,
+                   'contentId', serviceResult.contentId,
+                   'invoiceContentTypeId', serviceResult.invoiceContentTypeId)
+            .queryFirst()
+
+        assert invoiceContent.contentId == serviceResult.contentId
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgInvoiceTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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.accounting
+
+import org.apache.ofbiz.base.util.UtilDateTime
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class AutoAcctgLedgerTests extends GroovyScriptTestCase {
+    void testCreateAcctgTrans() {
+        Map serviceCtx = [:]
+        serviceCtx.acctgTransTypeId = 'CREDIT_MEMO'
+        serviceCtx.description = 'Test Credit Memo Transaction'
+        serviceCtx.transactionDate = UtilDateTime.nowTimestamp()
+        serviceCtx.glFiscalTypeId = 'BUDGET'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map serviceResult = dispatcher.runSync('createAcctgTrans', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        GenericValue acctgTrans = EntityQuery.use(delegator).from('AcctgTrans').where('acctgTransId', serviceResult.acctgTransId).queryOne()
+        assert acctgTrans.acctgTransId == serviceResult.acctgTransId
+        assert acctgTrans.acctgTransTypeId == 'CREDIT_MEMO'
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgLedgerTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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.accounting
+
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class AutoAcctgPaymentGatewayTests extends GroovyScriptTestCase {
+    void testUpdatePaymentGatewayConfig() {
+        Map serviceCtx = [:]
+        serviceCtx.paymentGatewayConfigId = 'SAGEPAY_CONFIG'
+        serviceCtx.description = 'Test Payment Gateway Config Id'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map serviceResult = dispatcher.runSync('updatePaymentGatewayConfig', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        GenericValue paymentGatewayConfig = EntityQuery.use(delegator).from('PaymentGatewayConfig').where('paymentGatewayConfigId', 'SAGEPAY_CONFIG').queryOne()
+        assert paymentGatewayConfig
+        assert paymentGatewayConfig.description  == 'Test Payment Gateway Config Id'
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentGatewayTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * 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.accounting
+
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class AutoAcctgPaymentTests extends GroovyScriptTestCase {
+    void testCreatePayment() {
+        Map serviceCtx = [:]
+        serviceCtx.paymentTypeId = 'CUSTOMER_PAYMENT'
+        serviceCtx.partyIdFrom = 'Company'
+        serviceCtx.partyIdTo = 'DemoCustCompany'
+        serviceCtx.amount = new BigDecimal('100.00')
+        serviceCtx.paymentMethodTypeId = 'COMPANY_CHECK'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map serviceResult = dispatcher.runSync('createPayment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        GenericValue payment = EntityQuery.use(delegator).from('Payment').where('paymentId', serviceResult.paymentId).queryOne()
+        assert payment.paymentTypeId == 'CUSTOMER_PAYMENT'
+        assert payment.paymentMethodTypeId == 'COMPANY_CHECK'
+    }
+
+    void testSetPaymentStatus() {
+        Map serviceCtx = [:]
+        serviceCtx.paymentId = '1000'
+        serviceCtx.statusId = 'PAYMENT_AUTHORIZED'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map serviceResult = dispatcher.runSync('setPaymentStatus', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        GenericValue payment = EntityQuery.use(delegator).from('Payment').where('paymentId', '1000').queryOne()
+        assert payment
+        assert serviceResult.oldStatusId == 'PAYMENT_NOT_AUTH'
+    }
+
+    void testQuickSendPayment() {
+        Map serviceCtx = [:]
+        serviceCtx.paymentId = '1001'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map serviceResult = dispatcher.runSync('quickSendPayment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        GenericValue payment = EntityQuery.use(delegator).from('Payment').where('paymentId', '1001').queryOne()
+        assert payment
+        assert payment.statusId == 'PMNT_SENT'
+    }
+
+    void testGetPayments() {
+        Map serviceCtx = [
+                finAccountTransId: '1001',
+                userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+
+        Map serviceResult = dispatcher.runSync('getPayments', serviceCtx)
+
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.payments != null
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/accounting/src/main/groovy/org/apache/ofbiz/accounting/AutoAcctgPaymentTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/testdef/accountingtests.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/testdef/accountingtests.xml?rev=1865786&r1=1865785&r2=1865786&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/accounting/testdef/accountingtests.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/accounting/testdef/accountingtests.xml Fri Aug 23 18:00:01 2019
@@ -43,7 +43,7 @@
         <simple-method-test location="component://accounting/minilang/test/AutoAcctgAgreementTests.xml"/>
     </test-case>
     <test-case case-name="auto-accounting-budget-tests">
-        <groovy-test-suite location="component://accounting/groovyScripts/test/AutoAcctgBudgetTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.accounting.AutoAcctgBudgetTests"/>
     </test-case>
     <test-case case-name="auto-accounting-cost-tests">
         <simple-method-test location="component://accounting/minilang/test/AutoAcctgCostTests.xml"/>
@@ -58,15 +58,15 @@
         <simple-method-test location="component://accounting/minilang/test/AutoAcctgInvoiceTests.xml"/>
     </test-case>
     <test-case case-name="auto-accounting-invoice-tests">
-        <simple-method-test location="component://accounting/groovyScripts/test/AutoAcctgInvoiceTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.accounting.AutoAcctgInvoiceTests"/>
     </test-case>
     <test-case case-name="auto-accounting-payment-tests">
-        <groovy-test-suite location="component://accounting/groovyScripts/test/AutoAcctgPaymentTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.accounting.AutoAcctgPaymentTests"/>
     </test-case>
     <test-case case-name="auto-accounting-paymentgateway-tests">
-        <groovy-test-suite location="component://accounting/groovyScripts/test/AutoAcctgPaymentGatewayTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.accounting.AutoAcctgPaymentGatewayTests"/>
     </test-case>
     <test-case case-name="auto-accounting-ledger-tests">
-        <groovy-test-suite location="component://accounting/groovyScripts/test/AutoAcctgLedgerTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.accounting.AutoAcctgLedgerTests"/>
     </test-case>
 </test-suite>

Added: ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * 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.content
+
+import org.apache.ofbiz.base.util.UtilDateTime
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class ContentTests extends GroovyScriptTestCase {
+    void testGetDataResource() {
+        Map serviceCtx = [:]
+        serviceCtx.dataResourceId = 'TEST_RESOURCE'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map serviceResult = dispatcher.runSync('getDataResource', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.resultData.dataResource.dataResourceId == 'TEST_RESOURCE'
+        assert serviceResult.resultData.dataResource.dataResourceTypeId == 'TEST_RESOURCE_TYPE'
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/content/src/main/groovy/org/apache/ofbiz/content/ContentTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/ofbiz-framework/trunk/applications/content/testdef/ContentTests.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/testdef/ContentTests.xml?rev=1865786&r1=1865785&r2=1865786&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/testdef/ContentTests.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/testdef/ContentTests.xml Fri Aug 23 18:00:01 2019
@@ -26,7 +26,7 @@
     </test-case>
     
     <test-case case-name="content-tests">
-        <groovy-test-suite location="component://content/groovyScripts/test/ContentTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.content.ContentTests"/>
     </test-case> 
 </test-suite>
 

Added: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,140 @@
+/*
+ * 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.order
+
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class OrderTests extends GroovyScriptTestCase {
+    void testAddRequirementTask() {
+        Map serviceCtx = [
+            requirementId: '1000',
+            workEffortId: '9000',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync("addRequirementTask", serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+    void testCreateReturnAdjustment() {
+        Map serviceCtx = [
+            amount: '2.0000',
+            returnId: '1009',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('createReturnAdjustment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.returnAdjustmentId != null
+    }
+    void testQuickReturnOrder() {
+        Map serviceCtx = [
+            orderId: 'TEST_DEMO10090',
+            returnHeaderTypeId: 'CUSTOMER_RETURN',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('quickReturnOrder', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.returnId != null
+    }
+    void testCreateReturnAndItemOrAdjustment() {
+        Map serviceCtx = [
+            orderId: 'DEMO10090',
+            returnId: '1009',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('createReturnAndItemOrAdjustment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.returnAdjustmentId != null
+    }
+    void testCheckReturnComplete() {
+        Map serviceCtx = [
+            amount: '2.0000',
+            returnId: '1009',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('checkReturnComplete', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.statusId != null
+    }
+    void testCheckPaymentAmountForRefund() {
+        Map serviceCtx = [
+            returnId: '1009',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('checkPaymentAmountForRefund', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+    //TODO: This can be moved to a different file
+    void testCheckCreateProductRequirementForFacility() {
+        Map serviceCtx = [
+            facilityId: 'WebStoreWarehouse',
+            orderItemSeqId: '00001',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('checkCreateProductRequirementForFacility', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+    void testCreateReturnItemShipment() {
+        Map serviceCtx = [
+            shipmentId: '1014',
+            shipmentItemSeqId: '00001',
+            returnId: '1009',
+            returnItemSeqId: '00001',
+            quantity: new BigDecimal('2.0000'),
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('createReturnItemShipment', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+    void testCreateReturnStatus() {
+        Map serviceCtx = [
+            returnId: '1009',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('createReturnStatus', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+    void testCreateReturnHeader() {
+        Map serviceCtx = [
+            toPartyId: 'Company',
+            returnHeaderTypeId: 'CUSTOMER_RETURN',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('createReturnHeader', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.returnId != null
+    }
+    void testGetReturnAmountByOrder() {
+        Map serviceCtx = [
+            returnId: '1009',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('getReturnAmountByOrder', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+    void testCheckCreateStockRequirementQoh() {
+        Map serviceCtx = [
+            orderId: 'TEST_DEMO10090',
+            orderItemSeqId: '00001',
+            userLogin: EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        ]
+        Map serviceResult = dispatcher.runSync('checkCreateStockRequirementQoh', serviceCtx)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/OrderTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,516 @@
+/*
+ * 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.order
+
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+import org.apache.ofbiz.order.shoppingcart.ShoppingCart
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.base.util.Debug
+
+import java.sql.Timestamp
+
+import static org.apache.ofbiz.base.util.UtilDateTime.nowTimestamp
+import static org.apache.ofbiz.entity.condition.EntityCondition.makeCondition
+import static org.apache.ofbiz.entity.condition.EntityComparisonOperator.GREATER_THAN_EQUAL_TO
+
+class QuoteTests extends GroovyScriptTestCase {
+
+    // Retrieves a particular login record.
+    private GenericValue getUserLogin(String userLoginId) {
+        GenericValue userLogin = EntityQuery.use(delegator)
+                .from('UserLogin').where(userLoginId: userLoginId).queryOne()
+        assert userLogin
+        return userLogin
+    }
+
+    // Test case for successfully creating a QuoteWorkEffort record.
+    void testCreateQuoteWorkEffort() {
+        GenericValue userLogin = getUserLogin('DemoRepStore')
+
+        def quoteId = '9001'
+        def workEffortId = '9007'
+
+        def input = [userLogin: userLogin, quoteId: quoteId, workEffortId: workEffortId]
+        Map serviceResult = dispatcher.runSync('ensureWorkEffortAndCreateQuoteWorkEffort', input)
+
+        // Confirm the service output parameters.
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.workEffortId == input.workEffortId
+
+        // Confirm the database changes.
+        GenericValue quoteWorkEffort = EntityQuery.use(delegator)
+                .from('QuoteWorkEffort').where(quoteId: quoteId, workEffortId: workEffortId).queryOne()
+        assert quoteWorkEffort
+    }
+
+    // Test case for unsuccessfully creating a QuoteWorkEffort record by attempting
+    // to use a quoteId and workEffortId that has already been used in an existing
+    // QuoteWorkEffortRecord.
+    void testCreateQuoteWorkEffortFail() {
+        // Use to confirm nothing has changed at the end of the test
+        Timestamp startTime = nowTimestamp()
+        GenericValue userLogin = getUserLogin('DemoRepStore')
+
+        def quoteId = '9001'
+        def workEffortId = '9007'
+
+        // Execute the service, note break-on-error is false so that the test
+        // itself doesn't fail and we also need a separate transaction so our
+        // lookup below doesn't fail due to the rollback
+        def input = [userLogin: userLogin, quoteId: quoteId, workEffortId: workEffortId]
+        Map serviceResult
+        try {
+            serviceResult = dispatcher.runSync('ensureWorkEffortAndCreateQuoteWorkEffort', input)
+        } catch (Exception e) {
+            serviceResult = ServiceUtil.returnError(e.toString())
+        }
+        assert ServiceUtil.isError(serviceResult)
+
+        // Confirm the database changes, in this case nothing should have changed
+        GenericValue quoteWorkEffort = EntityQuery.use(delegator)
+                .from('QuoteWorkEffort').where(
+                    makeCondition(quoteId: quoteId, workEffortId: workEffortId),
+                    makeCondition('lastUpdatedStamp', GREATER_THAN_EQUAL_TO, startTime)
+                ).queryOne()
+
+        assert !quoteWorkEffort
+    }
+
+    // Test case for CheckUpdateQuotestatus
+    void testCheckUpdateQuotestatus() {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                quoteId: '9001',
+        ]
+
+        Map serviceResult = dispatcher.runSync('checkUpdateQuoteStatus', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quote = EntityQuery.use(delegator).from('Quote').where(quoteId: '9001').queryOne()
+        assert quote.statusId == 'QUO_ORDERED'
+    }
+
+    // Test case for calling createQuoteWorkEffort without a workEffortId which
+    // triggers an ECA to create the WorkEffort first.
+    void testCreateWorkEffortAndQuoteWorkEffort() {
+        GenericValue userLogin = getUserLogin('flexadmin')
+
+        // Use the bare minimum inputs necessary to create the work effort as we
+        // aren't testing that service, only that it plays well as an ECA.
+        def input = [
+            currentStatusId: 'ROU_ACTIVE',
+            workEffortName: 'Test WorkEffort',
+            workEffortTypeId: 'ROUTING',
+            quoteId: '9000',
+            userLogin: userLogin
+        ]
+        Map serviceResult = dispatcher.runSync('ensureWorkEffortAndCreateQuoteWorkEffort', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.workEffortId
+
+        // Confirm that a matching WorkEffort was created.
+        GenericValue workEfforts = EntityQuery.use(delegator)
+                .from('WorkEffort').where(
+                    workEffortId: serviceResult.workEffortId,
+                    currentStatusId: input.currentStatusId,
+                    workEffortName: input.workEffortName,
+                    workEffortTypeId: input.workEffortTypeId
+                ).queryOne()
+        assert workEfforts
+
+        GenericValue quoteWorkEffort = EntityQuery.use(delegator)
+                .from('WorkEffort').where(
+                    quoteId: input.quoteId,
+                    workEffortId: serviceResult.workEffortId
+                ).queryOne()
+        assert quoteWorkEffort
+    }
+
+    // Test createQuote service
+    void testCreateQuote () {
+        GenericValue userLogin = getUserLogin('system')
+        Map input = [
+                userLogin: userLogin,
+                partyId: 'Company'
+        ]
+        Map serviceResult = dispatcher.runSync('createQuote', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.quoteId
+        GenericValue quote = EntityQuery.use(delegator).from('Quote').where(quoteId: serviceResult.quoteId).queryOne()
+        assert quote
+    }
+
+    // Test updateQuote service
+    void testUpdateQuote() {
+        GenericValue userLogin = getUserLogin('system')
+        Map input = [
+                userLogin: userLogin,
+                quoteId: '9000',
+                statusId: 'QUO_APPROVED'
+        ]
+        Map serviceResult = dispatcher.runSync('updateQuote', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quote = EntityQuery.use(delegator).from('Quote').where(quoteId: '9000').queryOne()
+        assert quote.statusId == 'QUO_APPROVED'
+
+        input.statusId = 'QUO_CREATED'
+        serviceResult = dispatcher.runSync('updateQuote', input)
+        assert ServiceUtil.isError(serviceResult)
+    }
+
+    // Test copyQuote service
+    void testCopyQuote() {
+        GenericValue userLogin = getUserLogin('system')
+        Map input = [
+                userLogin: userLogin,
+                quoteId: '9000'
+        ]
+        Map serviceResult = dispatcher.runSync('copyQuote', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.quoteId
+    }
+
+    // Test createQuoteItem service
+    void testCreateQuoteItem() {
+        GenericValue userLogin = getUserLogin('system')
+        Map input = [
+                userLogin: userLogin,
+                quoteId: '9000',
+                quoteItemSeqId: '00004',
+                productId: 'GZ-1001'
+        ]
+        Map serviceResult = dispatcher.runSync('createQuoteItem', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where(quoteId: '9000', quoteItemSeqId: '00004').queryOne()
+        assert quoteItem.quoteUnitPrice
+    }
+
+    // Test updateQuoteItem service
+    void testUpdateQuoteItem() {
+        GenericValue userLogin = getUserLogin('system')
+
+        Map input = [
+                userLogin: userLogin,
+                quoteId: '9000',
+                quoteItemSeqId: '00002',
+                productId: 'GZ-1001'
+        ]
+        Map serviceResult = dispatcher.runSync('updateQuoteItem', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where(quoteId: '9000', quoteItemSeqId: '00002').queryOne()
+        assert quoteItem.productId == 'GZ-1001'
+    }
+
+    // Test removeQuoteItem service
+    void testRemoveQuoteItem() {
+        GenericValue userLogin = getUserLogin('system')
+
+        Map input = [
+                userLogin: userLogin,
+                quoteId: '9000',
+                quoteItemSeqId: '00002'
+        ]
+        Map serviceResult = dispatcher.runSync('removeQuoteItem', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where(quoteId: '9000', quoteItemSeqId: '00002').queryOne()
+        assert !quoteItem
+        GenericValue quoteTerm = EntityQuery.use(delegator).from('QuoteTerm').where(quoteId: '9000', quoteItemSeqId: '00002', termTypeId: 'FIN_PAYMENT_DISC').queryOne()
+        assert !quoteTerm
+    }
+
+    // test create a Term
+    void testCreateQuoteTerm () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                termTypeId: 'FIN_PAYMENT_DISC',
+                quoteId: '9000',
+                quoteItemSeqId: '00001',
+                termValue: 40L,
+                termDays: 4L,
+                uomId: 'CNY',
+                description: 'create quoteTerm'
+        ]
+
+        Map serviceResult = dispatcher.runSync('createQuoteTerm', input)
+        List<GenericValue> terms = EntityQuery.use(delegator).from('QuoteTerm')
+                .where(termTypeId: 'FIN_PAYMENT_DISC', quoteId: '9000', quoteItemSeqId: '00001').queryList()
+
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert terms
+        GenericValue term = terms[0]
+        assert input.termTypeId == term.termTypeId
+        assert input.termValue == term.termValue
+        assert input.termDays == term.termDays
+        assert input.uomId == term.uomId
+        assert input.description == term.description
+    }
+
+    // Update a term.
+    void testUpdateQuoteTerm() {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+            termTypeId: 'FIN_PAYMENT_DISC',
+            quoteId: '9000',
+            quoteItemSeqId: '00002',
+            termValue: 30L,
+            termDays: 3L,
+            uomId: 'CNY',
+            description: 'update quoteterm',
+            userLogin: userLogin
+        ]
+        Map serviceResult = dispatcher.runSync('updateQuoteTerm', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+
+        // Confirm that a matching Quoteterm was updated
+        GenericValue quoteTerm = EntityQuery.use(delegator)
+                .from('QuoteTerm').where(
+                    termTypeId: input.termTypeId,
+                    quoteId: input.quoteId,
+                    quoteItemSeqId: input.quoteItemSeqId
+                ).queryOne()
+        assert quoteTerm
+        assert quoteTerm.termTypeId == input.termTypeId
+        assert quoteTerm.quoteId == input.quoteId
+        assert quoteTerm.quoteItemSeqId == input.quoteItemSeqId
+        assert quoteTerm.termValue == input.termValue
+        assert quoteTerm.termDays == input.termDays
+        assert quoteTerm.uomId == input.uomId
+        assert quoteTerm.description == input.description
+    }
+
+    // delete a term
+    void testDeleteQuoteTerm () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                termTypeId: 'FIN_PAYMENT_DISC',
+                quoteId: '9000',
+                quoteItemSeqId: '00003'
+        ]
+
+        Map serviceResult = dispatcher.runSync('deleteQuoteTerm', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteTerm = EntityQuery.use(delegator).from('QuoteTerm').where(termTypeId: serviceResult.termTypeId, quoteId: serviceResult.quoteId, quoteItemSeqId: serviceResult.quoteItemSeqId).queryOne()
+        assert !quoteTerm
+    }
+
+    // Create Quote Attribute
+    void testCreateQuoteAttribute () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                quoteId: '9001',
+                attrName: 'Test'
+        ]
+
+        Map serviceResult = dispatcher.runSync('createQuoteAttribute', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+
+    // Create Quote Coefficient
+    void testCreateQuoteCoefficient () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                quoteId: '9001',
+                coeffName: 'Test'
+        ]
+
+        Map serviceResult = dispatcher.runSync('createQuoteCoefficient', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+
+    // Get Next Quote Id
+    void testGetNextQuoteId () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                partyId: 'DemoCustomer-1'
+        ]
+
+        Map serviceResult = dispatcher.runSync('getNextQuoteId', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.quoteId
+    }
+
+    // Test Quote Sequence Enforced
+    void testQuoteSequenceEnforced() {
+        GenericValue userLogin = getUserLogin('system')
+        GenericValue partyAcctgPreference = EntityQuery.use(delegator)
+                .from('PartyAcctgPreference').where('partyId', 'DemoCustomer').queryOne()
+        Long lastQuoteNumber = partyAcctgPreference.lastQuoteNumber
+        if (!lastQuoteNumber) {
+            lastQuoteNumber = 0
+        }
+
+        def input = [
+                userLogin: userLogin,
+                partyId: 'DemoCustomer',
+                partyAcctgPreference: partyAcctgPreference
+        ]
+
+        Map serviceResult = dispatcher.runSync('quoteSequenceEnforced', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        assert serviceResult.quoteId == lastQuoteNumber +1L
+    }
+
+    // Copy Quote Item
+    void testCopyQuoteItem () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                quoteId: '9001',
+                quoteItemSeqId: '00001',
+                quoteIdTo: '9001',
+                quoteItemSeqIdTo: '00002',
+                copyQuoteAdjustments: 'Y'
+        ]
+
+        Map serviceResult = dispatcher.runSync('copyQuoteItem', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteAdjustment = EntityQuery.use(delegator).from('QuoteAdjustment').where('quoteId', '9001', 'quoteItemSeqId', '00002', 'quoteAdjustmentTypeId', 'SALES_TAX').queryFirst()
+        assert quoteAdjustment
+    }
+
+    // Test createQuoteAndQuoteItemForRequest
+    void testCreateQuoteAndQuoteItemForRequest () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                custRequestId: '9000',
+                custRequestItemSeqId: '00001'
+        ]
+        Map serviceResult = dispatcher.runSync('createQuoteAndQuoteItemForRequest', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where('quoteId', serviceResult.quoteId, 'custRequestItemSeqId', '00001').queryFirst()
+        assert quoteItem
+    }
+
+    // Test createQuoteFromCart
+    void testCreateQuoteFromCart() {
+        GenericValue userLogin = getUserLogin('system')
+        String productId = 'SV-1001'
+        String partyId = 'DemoCustomer'
+
+        ShoppingCart cart = new ShoppingCart(delegator, '9000', Locale.getDefault(), 'USD')
+        cart.setOrderType('SALES_ORDER')
+        cart.setChannelType('WEB_SALES_CHANNEL')
+        cart.setBillToCustomerPartyId(partyId)
+        cart.setPlacingCustomerPartyId(partyId)
+        cart.setShipToCustomerPartyId(partyId)
+        cart.setEndUserCustomerPartyId(partyId)
+        cart.setUserLogin(userLogin, dispatcher)
+        cart.addOrIncreaseItem(productId, null, BigDecimal.ONE, null, null, null,
+                null, null, null, null, 'DemoCatalog', null, null,
+                null, null, dispatcher)
+        cart.setDefaultCheckoutOptions(dispatcher)
+
+        def input = [
+            userLogin: userLogin,
+            cart: cart,
+            applyStorePromotions: 'Y'
+        ]
+        Map serviceResult = dispatcher.runSync('createQuoteFromCart', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where('quoteId', serviceResult.quoteId, 'productId', productId).queryFirst()
+        assert quoteItem
+        GenericValue quoteAdjustment = EntityQuery.use(delegator).from('QuoteAdjustment').where('quoteId', serviceResult.quoteId).queryFirst()
+        assert quoteAdjustment
+    }
+
+    // Test createQuoteFromShoppingList
+    void testCreateQuoteFromShoppingList() {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+            userLogin: userLogin,
+            shoppingListId: '9000',
+            applyStorePromotions: 'Y'
+        ]
+        Map serviceResult = dispatcher.runSync('createQuoteFromShoppingList', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where('quoteId', serviceResult.quoteId, 'productId', 'SV-1001').queryFirst()
+        assert quoteItem
+        GenericValue quoteAdjustment = EntityQuery.use(delegator).from('QuoteAdjustment').where('quoteId', serviceResult.quoteId).queryFirst()
+        assert quoteAdjustment
+    }
+
+    // Test autoUpdateQuotePrice
+    void testAutoUpdateQuotePrice() {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+            userLogin: userLogin,
+            quoteId: '9000',
+            quoteItemSeqId: '00001',
+            defaultQuoteUnitPrice: BigDecimal.valueOf(12)
+        ]
+        Map serviceResult = dispatcher.runSync('autoUpdateQuotePrice', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where('quoteId', '9000', 'quoteItemSeqId', '00001').queryOne()
+        assert quoteItem.quoteUnitPrice == 12
+    }
+
+    // Test createQuoteFromCustRequest
+    void testCreateQuoteFromCustRequest () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                custRequestId: '9000'
+        ]
+        Map serviceResult = dispatcher.runSync('createQuoteFromCustRequest', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue quoteItem = EntityQuery.use(delegator).from('QuoteItem').where('quoteId', serviceResult.quoteId, 'custRequestId', '9000').queryFirst()
+        assert quoteItem
+    }
+
+    // Test autoCreateQuoteAdjustments
+    void testAutoCreateQuoteAdjustments () {
+        GenericValue userLogin = EntityQuery.use(delegator)
+        .from('UserLogin').where(userLoginId: 'system').queryOne()
+        assert userLogin
+        GenericValue quote = EntityQuery.use(delegator)
+        .from('Quote').where(quoteId: '9001').queryOne()
+
+        def input = [
+            userLogin: userLogin,
+            quoteId: '9001'
+        ]
+        Map serviceResult = dispatcher.runSync('autoCreateQuoteAdjustments', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+        GenericValue promoQuoteAdjustment = EntityQuery.use(delegator).from('QuoteAdjustment').where('quoteId', '9001', 'quoteAdjustmentTypeId', 'PROMOTION_ADJUSTMENT').queryFirst()
+        assert promoQuoteAdjustment
+    }
+
+    // Create Quote Note
+    void testCreateQuoteNote () {
+        GenericValue userLogin = getUserLogin('system')
+        def input = [
+                userLogin: userLogin,
+                quoteId: '9001',
+                noteName: 'Test Note',
+                noteInfo: 'This is a test'
+        ]
+
+        Map serviceResult = dispatcher.runSync('createQuoteNote', input)
+        assert ServiceUtil.isSuccess(serviceResult)
+    }
+
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/QuoteTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * 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.order
+
+import org.apache.ofbiz.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class TestCustRequestPermissionCheck extends GroovyScriptTestCase {
+    void testCustRequestPermission() {
+        Map serviceCtx = [:]
+        serviceCtx.fromPartyId = 'Company'
+        serviceCtx.mainAction = 'TEST'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map result = dispatcher.runSync('custRequestPermissionCheck', serviceCtx)
+        assert ServiceUtil.isSuccess(result)
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/order/src/main/groovy/org/apache/ofbiz/order/TestCustRequestPermissionCheck.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/ofbiz-framework/trunk/applications/order/testdef/CustRequestTests.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/testdef/CustRequestTests.xml?rev=1865786&r1=1865785&r2=1865786&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/order/testdef/CustRequestTests.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/order/testdef/CustRequestTests.xml Fri Aug 23 18:00:01 2019
@@ -27,6 +27,6 @@ under the License.
     </test-case>
 
     <test-case case-name="test-cust-request-permission-check">
-        <groovy-test-suite location="component://order/groovyScripts/order/test/TestCustRequestPermissionCheck.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.order.TestCustRequestPermissionCheck"/>
     </test-case>
 </test-suite>

Modified: ofbiz/ofbiz-framework/trunk/applications/order/testdef/OrderTest.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/testdef/OrderTest.xml?rev=1865786&r1=1865785&r2=1865786&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/order/testdef/OrderTest.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/order/testdef/OrderTest.xml Fri Aug 23 18:00:01 2019
@@ -34,6 +34,6 @@ under the License.
         <simple-method-test location="component://order/minilang/test/OrderTests.xml"/>
     </test-case>
     <test-case case-name="order-tests">
-        <groovy-test-suite location="component://order/groovyScripts/test/OrderTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.order.OrderTests"/>
     </test-case>
 </test-suite>

Modified: ofbiz/ofbiz-framework/trunk/applications/order/testdef/QuoteTests.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/order/testdef/QuoteTests.xml?rev=1865786&r1=1865785&r2=1865786&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/order/testdef/QuoteTests.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/order/testdef/QuoteTests.xml Fri Aug 23 18:00:01 2019
@@ -28,6 +28,6 @@ under the License.
     <!-- <test-case case-name="quote-tests"> <simple-method-test location="component://order/minilang/test/QuoteTests.xml"/> 
         </test-case> -->
      <test-case case-name="quoteTests">
-        <groovy-test-suite name="quoteTests" location="component://order/groovyScripts/test/QuoteTests.groovy"/>
+        <junit-test-suite class-name="org.apache.ofbiz.order.QuoteTests"/>
     </test-case>
 </test-suite>

Added: ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * 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.party
+
+import org.apache.ofbiz.base.util.UtilDateTime
+import org.apache.ofbiz.party.contact.ContactMechWorker
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class ContactMechWorkerTests extends GroovyScriptTestCase {
+
+    void testPartyContactMechResolution() {
+        //control for the DemoCustomer that postal, email, telecom and ftp contact are present and return correct information
+        List partyContactMechValueMaps = ContactMechWorker.getPartyContactMechValueMaps(delegator, "DemoCustomer", true)
+        assert partyContactMechValueMaps
+        assert partyContactMechValueMaps.size() == 7
+        boolean foundPostalAddress, foundTelecom, foundEmailAddress, foundFtpAddress = false
+        partyContactMechValueMaps.forEach {
+            Map partyContactMechValueMap ->
+                switch (partyContactMechValueMap?.contactMech?.contactMechId) {
+                    case '9015':
+                        foundPostalAddress = true
+                        assert partyContactMechValueMap.contactMech.contactMechTypeId == 'POSTAL_ADDRESS'
+                        assert partyContactMechValueMap.partyContactMech
+                        assert partyContactMechValueMap.contactMechType
+                        assert partyContactMechValueMap.partyContactMechPurposes
+                        assert partyContactMechValueMap.partyContactMechPurposes.size() == 3
+                        assert partyContactMechValueMap.postalAddress
+                        assert partyContactMechValueMap.postalAddress.contactMechId == '9015'
+                        assert partyContactMechValueMap.postalAddress.address1 == '2004 Factory Blvd'
+                        break
+                    case '9027':
+                        foundTelecom = true
+                        assert partyContactMechValueMap.contactMech.contactMechTypeId == 'TELECOM_NUMBER'
+                        assert partyContactMechValueMap.partyContactMech
+                        assert partyContactMechValueMap.contactMechType
+                        assert partyContactMechValueMap.partyContactMechPurposes
+                        assert partyContactMechValueMap.partyContactMechPurposes.size() == 1
+                        assert partyContactMechValueMap.telecomNumber
+                        assert partyContactMechValueMap.telecomNumber.contactMechId == '9027'
+                        assert partyContactMechValueMap.telecomNumber.contactNumber == '444-4444'
+                        break
+                    case '9126':
+                        foundEmailAddress = true
+                        assert partyContactMechValueMap.contactMech.contactMechTypeId == 'EMAIL_ADDRESS'
+                        assert partyContactMechValueMap.contactMech.infoString == 'ofbiztest@foo.com'
+                        assert partyContactMechValueMap.partyContactMech
+                        assert partyContactMechValueMap.contactMechType
+                        assert partyContactMechValueMap.partyContactMechPurposes
+                        assert partyContactMechValueMap.partyContactMechPurposes.size() == 2
+                        break
+                    case '9127':
+                        foundFtpAddress = true
+                        assert partyContactMechValueMap.contactMech.contactMechTypeId == 'FTP_ADDRESS'
+                        assert partyContactMechValueMap.partyContactMech
+                        assert partyContactMechValueMap.contactMechType
+                        assert !partyContactMechValueMap.partyContactMechPurposes
+                        assert partyContactMechValueMap.ftpAddress
+                        assert partyContactMechValueMap.ftpAddress.hostname == "ftp://apacheofbiz.foo.com"
+                        break
+                }
+        }
+        assert foundPostalAddress && foundTelecom && foundEmailAddress && foundFtpAddress
+
+        //Restart a search at now, the email 9126 need to have only one purpose
+        partyContactMechValueMaps = ContactMechWorker.getPartyContactMechValueMaps(delegator, "DemoCustomer", false, "EMAIL_ADDRESS")
+        partyContactMechValueMaps.forEach {
+            Map partyContactMechValueMap ->
+                switch (partyContactMechValueMap?.contactMech?.contactMechId) {
+                    case '9126':
+                        assert partyContactMechValueMap.partyContactMechPurposes.size() == 1
+                        break
+                }
+        }
+
+        //Restart a search at 05/13/2001 10:00:00.000, the email 9126 need to have two purposes
+        partyContactMechValueMaps = ContactMechWorker.getPartyContactMechValueMaps(delegator, "DemoCustomer", UtilDateTime.toTimestamp("05/13/2001 10:00:00.000"), "EMAIL_ADDRESS")
+        partyContactMechValueMaps.forEach {
+            Map partyContactMechValueMap ->
+                switch (partyContactMechValueMap?.contactMech?.contactMechId) {
+                    case '9126':
+                        assert partyContactMechValueMap.partyContactMechPurposes.size() == 2
+                        break
+                }
+        }
+    }
+
+    void testOrderContactMechResolution() {
+        List orderContactMechValueMaps = ContactMechWorker.getOrderContactMechValueMaps(delegator, "Demo1002")
+        assert orderContactMechValueMaps
+        assert orderContactMechValueMaps.size() == 3
+
+        boolean foundBillingAddress, foundShippingAddress, foundOrderEmail = false
+        orderContactMechValueMaps.forEach {
+            Map orderContactMechValueMap ->
+                switch (orderContactMechValueMap.contactMech?.contactMechId) {
+                    case '9015':
+                        assert orderContactMechValueMap.contactMech.contactMechTypeId == 'POSTAL_ADDRESS'
+                        assert orderContactMechValueMap.contactMechType
+                        assert orderContactMechValueMap.contactMechPurposeType
+                        assert orderContactMechValueMap.orderContactMech
+                        assert orderContactMechValueMap.postalAddress
+                        assert orderContactMechValueMap.postalAddress.contactMechId == '9015'
+                        assert orderContactMechValueMap.postalAddress.address1 == '2004 Factory Blvd'
+                        foundBillingAddress = foundBillingAddress?: orderContactMechValueMap.contactMechPurposeType.contactMechPurposeTypeId == 'BILLING_LOCATION'
+                        foundShippingAddress = foundShippingAddress?: orderContactMechValueMap.contactMechPurposeType.contactMechPurposeTypeId == 'SHIPPING_LOCATION'
+                        break
+                    case '9026':
+                        assert orderContactMechValueMap.contactMech.contactMechTypeId == 'EMAIL_ADDRESS'
+                        assert orderContactMechValueMap.contactMech.infoString == 'ofbiztest@example.com'
+                        assert orderContactMechValueMap.orderContactMech
+                        assert orderContactMechValueMap.contactMechType
+                        foundOrderEmail = orderContactMechValueMap.contactMechPurposeType.contactMechPurposeTypeId == 'ORDER_EMAIL'
+                        break
+                    default:
+                        assert false
+                        break
+                }
+        }
+        assert foundBillingAddress && foundShippingAddress && foundOrderEmail
+    }
+
+    void testWorkEffortContactMechResolution() {
+        List workEffortContactMechValueMaps = ContactMechWorker.getWorkEffortContactMechValueMaps(delegator, "TEST_CM_WORKER")
+        assert workEffortContactMechValueMaps
+        assert workEffortContactMechValueMaps.size() == 3
+
+        boolean foundPostalAddress, foundPhone, foundEmail = false
+        workEffortContactMechValueMaps.forEach {
+            Map workEffortContactMechValueMap ->
+                switch (workEffortContactMechValueMap.contactMech?.contactMechId) {
+                    case '9015':
+                        assert workEffortContactMechValueMap.contactMech.contactMechTypeId == 'POSTAL_ADDRESS'
+                        assert workEffortContactMechValueMap.contactMechType
+                        assert workEffortContactMechValueMap.workEffortContactMech
+                        assert workEffortContactMechValueMap.postalAddress
+                        assert workEffortContactMechValueMap.postalAddress.contactMechId == '9015'
+                        assert workEffortContactMechValueMap.postalAddress.address1 == '2004 Factory Blvd'
+                        foundPostalAddress = true
+                        break
+                    case '9126':
+                        assert workEffortContactMechValueMap.contactMech.contactMechTypeId == 'EMAIL_ADDRESS'
+                        assert workEffortContactMechValueMap.contactMech.infoString == 'ofbiztest@foo.com'
+                        assert workEffortContactMechValueMap.workEffortContactMech
+                        assert workEffortContactMechValueMap.contactMechType
+                        foundEmail = true
+                        break
+                    case '9125':
+                        assert workEffortContactMechValueMap.contactMech.contactMechTypeId == 'TELECOM_NUMBER'
+                        assert workEffortContactMechValueMap.workEffortContactMech
+                        assert workEffortContactMechValueMap.contactMechType
+                        assert workEffortContactMechValueMap.telecomNumber.contactNumber == '555-5555'
+                        foundPhone = true
+                        break
+                    default:
+                        assert false
+                        break
+                }
+        }
+        assert foundPostalAddress && foundEmail && foundPhone
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/party/src/main/groovy/org/apache/ofbiz/party/ContactMechWorkerTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/ofbiz-framework/trunk/applications/party/testdef/PartyContactMechTests.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/party/testdef/PartyContactMechTests.xml?rev=1865786&r1=1865785&r2=1865786&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/party/testdef/PartyContactMechTests.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/party/testdef/PartyContactMechTests.xml Fri Aug 23 18:00:01 2019
@@ -25,7 +25,7 @@
         <entity-xml action="load" entity-xml-url="component://party/testdef/data/PartyContactMechTestData.xml"/>
     </test-case>
     <test-case case-name="ContactMechWorker-tests">
-        <groovy-test-suite name="contactMechWorker" location="component://party/groovyScripts/test/ContactMechWorkerTests.groovy"/>
+        <junit-test-suite className="org.apache.ofbiz.party.ContactMechWorkerTests"/>
     </test-case>
     <test-case case-name="partyContactMech-tests">
         <simple-method-test location="component://party/minilang/test/PartyContactMechTests.xml"/>

Added: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy?rev=1865786&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy (added)
+++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy Fri Aug 23 18:00:01 2019
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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.entity.GenericValue
+import org.apache.ofbiz.entity.util.EntityQuery
+import org.apache.ofbiz.service.ServiceUtil
+import org.apache.ofbiz.testtools.GroovyScriptTestCase
+
+class ProductFeatureTypeTests extends GroovyScriptTestCase {
+    void testCreateProductFeatureType() {
+        Map serviceCtx = [:]
+        serviceCtx.productFeatureTypeId = 'testProdFeat'
+        serviceCtx.description = 'Test Description'
+        serviceCtx.hasTable = 'N'
+        serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne()
+        Map result = dispatcher.runSync('createProductFeatureType', serviceCtx)
+        assert ServiceUtil.isSuccess(result)
+
+        GenericValue productFeatureType = EntityQuery.use(delegator).from('ProductFeatureType').where('productFeatureTypeId', 'testProdFeat').queryOne()
+        assert productFeatureType.productFeatureTypeId == 'testProdFeat'
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductFeatureTypeTests.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain