//String date = "28 Feb 2013 03:50 PM";
Timestamp date = new Timestamp(System.currentTimeMillis());
SingleAttributeValueReader attributeValueReader = new SingleAttributeValueReader(
date, MatterEvent.class.getCanonicalName(), attributeName,
dateDefinition);
DictionaryValidationResult dictionaryValidationResult = new DictionaryValidationResult();
dictionaryValidationResult.setErrorLevel(ErrorLevel.NOCONSTRAINT);
ValidCharactersConstraintProcessor processor = new ValidCharactersConstraintProcessor();
// setup mocks
Config config = mock(Config.class);
final String dtFormat = "dd MMM yyyy hh:mm a";
when(config.getProperty(CoreConstants.STRING_TO_DATE_FORMATS))
.thenReturn(dtFormat);
ConfigContext.overrideConfig(Thread.currentThread()
.getContextClassLoader(), config);
DateTimeService dtSvc = mock(DateTimeService.class);
SimpleDateFormat sdf = new SimpleDateFormat(dtFormat);
when(dtSvc.toDateTimeString(date)).thenReturn(sdf.format(date));
attributeValueReader.setDateTimeService(dtSvc);
// create allowed formats
List<String> allowedFormats = new ArrayList<String>();
allowedFormats.add(dtFormat);
allowedFormats.add("d MMM yyyy hh:mm a");
allowedFormats.add("dd MMM yyyy");
allowedFormats.add("d MMM yyyy");
// carry out validation
DatePatternConstraint constraint = new DatePatternConstraint();
constraint.setAllowedFormats(allowedFormats);
ConstraintValidationResult result = processor.process(
dictionaryValidationResult, date, constraint,
attributeValueReader).getFirstConstraintValidationResult();
// assertions
log.info(ToStringBuilder.reflectionToString(dictionaryValidationResult));
assertEquals("number of warnings differs", 0,
dictionaryValidationResult.getNumberOfWarnings());
assertEquals("number of errors differs", 0,
dictionaryValidationResult.getNumberOfErrors());
assertEquals("error level differs", ErrorLevel.OK, result.getStatus());
assertEquals("constraint name differs",
new ValidCharactersConstraintProcessor().getName(),
result.getConstraintName());
}