• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Validation Exceptions, Localization & Unit Testing
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Validation Exceptions, Localization & Unit Testing


  • Subject: Re: Validation Exceptions, Localization & Unit Testing
  • From: Farrukh Ijaz <email@hidden>
  • Date: Mon, 19 Dec 2011 06:29:47 +0300

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@hidden> 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@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
>
> _______________________________________________
>Do not post admin requests to the list. They will be ignored.
>Webobjects-dev mailing list      (email@hidden)
>Help/Unsubscribe/Update your Subscription:
>
>This email sent to email@hidden
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Prev by Date: Re: Validation Exceptions, Localization & Unit Testing
  • Next by Date: Re: Validation Exceptions, Localization & Unit Testing
  • Previous by thread: Re: Validation Exceptions, Localization & Unit Testing
  • Next by thread: WOlips/Eclipse question … folders became packages
  • Index(es):
    • Date
    • Thread