You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Pranay Pandey <pr...@hotwaxmedia.com> on 2014/10/09 13:48:57 UTC

Re: svn commit: r1630079 - in /ofbiz/trunk/framework: entity/entitydef/entitymodel_test.xml service/servicedef/services_test_se.xml service/src/org/ofbiz/service/test/ServiceEntityAutoTests.java service/testdef/servicetests.xml

Nice addition Nicolas. Thanks.

Pranay Pandey
HotWax Media
http://www.hotwaxmedia.com
On Oct 8, 2014, at 5:47 PM, nmalin@apache.org 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"/>
> 
>