Package org.apache.myfaces.extensions.cdi.bv.test.impl

Source Code of org.apache.myfaces.extensions.cdi.bv.test.impl.SimpleBeanValidationTest

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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.myfaces.extensions.cdi.bv.test.impl;

import org.apache.myfaces.extensions.cdi.bv.test.impl.validation.DifferentName;
import org.apache.myfaces.extensions.cdi.bv.test.impl.validation.DifferentNameValidator;
import org.apache.myfaces.extensions.cdi.bv.test.impl.validation.TestBean;
import org.apache.myfaces.extensions.cdi.core.api.Advanced;
import org.apache.myfaces.extensions.cdi.core.api.tools.DefaultAnnotation;
import org.apache.myfaces.extensions.cdi.test.junit4.AbstractCdiAwareTest;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import javax.inject.Inject;
import javax.inject.Named;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.ConstraintValidatorFactory;
import javax.validation.ConstraintViolation;
import javax.validation.MessageInterpolator;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.Locale;
import java.util.Set;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

/**
* Test impl
*/
@RunWith(JUnit4.class)
public class SimpleBeanValidationTest extends AbstractCdiAwareTest
{
    @Inject
    @Advanced
    private Validator validator;

    @Inject
    @Advanced
    private ValidatorFactory validatorFactory;

    @Inject
    @Named("contextAwareValidatorFactory")
    private ValidatorFactory namedValidatorFactory;

    @Inject
    @Advanced
    private ConstraintValidatorFactory constraintValidatorFactory;

    @Inject
    @Advanced
    private MessageInterpolator messageInterpolator;

    /**
     */
    @Test
    public void testConstraintValidatorInjection()
    {
        Set<ConstraintViolation<TestBean>> violations = this.validator.validate(new TestBean("Tester", "Tester"));

        assertEquals(1, violations.size());
    }

    /**
     */
    @Test
    public void testInjectionAwareConstraintValidatorFactory()
    {
        ConstraintValidator<DifferentName, TestBean> constraintValidator =
                this.constraintValidatorFactory.getInstance(DifferentNameValidator.class);

        constraintValidator.initialize(DefaultAnnotation.of(DifferentName.class));
        boolean result = constraintValidator.isValid(new TestBean("Tester", "Tester"),
                        new ConstraintValidatorContext()
                        {
                            public void disableDefaultConstraintViolation()
                            {
                                //
                            }

                            public String getDefaultConstraintMessageTemplate()
                            {
                                return "";
                            }

                            public ConstraintViolationBuilder buildConstraintViolationWithTemplate(String msgTemplate)
                            {
                                return new ConstraintViolationBuilder()
                                {
                                    public NodeBuilderDefinedContext addNode(String name)
                                    {
                                        return null;
                                    }

                                    public ConstraintValidatorContext addConstraintViolation()
                                    {
                                        return null;
                                    }
                                };
                            }
                        });
        assertEquals(false, result);
    }

    /**
     */
    @Test
    public void testMessageInterpolatorInjection()
    {
        assertNotNull(this.messageInterpolator);
    }

    /**
     */
    @Test
    public void testInvalidValueInMessage()
    {
        Validator validator = this.validatorFactory.usingContext().messageInterpolator(new MessageInterpolator()
        {
            public String interpolate(String messageTemplate, Context context)
            {
                return interpolate(messageTemplate, context, null);
            }

            public String interpolate(String messageTemplate, Context context, Locale locale)
            {
                //simplified version of the interpolator provided by the jsf module
                String invalidValue = messageTemplate.substring(0, messageTemplate.indexOf("$"));
                String message = messageTemplate.substring(messageTemplate.lastIndexOf("$") + 1);

                return message.replace("{invalidValue}", invalidValue);
            }
        }).getValidator();
        Set<ConstraintViolation<TestBean>> violations = validator.validate(new TestBean("Tester", "Tester"));

        assertEquals(1, violations.size());

        assertEquals("The same name 'Tester' isn't allowed.", violations.iterator().next().getMessage());
    }

    /**
     */
    @Test
    public void testNamedValidatorFactory()
    {
        Validator validator = this.namedValidatorFactory.usingContext().messageInterpolator(new MessageInterpolator()
        {
            public String interpolate(String messageTemplate, Context context)
            {
                return interpolate(messageTemplate, context, null);
            }

            public String interpolate(String messageTemplate, Context context, Locale locale)
            {
                //simplified version of the interpolator provided by the jsf module
                String invalidValue = messageTemplate.substring(0, messageTemplate.indexOf("$"));
                String message = messageTemplate.substring(messageTemplate.lastIndexOf("$") + 1);

                return message.replace("{invalidValue}", invalidValue);
            }
        }).getValidator();
        Set<ConstraintViolation<TestBean>> violations = validator.validate(new TestBean("Tester", "Tester"));

        assertEquals(1, violations.size());

        assertEquals("The same name 'Tester' isn't allowed.", violations.iterator().next().getMessage());
    }
}
TOP

Related Classes of org.apache.myfaces.extensions.cdi.bv.test.impl.SimpleBeanValidationTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.