Nice addition Nicolas. Thanks.

Pranay Pandey
HotWax Media
http://www.hotwaxmedia.com
On Oct 8, 2014, at 5:47 PM, [email protected] wrote:

> Author: nmalin
> Date: Wed Oct  8 12:17:55 2014
> New Revision: 1630079
> 
> URL: http://svn.apache.org/r1630079
> Log:
> Add junit test to control entity-auto on create, update and delete to ensure 
> no regression when the entity-auto engine will be improve (like OFBIZ-5800)
> 
> Added:
>    
> ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java
>    (with props)
> Modified:
>    ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml
>    ofbiz/trunk/framework/service/servicedef/services_test_se.xml
>    ofbiz/trunk/framework/service/testdef/servicetests.xml
> 
> Modified: ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml?rev=1630079&r1=1630078&r2=1630079&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml (original)
> +++ ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml Wed Oct  8 
> 12:17:55 2014
> @@ -123,6 +123,21 @@ under the License.
>         <prim-key field="testFieldTypeId"/>
>     </entity>
>   <!-- =========================================================
> +    Testing Item entity : testing line on a Testing entity
> +  ========================================================= -->
> +    <entity entity-name="TestingItem"
> +            package-name="org.ofbiz.entity.test"
> +            title="Testing Item">
> +        <field name="testingId" type="id-ne"/>
> +        <field name="testingSeqId" type="id-ne"/>
> +        <field name="testingHistory" type="very-long"/>
> +        <prim-key field="testingId"/>
> +        <prim-key field="testingSeqId"/>
> +        <relation type="one" fk-name="TESTING_IT_TEST" 
> rel-entity-name="Testing">
> +            <key-map field-name="testingId"/>
> +        </relation>
> +    </entity>
> +  <!-- =========================================================
>     Testing Node entity : hierarchy of nodes having
>     'testing node member' as potential members
>   ========================================================= -->
> 
> Modified: ofbiz/trunk/framework/service/servicedef/services_test_se.xml
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/servicedef/services_test_se.xml?rev=1630079&r1=1630078&r2=1630079&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/service/servicedef/services_test_se.xml (original)
> +++ ofbiz/trunk/framework/service/servicedef/services_test_se.xml Wed Oct  8 
> 12:17:55 2014
> @@ -48,6 +48,50 @@ under the License.
>         location="org.ofbiz.service.test.ServiceEngineTestServices" 
> invoke="testServiceLockWaitTimeoutRetryWaiter">
>     </service>
> 
> +    <!-- testing different entity-auto call-->
> +    <service name="testEntityAutoCreateTestingPkPresent" auth="false"
> +        engine="entity-auto" default-entity-name="Testing" invoke="create">
> +        <auto-attributes include="pk" mode="IN" optional="false"/>
> +        <auto-attributes include="nonpk" mode="IN" optional="true"/>
> +    </service>
> +    <service name="testEntityAutoCreateTestingPkMissing" auth="false"
> +        engine="entity-auto" default-entity-name="Testing" invoke="create">
> +        <auto-attributes include="nonpk" mode="IN" optional="true"/>
> +        <attribute name="testingId" mode="OUT" type="String"/>
> +    </service>
> +    <service name="testEntityAutoCreateTestingItemPkPresent" auth="false"
> +        engine="entity-auto" default-entity-name="TestingItem" 
> invoke="create">
> +        <auto-attributes include="pk" mode="IN" optional="false"/>
> +        <auto-attributes include="nonpk" mode="IN" optional="true"/>
> +    </service>
> +    <service name="testEntityAutoCreateTestingItemPkMissing" auth="false"
> +        engine="entity-auto" default-entity-name="TestingItem" 
> invoke="create">
> +        <auto-attributes include="nonpk" mode="IN" optional="true"/>
> +        <attribute name="testingId" mode="IN" type="String"/>
> +        <attribute name="testingSeqId" mode="OUT" type="String"/>
> +    </service>
> +    <service name="testEntityAutoCreateTestingNodeMemberPkPresent" 
> auth="false"
> +        engine="entity-auto" default-entity-name="TestingNodeMember" 
> invoke="create">
> +        <auto-attributes include="pk" mode="IN" optional="false"/>
> +        <auto-attributes include="nonpk" mode="IN" optional="true"/>
> +    </service>
> +    <service name="testEntityAutoCreateTestingNodeMemberPkMissing" 
> auth="false"
> +        engine="entity-auto" default-entity-name="TestingNodeMember" 
> invoke="create">
> +        <auto-attributes include="nonpk" mode="IN" optional="true"/>
> +        <attribute name="testingId" mode="IN" type="String"/>
> +        <attribute name="testingNodeId" mode="IN" type="String"/>
> +        <attribute name="fromDate" mode="OUT" type="String"/>
> +    </service>
> +    <service name="testEntityAutoUpdateTesting" auth="false"
> +        engine="entity-auto" default-entity-name="Testing" invoke="update">
> +        <auto-attributes include="pk" mode="IN" optional="false"/>
> +        <auto-attributes include="nonpk" mode="IN" optional="true"/>
> +    </service>
> +    <service name="testEntityAutoRemoveTesting" auth="false"
> +        engine="entity-auto" default-entity-name="Testing" invoke="delete">
> +        <auto-attributes include="pk" mode="IN" optional="false"/>
> +    </service>
> +
>     <!-- lock wait timeout retry testing services - a scenario that we can't 
> do automatically with the single service because the parent owns the tx we 
> have to have end before it will succeed -->
>     <service name="testServiceLockWaitTimeoutRetryCantRecover" engine="java" 
> auth="false" transaction-timeout="2"
>         location="org.ofbiz.service.test.ServiceEngineTestServices" 
> invoke="testServiceLockWaitTimeoutRetryCantRecover">
> 
> Added: 
> ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java?rev=1630079&view=auto
> ==============================================================================
> --- 
> ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java
>  (added)
> +++ 
> ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java
>  Wed Oct  8 12:17:55 2014
> @@ -0,0 +1,147 @@
> +/*******************************************************************************
> + * 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.ofbiz.service.test;
> +
> +import java.util.HashMap;
> +import java.util.Locale;
> +import java.util.Map;
> +
> +import org.ofbiz.base.util.UtilDateTime;
> +import org.ofbiz.base.util.UtilMisc;
> +import org.ofbiz.base.util.UtilProperties;
> +import org.ofbiz.entity.GenericValue;
> +import org.ofbiz.service.ServiceUtil;
> +import org.ofbiz.service.testtools.OFBizTestCase;
> +
> +public class ServiceEntityAutoTests extends OFBizTestCase {
> +
> +    public ServiceEntityAutoTests(String name) {
> +        super(name);
> +    }
> +
> +    @Override
> +    protected void setUp() throws Exception {
> +    }
> +
> +    @Override
> +    protected void tearDown() throws Exception {
> +    }
> +
> +    public void testEntityAutoCreateSinglPkEntity() throws Exception {
> +        //test create with given pk
> +        Map<String, Object> testingPkPresentMap = new HashMap<String, 
> Object>();
> +        testingPkPresentMap.put("testingId", "TESTING_1");
> +        testingPkPresentMap.put("testingName", "entity auto testing");
> +        Map<String, Object> results = 
> dispatcher.runSync("testEntityAutoCreateTestingPkPresent", 
> testingPkPresentMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        GenericValue testing = delegator.findOne("Testing", false, 
> "testingId", "TESTING_1");
> +        assertNotNull(testing);
> +
> +        //test create with auto sequence
> +        Map<String, Object> testingPkMissingMap = new HashMap<String, 
> Object>();
> +        testingPkPresentMap.put("testingName", "entity auto testing without 
> pk part in");
> +        results = dispatcher.runSync("testEntityAutoCreateTestingPkMissing", 
> testingPkMissingMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        testing = delegator.findOne("Testing", false, "testingId", 
> results.get("testingId"));
> +        assertNotNull(testing);
> +
> +        //test collision
> +        results = dispatcher.runSync("testEntityAutoCreateTestingPkPresent", 
> testingPkPresentMap, 10, true);
> +        assertTrue(ServiceUtil.isError(results));
> +    }
> +
> +    public void testEntityAutoCreateDoublePkEntity() throws Exception {
> +        delegator.create("Testing", "testingId", "TESTING_2");
> +
> +        //test create with given pk
> +        Map<String, Object> testingItemPkPresentMap = 
> UtilMisc.toMap("testingId", "TESTING_2", "testingSeqId", "00001");
> +        Map<String, Object> results = 
> dispatcher.runSync("testEntityAutoCreateTestingItemPkPresent", 
> testingItemPkPresentMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        GenericValue testingItem = delegator.findOne("TestingItem", false, 
> "testingId", "TESTING_2", "testingSeqId", "00001");
> +        assertNotNull(testingItem);
> +
> +        //test create with auto sub-sequence
> +        Map<String, Object> testingItemPkMissingMap = 
> UtilMisc.toMap("testingId", "TESTING_2");
> +        results = 
> dispatcher.runSync("testEntityAutoCreateTestingItemPkMissing", 
> testingItemPkMissingMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        testingItem = delegator.findOne("TestingItem", false, "testingId", 
> "TESTING_2", "testingSeqId", results.get("testingSeqId"));
> +        assertNotNull(testingItem);
> +        assertEquals("00002", testingItem.get("testingSeqId"));
> +
> +        //test collision
> +        results = 
> dispatcher.runSync("testEntityAutoCreateTestingItemPkPresent", 
> testingItemPkPresentMap, 10, true);
> +        assertTrue(ServiceUtil.isError(results));
> +        //assertEquals("", ServiceUtil.getErrorMessage(results));
> +    }
> +
> +    public void testEntityAutoCreateMultiPkEntity() throws Exception {
> +        delegator.create("TestingNode", "testingNodeId", "NODE_1");
> +        delegator.create("Testing", "testingId", "TESTING_3");
> +
> +        //test create given pk
> +        Map<String, Object> testingNodeMemberPkPresentMap = 
> UtilMisc.toMap("testingId", "TESTING_3",
> +                "testingNodeId", "NODE_1", "fromDate", 
> UtilDateTime.toTimestamp("01/01/2010 00:00:00"));
> +        Map<String, Object> results = 
> dispatcher.runSync("testEntityAutoCreateTestingNodeMemberPkPresent", 
> testingNodeMemberPkPresentMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        GenericValue testingNodeMember = 
> delegator.findOne("TestingNodeMember", false, testingNodeMemberPkPresentMap);
> +        assertNotNull(testingNodeMember);
> +        testingNodeMember.remove();
> +
> +        //test create auto sub-sequence
> +        //test missing pk
> +        Map<String, Object> testingNodeMemberPkMissingMap = 
> UtilMisc.toMap("testingId", "TESTING_3", "testingNodeId", "NODE_1");
> +        results = 
> dispatcher.runSync("testEntityAutoCreateTestingNodeMemberPkMissing", 
> testingNodeMemberPkMissingMap, 10, true);
> +        assertTrue(ServiceUtil.isError(results));
> +        assertTrue(ServiceUtil.getErrorMessage(results).contains("1. a 
> single OUT pk for primary auto-sequencing"));
> +    }
> +
> +    public void testEntityAutoUpdateEntity() throws Exception {
> +        delegator.create("Testing", "testingId", "TESTING_4", "testingName", 
> "entity auto testing");
> +
> +        //test update with exist pk
> +        Map<String, Object> testingUpdateMap = UtilMisc.toMap("testingId", 
> "TESTING_4", "testingName", "entity auto testing updated");
> +        Map<String, Object> results = 
> dispatcher.runSync("testEntityAutoUpdateTesting", testingUpdateMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        GenericValue testing = delegator.findOne("Testing", false, 
> "testingId", "TESTING_4");
> +        assertEquals("entity auto testing updated", 
> testing.getString("testingName"));
> +
> +        //test update with bad pk
> +        Map<String, Object> testingUpdateFailedMap = 
> UtilMisc.toMap("testingId", "TESTING_4_FAILED", "testingName", "entity auto 
> testing updated");
> +        results = dispatcher.runSync("testEntityAutoUpdateTesting", 
> testingUpdateFailedMap, 10, true);
> +        assertTrue(ServiceUtil.isError(results));
> +        assertEquals(UtilProperties.getMessage("ServiceErrorUiLabels", 
> "ServiceValueNotFound", Locale.ENGLISH), 
> ServiceUtil.getErrorMessage(results));
> +    }
> +
> +    public void testEntityAutoDeleteEntity() throws Exception {
> +        delegator.create("Testing", "testingId", "TESTING_5");
> +
> +        //test delete with exist pk
> +        Map<String, Object> testingDeleteMap = UtilMisc.toMap("testingId", 
> "TESTING_5");
> +        Map<String, Object> results = 
> dispatcher.runSync("testEntityAutoRemoveTesting", testingDeleteMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        GenericValue testing = delegator.findOne("Testing", false, 
> "testingId", "TESTING_5");
> +        assertNull(testing);
> +
> +        //test create with bad pk
> +        Map<String, Object> testingDeleteFailedMap = 
> UtilMisc.toMap("testingId", "TESTING_5_FAILED");
> +        results = dispatcher.runSync("testEntityAutoRemoveTesting", 
> testingDeleteFailedMap);
> +        assertTrue(ServiceUtil.isSuccess(results));
> +        //assertEquals(UtilProperties.getMessage("ServiceErrorUiLabels", 
> "ServiceValueNotFound", Locale.ENGLISH), 
> ServiceUtil.getErrorMessage(results));
> +    }
> +}
> 
> Propchange: 
> ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
> 
> Propchange: 
> ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java
> ------------------------------------------------------------------------------
>    svn:keywords = Date Rev Author URL Id
> 
> Propchange: 
> ofbiz/trunk/framework/service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java
> ------------------------------------------------------------------------------
>    svn:mime-type = text/plain
> 
> Modified: ofbiz/trunk/framework/service/testdef/servicetests.xml
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/testdef/servicetests.xml?rev=1630079&r1=1630078&r2=1630079&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/service/testdef/servicetests.xml (original)
> +++ ofbiz/trunk/framework/service/testdef/servicetests.xml Wed Oct  8 
> 12:17:55 2014
> @@ -23,6 +23,7 @@ under the License.
>         
> xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd";>
>     <test-case case-name="service-tests"><junit-test-suite 
> class-name="org.ofbiz.service.test.ServiceEngineTests"/></test-case>
>     <test-case case-name="service-soap-tests"><junit-test-suite 
> class-name="org.ofbiz.service.test.ServiceSOAPTests"/></test-case>
> +    <test-case case-name="service-entity-auto-tests"><junit-test-suite 
> class-name="org.ofbiz.service.test.ServiceEntityAutoTests"/></test-case>
> 
>     <test-case case-name="load-service-test-data">
>         <entity-xml action="load" 
> entity-xml-url="component://service/testdef/data/ServiceTestData.xml"/>
> 
> 

Reply via email to