Package org.camunda.bpm.engine.test.api.form

Source Code of org.camunda.bpm.engine.test.api.form.BuiltInValidatorsTest$TestValidatorContext

/* 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.camunda.bpm.engine.test.api.form;

import java.util.Map;

import org.camunda.bpm.engine.ProcessEngineException;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.VariableScope;
import org.camunda.bpm.engine.impl.ProcessEngineImpl;
import org.camunda.bpm.engine.impl.form.validator.FormFieldValidator;
import org.camunda.bpm.engine.impl.form.validator.FormFieldValidatorContext;
import org.camunda.bpm.engine.impl.form.validator.FormValidators;
import org.camunda.bpm.engine.impl.form.validator.MaxLengthValidator;
import org.camunda.bpm.engine.impl.form.validator.MaxValidator;
import org.camunda.bpm.engine.impl.form.validator.MinLengthValidator;
import org.camunda.bpm.engine.impl.form.validator.MinValidator;
import org.camunda.bpm.engine.impl.form.validator.ReadOnlyValidator;
import org.camunda.bpm.engine.impl.form.validator.RequiredValidator;
import org.camunda.bpm.engine.impl.test.PluggableProcessEngineTestCase;

/**
* @author Daniel Meyer
*
*/
public class BuiltInValidatorsTest extends PluggableProcessEngineTestCase {

  public void testDefaultFormFieldValidators() {

    // assert default validators are registered
    FormValidators formValidators = ((ProcessEngineImpl) processEngine).getProcessEngineConfiguration().getFormValidators();

    Map<String, Class<? extends FormFieldValidator>> validators = formValidators.getValidators();
    assertEquals(RequiredValidator.class, validators.get("required"));
    assertEquals(ReadOnlyValidator.class, validators.get("readonly"));
    assertEquals(MinValidator.class, validators.get("min"));
    assertEquals(MaxValidator.class, validators.get("max"));
    assertEquals(MaxLengthValidator.class, validators.get("maxlength"));
    assertEquals(MinLengthValidator.class, validators.get("minlength"));

  }

  public void testRequiredValidator() {
    RequiredValidator validator = new RequiredValidator();

    assertTrue(validator.validate("test", null));
    assertTrue(validator.validate(1, null));
    assertTrue(validator.validate(true, null));

    // empty string and 'null' are invalid
    assertFalse(validator.validate("", null));
    assertFalse(validator.validate(null, null));
  }

  public void testReadOnlyValidator() {
    ReadOnlyValidator validator = new ReadOnlyValidator();

    assertFalse(validator.validate("", null));
    assertFalse(validator.validate("aaa", null));
    assertFalse(validator.validate(11, null));
    assertFalse(validator.validate(2d, null));
    assertTrue(validator.validate(null, null));
  }

  public void testMinValidator() {
    MinValidator validator = new MinValidator();

    assertTrue(validator.validate(null, null));

    assertTrue(validator.validate(4, new TestValidatorContext("4")));
    assertFalse(validator.validate(4, new TestValidatorContext("5")));

    try {
      validator.validate(4, new TestValidatorContext("4.4"));
      fail("exception expected");
    } catch (ProcessEngineException e) {
      e.printStackTrace();
      assertTrue(e.getMessage().contains("Cannot validate Integer value 4: configuration 4.4 cannot be parsed as Integer."));
    }

    assertFalse(validator.validate(4d, new TestValidatorContext("4.1")));
    assertTrue(validator.validate(4.1d, new TestValidatorContext("4.1")));

    assertFalse(validator.validate(4f, new TestValidatorContext("4.1")));
    assertTrue(validator.validate(4.1f, new TestValidatorContext("4.1")));

  }

  public void testMaxValidator() {
    MaxValidator validator = new MaxValidator();

    assertTrue(validator.validate(null, null));

    assertTrue(validator.validate(3, new TestValidatorContext("4")));
    assertFalse(validator.validate(4, new TestValidatorContext("3")));

    try {
      validator.validate(4, new TestValidatorContext("4.4"));
      fail("exception expected");
    } catch (ProcessEngineException e) {
      e.printStackTrace();
      assertTrue(e.getMessage().contains("Cannot validate Integer value 4: configuration 4.4 cannot be parsed as Integer."));
    }

    assertFalse(validator.validate(4.1d, new TestValidatorContext("4")));
    assertTrue(validator.validate(4.1d, new TestValidatorContext("4.2")));

    assertFalse(validator.validate(4.1f, new TestValidatorContext("4")));
    assertTrue(validator.validate(4.1f, new TestValidatorContext("4.2")));

  }

  public void testMaxLengthValidator() {
    MaxLengthValidator validator = new MaxLengthValidator();

    assertTrue(validator.validate(null, null));

    assertTrue(validator.validate("test", new TestValidatorContext("5")));
    assertFalse(validator.validate("test", new TestValidatorContext("4")));

    try {
      validator.validate("test", new TestValidatorContext("4.4"));
      fail("exception expected");
    } catch (ProcessEngineException e) {
      assertTrue(e.getMessage().contains("Cannot validate \"maxlength\": configuration 4.4 cannot be interpreted as Integer"));
    }
  }

  public void testMinLengthValidator() {
    MinLengthValidator validator = new MinLengthValidator();

    assertTrue(validator.validate(null, null));

    assertTrue(validator.validate("test", new TestValidatorContext("4")));
    assertFalse(validator.validate("test", new TestValidatorContext("5")));

    try {
      validator.validate("test", new TestValidatorContext("4.4"));
      fail("exception expected");
    } catch (ProcessEngineException e) {
      assertTrue(e.getMessage().contains("Cannot validate \"minlength\": configuration 4.4 cannot be interpreted as Integer"));
    }
  }

  protected static class TestValidatorContext implements FormFieldValidatorContext {

    String configuration;

    public TestValidatorContext(String configuration) {
      this.configuration = configuration;
    }

    public DelegateExecution getExecution() {
      return null;
    }

    public String getConfiguration() {
      return configuration;
    }

    public Map<String, Object> getSubmittedValues() {
      return null;
    }

    public VariableScope getVariableScope() {
      return null;
    }
  }
}
TOP

Related Classes of org.camunda.bpm.engine.test.api.form.BuiltInValidatorsTest$TestValidatorContext

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.