You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bval.apache.org by Carlos Vara <ba...@gmail.com> on 2010/07/30 11:12:57 UTC
Re: svn commit: r980571 - in /incubator/bval/trunk:
bval-jsr303/pom.xml bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
pom.xml
Nice, I'm a big fan of mockito, so now we can start using it more in our
tests :-)
On Thu, Jul 29, 2010 at 10:04 PM, <mb...@apache.org> wrote:
> Author: mbenson
> Date: Thu Jul 29 21:04:50 2010
> New Revision: 980571
>
> URL: http://svn.apache.org/viewvc?rev=980571&view=rev
> Log:
> use a mock object in test
>
> Modified:
> incubator/bval/trunk/bval-jsr303/pom.xml
>
> incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
> incubator/bval/trunk/pom.xml
>
> Modified: incubator/bval/trunk/bval-jsr303/pom.xml
> URL:
> http://svn.apache.org/viewvc/incubator/bval/trunk/bval-jsr303/pom.xml?rev=980571&r1=980570&r2=980571&view=diff
>
> ==============================================================================
> --- incubator/bval/trunk/bval-jsr303/pom.xml (original)
> +++ incubator/bval/trunk/bval-jsr303/pom.xml Thu Jul 29 21:04:50 2010
> @@ -112,6 +112,11 @@
> <scope>test</scope>
> </dependency>
> <dependency>
> + <groupId>org.mockito</groupId>
> + <artifactId>mockito-core</artifactId>
> + <scope>test</scope>
> + </dependency>
> + <dependency>
> <groupId>log4j</groupId>
> <artifactId>log4j</artifactId>
> <scope>test</scope>
>
> Modified:
> incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
> URL:
> http://svn.apache.org/viewvc/incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java?rev=980571&r1=980570&r2=980571&view=diff
>
> ==============================================================================
> ---
> incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
> (original)
> +++
> incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/ConstraintValidatorContextTest.java
> Thu Jul 29 21:04:50 2010
> @@ -20,21 +20,17 @@ package org.apache.bval.jsr303;
>
> import junit.framework.Assert;
> import junit.framework.TestCase;
> -import org.apache.bval.jsr303.groups.Group;
> -import org.apache.bval.jsr303.groups.Groups;
> import org.apache.bval.jsr303.util.PathImpl;
> -import org.apache.bval.model.MetaBean;
> -import org.apache.bval.model.MetaProperty;
> import org.apache.bval.model.ValidationListener;
> import org.apache.bval.model.ValidationListener.Error;
> -import org.apache.bval.util.AccessStrategy;
> +import org.mockito.Mock;
> +import org.mockito.Mockito;
> +import org.mockito.MockitoAnnotations;
> +import org.mockito.invocation.InvocationOnMock;
> +import org.mockito.stubbing.Answer;
>
> -import javax.validation.ConstraintValidator;
> import javax.validation.ConstraintValidatorContext;
> import
> javax.validation.ConstraintValidatorContext.ConstraintViolationBuilder;
> -import javax.validation.MessageInterpolator;
> -import javax.validation.TraversableResolver;
> -
>
> /**
> * Checks to validate the correct implementation of
> @@ -47,190 +43,71 @@ public class ConstraintValidatorContextT
> private ConstraintValidatorContextImpl cvc;
> private ConstraintViolationBuilder cvb;
>
> - private void resetConstraintValidatorContext() {
> - this.cvc = new ConstraintValidatorContextImpl(
> - new DummyContext<ValidationListener>(), null);
> + @Mock
> + private GroupValidationContext<ValidationListener>
> groupValidationContext;
> +
> + /**
> + * {@inheritDoc}
> + */
> + @Override
> + public void setUp() throws Exception {
> + super.setUp();
> + MockitoAnnotations.initMocks(this);
> +
> Mockito.when(groupValidationContext.getPropertyPath()).thenAnswer(new
> Answer<PathImpl>() {
> +
> + public PathImpl answer(InvocationOnMock invocation) throws
> Throwable {
> + return PathImpl.createPathFromString("");
> + }
> + });
> + this.cvc = new
> ConstraintValidatorContextImpl(groupValidationContext,
> + null);
> this.cvc.disableDefaultConstraintViolation();
> this.cvb =
> cvc.buildConstraintViolationWithTemplate("dummy.msg.tpl");
> }
>
> - // Test that builds a path and checks it against the expected one
> - public void testPathBuilding() {
> -
> - resetConstraintValidatorContext();
> -
> - // persons[1]
> + public void testPerson1() {
> cvb.addNode("person").addNode(null).inIterable().atIndex(1)
> .addConstraintViolation();
> Error error = cvc.getErrorMessages().iterator().next();
> PathImpl errorPath = (PathImpl) error.getOwner();
> - Assert.assertEquals("Incorrect path created", "person[1]",
> errorPath.toString());
> -
> - resetConstraintValidatorContext();
> + Assert.assertEquals("Incorrect path created", "person[1]",
> errorPath
> + .toString());
> + }
>
> - // persons[lawyer].name
> + public void testPersonLawyerName() {
> cvb.addNode("person").addNode("name").inIterable().atKey("john")
> .addConstraintViolation();
> - error = cvc.getErrorMessages().iterator().next();
> - errorPath = (PathImpl) error.getOwner();
> - Assert.assertEquals("Incorrect path created", "person[john].name",
> errorPath.toString());
> -
> - resetConstraintValidatorContext();
> + Error error = cvc.getErrorMessages().iterator().next();
> + PathImpl errorPath = (PathImpl) error.getOwner();
> + Assert.assertEquals("Incorrect path created", "person[john].name",
> + errorPath.toString());
> + }
>
> - // [0].name[]
> + public void test0Name() {
>
> cvb.addNode(null).addNode("name").inIterable().atIndex(0).addNode(null)
> .inIterable().addConstraintViolation();
> - error = cvc.getErrorMessages().iterator().next();
> - errorPath = (PathImpl) error.getOwner();
> - Assert.assertEquals("Incorrect path created", "[0].name[]",
> errorPath.toString());
> -
> - resetConstraintValidatorContext();
> + Error error = cvc.getErrorMessages().iterator().next();
> + PathImpl errorPath = (PathImpl) error.getOwner();
> + Assert.assertEquals("Incorrect path created", "[0].name[]",
> errorPath
> + .toString());
> + }
>
> - // []
> + public void testEmptyIndex() {
>
> cvb.addNode(null).addNode(null).inIterable().addConstraintViolation();
> - error = cvc.getErrorMessages().iterator().next();
> - errorPath = (PathImpl) error.getOwner();
> - Assert.assertEquals("Incorrect path created", "[]",
> errorPath.toString());
> -
> - resetConstraintValidatorContext();
> -
> + Error error = cvc.getErrorMessages().iterator().next();
> + PathImpl errorPath = (PathImpl) error.getOwner();
> + Assert.assertEquals("Incorrect path created", "[]", errorPath
> + .toString());
> + }
> +
> + public void testRootPath() {
> // Adding only nulls should still give a root path
> -
> cvb.addNode(null).addNode(null).addNode(null).addNode(null).addConstraintViolation();
> - error = cvc.getErrorMessages().iterator().next();
> - errorPath = (PathImpl) error.getOwner();
> - Assert.assertTrue("Created path must be a root path",
> errorPath.isRootPath());
> -
> - }
> -
> - // TODO: mock
> - public static class DummyContext<T> implements
> - GroupValidationContext<T> {
> -
> - public boolean collectValidated(ConstraintValidator constraint) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public ConstraintValidation getConstraintValidation() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public Group getCurrentGroup() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public Groups getGroups() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public MessageInterpolator getMessageResolver() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public PathImpl getPropertyPath() {
> - return PathImpl.createPathFromString("");
> - }
> -
> - public MetaBean getRootMetaBean() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public TraversableResolver getTraversableResolver() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public Object getValidatedValue() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setConstraintValidation(ConstraintValidation
> constraint) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setCurrentGroup(Group group) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setFixedValue(Object value) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public boolean collectValidated() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public AccessStrategy getAccess() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public Object getBean() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public ConstraintValidationListener<T> getListener() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public MetaBean getMetaBean() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public MetaProperty getMetaProperty() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public String getPropertyName() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public Object getPropertyValue() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public Object getPropertyValue(AccessStrategy access) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void moveDown(MetaProperty prop, AccessStrategy access) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void moveUp(Object bean, MetaBean metaBean) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setBean(Object bean) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setBean(Object aBean, MetaBean aMetaBean) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setCurrentIndex(Integer index) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setCurrentKey(Object key) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setMetaBean(MetaBean metaBean) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - public void setMetaProperty(MetaProperty metaProperty) {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - // @Override - not allowed in 1.5 for Interface methods
> - public Class<?> getCurrentOwner() {
> - throw new IllegalStateException("Unexpected call");
> - }
> -
> - // @Override - not allowed in 1.5 for Interface methods
> - public void setCurrentOwner(Class<?> currentOwner) {
> - throw new IllegalStateException("Unexpected call");
> - }
> + cvb.addNode(null).addNode(null).addNode(null).addNode(null)
> + .addConstraintViolation();
> + Error error = cvc.getErrorMessages().iterator().next();
> + PathImpl errorPath = (PathImpl) error.getOwner();
> + Assert.assertTrue("Created path must be a root path", errorPath
> + .isRootPath());
>
> }
>
>
> Modified: incubator/bval/trunk/pom.xml
> URL:
> http://svn.apache.org/viewvc/incubator/bval/trunk/pom.xml?rev=980571&r1=980570&r2=980571&view=diff
>
> ==============================================================================
> --- incubator/bval/trunk/pom.xml (original)
> +++ incubator/bval/trunk/pom.xml Thu Jul 29 21:04:50 2010
> @@ -322,7 +322,7 @@
> <artifactId>bval-tck-runner</artifactId>
> <version>${project.version}</version>
> </dependency>
> -
> +
> <!-- Default of Apache Geronimo version of the Spec API -->
> <dependency>
> <groupId>org.apache.geronimo.specs</groupId>
> @@ -347,6 +347,11 @@
> <version>3.8.2</version>
> </dependency>
> <dependency>
> + <groupId>org.mockito</groupId>
> + <artifactId>mockito-core</artifactId>
> + <version>1.8.5</version>
> + </dependency>
> + <dependency>
> <groupId>commons-lang</groupId>
> <artifactId>commons-lang</artifactId>
> <version>2.4</version>
> @@ -666,7 +671,7 @@
> <module>bval-core</module>
> <module>bval-xstream</module>
> <module>bval-jsr303</module>
> - <module>bundle</module>
> + <module>bundle</module>
> <module>bval-json</module>
> <module>bval-guice</module>
> <module>bval-tck</module>
>
>
>