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"/>