You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/02/02 01:53:44 UTC

svn commit: r502421 - in /tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry: internal/services/FieldValidatorDefaultSourceImpl.java internal/services/FieldValidatorDefaultSourceImplTest.java test/TapestryTestCase.java

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);
     }
 }