Try reordering your application classpath and I guess moving Extensions 
Framework above will solve the problem. It happened to me a couple of times and 
I discovered it's related to loading the classes in specific order.

Farrukh 

Henrique Prange <[email protected]> wrote:

>Hi Kevin,
>
>I'm not an expert on ERXValidation, but you're correct. The ERXLocalizer class 
>has not been initialized properly. Unfortunately, WOUnit doesn't load the 
>Properties file before the test execution as well as it doesn't provide means 
>for the ERXLocalizer to initialize properly. As a workaround, you can manually 
>load the Properties file and initialize the ERXLocalizer in a static method 
>annotated with @BeforeClass.
>
>I've created two issues [1] [2] and will take a closer look at this 
>requirement.
>
>[1]https://github.com/hprange/wounit/issues/24
>[2]https://github.com/hprange/wounit/issues/25
>
>Cheers,
>
>Henrique
>
>On 15/12/2011, at 17:15, Kevin Hinkson wrote:
>
>> Hi everyone,
>> 
>> I have a model framework that I am currently testing using WOUnit. For the 
>> Account EO I have a unit test to ensure that the email attribute is valid 
>> before saving. That worked fine until I started changing the code to be 
>> localizable.
>> 
>> I have a ValidationTemplate.strings in the framework under Resources -> 
>> English.lproj -> ValidationTemplate.strings
>> 
>> Values in the template
>> {
>>     "EmailFormatException" = "A valid <b>@@displayNameForProperty@@</b> is 
>> required.";
>>     "Account.email.EmailFormatException" = 
>> "<b>@@displayNameForProperty@@</b> must be a valid email address.";
>> }
>> 
>> Properties set:
>> 
>> # Localization
>> er.extensions.ERXLocalizer.defaultLanguage=English
>> er.extensions.ERXLocalizer.fileNamesToWatch=("Localizable.strings","ValidationTemplate.strings")
>> er.extensions.ERXLocalizer.availableLanguages=(English)
>> er.extensions.ERXLocalizer.frameworkSearchPath=(app,ERDirectToWeb,ERExtensions)
>> er.extensions.ERXLocalizer.useLocalizedFormatters=true
>> 
>> 
>> Validation code:
>> 
>>      public String validateEmail(String newEmail) {
>>              ERXValidationFactory factory = 
>> ERXValidationFactory.defaultFactory();
>>              
>>              if (!Account.isValidEmail(newEmail)) {
>>                      ERXValidationException exception = 
>> factory.createCustomException(this, Account.EMAIL_KEY, newEmail, 
>> "EmailFormatException");
>>                      throw exception;
>>              }
>>              
>>              return newEmail;
>>      }
>> 
>> When I run the unit test for the Account EO I get a stack trace in the logs:
>> 
>> - Undefined Validation Template entity "Account" property 
>> "EmailFormatException" type "CustomMethodException" target language "English"
>> java.lang.Throwable
>>      at 
>> er.extensions.validation.ERXValidationFactory.templateForEntityPropertyType(ERXValidationFactory.java:554)
>>      at 
>> er.extensions.validation.ERXValidationFactory.templateForException(ERXValidationFactory.java:448)
>>      at 
>> er.extensions.validation.ERXValidationFactory.messageForException(ERXValidationFactory.java:394)
>>      at 
>> er.extensions.validation.ERXValidationException.getMessage(ERXValidationException.java:133)
>>      at 
>> com.wounit.matchers.CanBeSavedMatcher.describeTo(CanBeSavedMatcher.java:53)
>>      at 
>> org.hamcrest.BaseDescription.appendDescriptionOf(BaseDescription.java:21)
>>      at com.wounit.matchers.EOAssert.confirmImplementation(EOAssert.java:253)
>>      at com.wounit.matchers.EOAssert.confirm(EOAssert.java:216)
>>      at 
>> com.coralstone.envoy.modeltests.AccountTest.cannotSaveInvalidEmail(AccountTest.java:61)
>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>      at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>      at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>      at java.lang.reflect.Method.invoke(Method.java:597)
>>      at 
>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>>      at 
>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>>      at 
>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>>      at 
>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>>      at 
>> com.wounit.rules.AbstractEditingContextRule$1.evaluate(AbstractEditingContextRule.java:141)
>>      at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
>>      at 
>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>>      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>>      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>>      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>>      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>>      at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>>      at 
>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>>      at 
>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>      at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>      at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>      at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>      at 
>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>> 
>> 
>> It looks to me as if maybe the validation template cannot be found but I'm 
>> not certain what would cause that. Possibly there is something I need to 
>> load before running the test? Does anyone know what that might be?
>> 
>> — Kevin Hinkson.
>> 
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/webobjects-dev/hprange%40gmail.com
>> 
>> This email sent to [email protected]
>
>
> _______________________________________________
>Do not post admin requests to the list. They will be ignored.
>Webobjects-dev mailing list      ([email protected])
>Help/Unsubscribe/Update your Subscription:
>http://lists.apple.com/mailman/options/webobjects-dev/farrukh.ijaz%40fuegodigitalmedia.com
>
>This email sent to [email protected]
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to