Author: hlship
Date: Thu Feb  1 16:53:43 2007
New Revision: 502421

URL: http://svn.apache.org/viewvc?view=rev&rev=502421
Log:
Add unit tests for FieldValidatorDefaultSourceImpl.

Added:
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImplTest.java
Modified:
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImpl.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImpl.java?view=diff&rev=502421&r1=502420&r2=502421
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImpl.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImpl.java
 Thu Feb  1 16:53:43 2007
@@ -67,6 +67,6 @@
             validators.add(validator);
         }
 
-        return new CompositeFieldValidator(validators);
+        return validators.size() == 1 ? validators.get(0) : new 
CompositeFieldValidator(validators);
     }
 }

Added: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImplTest.java?view=auto&rev=502421
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImplTest.java
 (added)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/FieldValidatorDefaultSourceImplTest.java
 Thu Feb  1 16:53:43 2007
@@ -0,0 +1,161 @@
+// Copyright 2007 The Apache Software Foundation
+//
+// Licensed 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.apache.tapestry.internal.services;
+
+import java.util.Locale;
+
+import org.apache.tapestry.AnnotationProvider;
+import org.apache.tapestry.Field;
+import org.apache.tapestry.FieldValidator;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.ioc.Messages;
+import org.apache.tapestry.services.FieldValidatorDefaultSource;
+import org.apache.tapestry.services.FieldValidatorSource;
+import org.apache.tapestry.services.ValidationConstraintGenerator;
+import org.testng.annotations.Test;
+
+public class FieldValidatorDefaultSourceImplTest extends InternalBaseTestCase
+{
+    @SuppressWarnings("unchecked")
+    @Test
+    public void invokes_all_constraint_generators() throws Exception
+    {
+        getMocksControl().checkOrder(true);
+
+        ValidationConstraintGenerator gen = newValidationConstraintGenerator();
+        FieldValidator fv1 = newFieldValidator();
+        FieldValidator fv2 = newFieldValidator();
+        FieldValidatorSource source = newFieldValidatorSource();
+        Class propertyType = Integer.class;
+        AnnotationProvider provider = newAnnotationProvider();
+        String overrideId = "overrideId";
+        Messages overrideMessages = newMessages();
+        Field field = newField();
+        Locale locale = Locale.ENGLISH;
+        String value = "*VALUE*";
+
+        train_buildConstraints(gen, propertyType, provider, "cons1", "cons2");
+
+        train_createValidator(
+                source,
+                field,
+                "cons1",
+                null,
+                overrideId,
+                overrideMessages,
+                locale,
+                fv1);
+
+        train_createValidator(
+                source,
+                field,
+                "cons2",
+                null,
+                overrideId,
+                overrideMessages,
+                locale,
+                fv2);
+
+        fv1.validate(value);
+        fv2.validate(value);
+
+        replay();
+
+        FieldValidatorDefaultSource fieldValidatorSource = new 
FieldValidatorDefaultSourceImpl(gen,
+                source);
+
+        FieldValidator composite = fieldValidatorSource.createDefaultValidator(
+                field,
+                overrideId,
+                overrideMessages,
+                locale,
+                propertyType,
+                provider);
+
+        composite.validate(value);
+
+        verify();
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void validator_with_constraint() throws Exception
+    {
+        ValidationConstraintGenerator gen = newValidationConstraintGenerator();
+        FieldValidator fv = newFieldValidator();
+        FieldValidatorSource source = newFieldValidatorSource();
+        Class propertyType = Integer.class;
+        AnnotationProvider provider = newAnnotationProvider();
+        String overrideId = "overrideId";
+        Messages overrideMessages = newMessages();
+        Field field = newField();
+        Locale locale = Locale.ENGLISH;
+
+        train_buildConstraints(gen, propertyType, provider, "foo=bar");
+
+        train_createValidator(source, field, "foo", "bar", overrideId, 
overrideMessages, locale, fv);
+
+        replay();
+
+        FieldValidatorDefaultSource fieldValidatorSource = new 
FieldValidatorDefaultSourceImpl(gen,
+                source);
+
+        FieldValidator composite = fieldValidatorSource.createDefaultValidator(
+                field,
+                overrideId,
+                overrideMessages,
+                locale,
+                propertyType,
+                provider);
+
+        assertSame(composite, fv);
+
+        verify();
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void no_validators_at_all() throws Exception
+    {
+        ValidationConstraintGenerator gen = newValidationConstraintGenerator();
+        FieldValidatorSource source = newFieldValidatorSource();
+        Class propertyType = Integer.class;
+        AnnotationProvider provider = newAnnotationProvider();
+        String overrideId = "overrideId";
+        Messages overrideMessages = newMessages();
+        Field field = newField();
+        Locale locale = Locale.ENGLISH;
+        String value = "*VALUE*";
+
+        train_buildConstraints(gen, propertyType, provider);
+
+        replay();
+
+        FieldValidatorDefaultSource fieldValidatorSource = new 
FieldValidatorDefaultSourceImpl(gen,
+                source);
+
+        FieldValidator composite = fieldValidatorSource.createDefaultValidator(
+                field,
+                overrideId,
+                overrideMessages,
+                locale,
+                propertyType,
+                provider);
+
+        composite.validate(value);
+
+        verify();
+    }
+}

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?view=diff&rev=502421&r1=502420&r2=502421
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
 Thu Feb  1 16:53:43 2007
@@ -82,6 +82,7 @@
 import org.apache.tapestry.services.ResourceDigestGenerator;
 import org.apache.tapestry.services.Response;
 import org.apache.tapestry.services.Session;
+import org.apache.tapestry.services.ValidationConstraintGenerator;
 import org.apache.tapestry.services.ValidationMessagesSource;
 import org.easymock.EasyMock;
 import org.easymock.IAnswer;
@@ -793,5 +794,33 @@
     protected final PropertyEditModel newPropertyEditModel()
     {
         return newMock(PropertyEditModel.class);
+    }
+
+    protected final AnnotationProvider newAnnotationProvider()
+    {
+        return newMock(AnnotationProvider.class);
+    }
+
+    protected final void train_createValidator(FieldValidatorSource source, 
Field field, String validatorType, String constraintValue, String overrideId, 
Messages overrideMessages, Locale locale, FieldValidator result)
+    {
+        expect(
+                source.createValidator(
+                        field,
+                        validatorType,
+                        constraintValue,
+                        overrideId,
+                        overrideMessages,
+                        locale)).andReturn(result);
+    }
+
+    protected final void train_buildConstraints(ValidationConstraintGenerator 
generator, Class propertyType, AnnotationProvider provider, String... 
constraints)
+    {
+        expect(generator.buildConstraints(propertyType, provider)).andReturn(
+                Arrays.asList(constraints));
+    }
+
+    protected final ValidationConstraintGenerator 
newValidationConstraintGenerator()
+    {
+        return newMock(ValidationConstraintGenerator.class);
     }
 }


Reply via email to