Author: jonesde
Date: Tue Mar 6 14:57:38 2007 New Revision: 515340 URL: http://svn.apache.org/viewvc?view=rev&rev=515340 Log: Applied patch from Joe Eckard which implements the entity-xml-assert type of test and adds a small example test file for it that just validates against seed data; small change to reorganize, but mostly as-is Added: ofbiz/trunk/framework/example/testdef/ ofbiz/trunk/framework/example/testdef/assertdata/ ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml (with props) ofbiz/trunk/framework/example/testdef/tests.xml (with props) Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataAssert.java ofbiz/trunk/framework/example/ofbiz-component.xml ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/EntityXmlAssertTest.java Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataAssert.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataAssert.java?view=diff&rev=515340&r1=515339&r2=515340 ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataAssert.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/EntityDataAssert.java Tue Mar 6 14:57:38 2007 @@ -6,9 +6,9 @@ * 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 @@ -35,7 +35,6 @@ /** * Some utility routines for loading seed data. - * */ public class EntityDataAssert { @@ -43,7 +42,7 @@ public static int assertData(URL dataUrl, GenericDelegator delegator, List errorMessages) throws GenericEntityException, SAXException, ParserConfigurationException, IOException { int rowsChecked = 0; - + if (dataUrl == null) { String errMsg = "Cannot assert/check data, dataUrl was null"; errorMessages.add(errMsg); @@ -51,18 +50,18 @@ return 0; } - Debug.logVerbose("[install.loadData] Loading XML Resource: \"" + dataUrl.toExternalForm() + "\"", module); + Debug.logVerbose("Loading XML Resource: " + dataUrl.toExternalForm(), module); try { List checkValueList = delegator.readXmlDocument(dataUrl); Iterator checkValueIter = checkValueList.iterator(); while (checkValueIter.hasNext()) { GenericValue checkValue = (GenericValue) checkValueIter.next(); - + // to check get the PK, find by that, compare all fields GenericPK checkPK = checkValue.getPrimaryKey(); GenericValue currentValue = delegator.findByPrimaryKey(checkPK); - + ModelEntity modelEntity = currentValue.getModelEntity(); List nonpkFieldNameList = modelEntity.getNoPkFieldNames(); Iterator nonpkFieldNameIter = nonpkFieldNameList.iterator(); @@ -70,29 +69,18 @@ String nonpkFieldName = (String) nonpkFieldNameIter.next(); Object checkField = checkValue.get(nonpkFieldName); Object currentField = currentValue.get(nonpkFieldName); - - boolean matches = false; - if (checkField == null) { - if (currentField == null) { - matches = true; - } - } else { - if (checkField.equals(currentField)) { - matches = true; - } - } - - if (!matches) { + + if (checkField != null && !checkField.equals(currentField)) { StringBuffer matchError = new StringBuffer(); - matchError.append("Field [" + modelEntity.getEntityName() + "." + nonpkFieldName + "] did not match; file value [" + checkField + "], db value [" + currentField + "] pk [" + checkPK + "]"); + matchError.append("Field [" + modelEntity.getEntityName() + "." + nonpkFieldName + "] did not match; file value [" + checkField + "], db value [" + currentField + "] pk [" + checkPK + "]"); errorMessages.add(matchError.toString()); } } - + rowsChecked++; } } catch (GenericEntityException e) { - String xmlError = "Error checking/asserting XML Resource \"" + dataUrl.toExternalForm() + "\"; Error was: " + e.getMessage(); + String xmlError = "Error checking/asserting XML Resource: " + dataUrl.toExternalForm() + "; Error was: " + e.getMessage(); Debug.logError(e, xmlError, module); // instead of adding this as a message, throw the real exception; then caller has more control //errorMessages.add(xmlError); Modified: ofbiz/trunk/framework/example/ofbiz-component.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/example/ofbiz-component.xml?view=diff&rev=515340&r1=515339&r2=515340 ============================================================================== --- ofbiz/trunk/framework/example/ofbiz-component.xml (original) +++ ofbiz/trunk/framework/example/ofbiz-component.xml Tue Mar 6 14:57:38 2007 @@ -46,6 +46,8 @@ <service-resource type="group" loader="main" location="servicedef/groups.xml"/> --> + <test-suite loader="main" location="testdef/tests.xml"/> + <!-- web applications; will be mounted when using the embedded Jetty container --> <webapp name="example" title="Example" @@ -53,4 +55,5 @@ location="webapp/example" base-permission="OFBTOOLS" mount-point="/example"/> + </ofbiz-component> Added: ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml?view=auto&rev=515340 ============================================================================== --- ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml (added) +++ ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml Tue Mar 6 14:57:38 2007 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity-engine-xml> + <UserLogin userLoginId="system" currentPassword="47ca69ebb4bdc9ae0adec130880165d2cc05db1a" /> + <UserLogin userLoginId="anonymous" currentPassword="anonymous" /> + <UserLogin userLoginId="admin" currentPassword="47ca69ebb4bdc9ae0adec130880165d2cc05db1a" partyId="admin" /> +</entity-engine-xml> + Propchange: ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/example/testdef/assertdata/TestUserLoginData.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: ofbiz/trunk/framework/example/testdef/tests.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/example/testdef/tests.xml?view=auto&rev=515340 ============================================================================== --- ofbiz/trunk/framework/example/testdef/tests.xml (added) +++ ofbiz/trunk/framework/example/testdef/tests.xml Tue Mar 6 14:57:38 2007 @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<test-suite suite-name="example-tests" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/test-suite.xsd"> + + <test-case case-name="userLoginEntityXmlAssert"> + <entity-xml-assert entity-xml-url="component://example/testdef/assertdata/TestUserLoginData.xml"/> + </test-case> +</test-suite> Propchange: ofbiz/trunk/framework/example/testdef/tests.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/example/testdef/tests.xml ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/example/testdef/tests.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Modified: ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/EntityXmlAssertTest.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/EntityXmlAssertTest.java?view=diff&rev=515340&r1=515339&r2=515340 ============================================================================== --- ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/EntityXmlAssertTest.java (original) +++ ofbiz/trunk/framework/testtools/src/org/ofbiz/testtools/EntityXmlAssertTest.java Tue Mar 6 14:57:38 2007 @@ -6,9 +6,9 @@ * 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 @@ -19,14 +19,26 @@ package org.ofbiz.testtools; import junit.framework.TestResult; +import junit.framework.AssertionFailedError; import org.w3c.dom.Element; +import org.ofbiz.entity.GenericDelegator; +import org.ofbiz.entity.util.EntityDataAssert; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.location.FlexibleLocation; + +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; +import java.net.URL; public class EntityXmlAssertTest extends TestCaseBase { public static final String module = ServiceTest.class.getName(); - + protected String entityXmlUrlString; + protected int testCaseCount; /** * @param modelTestSuite @@ -34,15 +46,43 @@ public EntityXmlAssertTest(String caseName, ModelTestSuite modelTestSuite, Element mainElement) { super(caseName, modelTestSuite); this.entityXmlUrlString = mainElement.getAttribute("entity-xml-url"); + this.testCaseCount = 0; + try { + URL entityXmlURL = FlexibleLocation.resolveLocation(entityXmlUrlString); + List checkValueList = modelTestSuite.getDelegator().readXmlDocument(entityXmlURL); + this.testCaseCount = checkValueList.size(); + } catch (Exception e) { + Debug.logError(e, "Error getting test case count", module); + } } public int countTestCases() { - return 1; + return this.testCaseCount; } public void run(TestResult result) { - // TODO Auto-generated method stub - - // NOTE: use EntityDataAssert.java + + result.startTest(this); + + try { + + URL entityXmlURL = FlexibleLocation.resolveLocation(entityXmlUrlString); + GenericDelegator delegator = modelTestSuite.getDelegator(); + List errorMessages = new ArrayList(); + + EntityDataAssert.assertData(entityXmlURL, delegator, errorMessages); + + if (UtilValidate.isNotEmpty(errorMessages)) { + for (Iterator failureIterator = errorMessages.iterator(); failureIterator.hasNext();) { + String failureMessage = (String) failureIterator.next(); + result.addFailure(this, new AssertionFailedError(failureMessage)); + } + } + + } catch (Exception e) { + result.addError(this, e); + } + + result.endTest(this); } } |
Free forum by Nabble | Edit this page |