/** * Validates provided context and value withing this constraint content. */ public void validateWithin(final ValidationContext vctx, final Object value) { vtor.validate(vctx, value, name); } }
/** * @see #validate(ValidationContext, Object, String) */ public List<Violation> validate(final ValidationContext vctx, final Object target) { return validate(vctx, target, null); }
/** * Validate object using context from the annotations. */ public List<Violation> validate(final Object target) { return validate(ValidationContext.resolveFor(target.getClass()), target); }
@Test void testValidateWithin() throws Exception { Vtor vtor = mock(Vtor.class); Object target = new Object(); ValidationConstraintContext context = new ValidationConstraintContext(vtor, target, "niceConstraint"); ValidationContext vctx = mock(ValidationContext.class); Object value = new Object(); //when context.validateWithin(vctx, value); //then verify(vtor).validate(eq(vctx), eq(value), eq("niceConstraint")); } }
/** * Validates action. Profiles are reset after the invocation. * @return <code>true</code> if validation is successful, otherwise returns <code>false</code> */ protected boolean validateAction(final String... profiles) { prepareValidator(); vtor.useProfiles(profiles); vtor.validate(this); vtor.resetProfiles(); List<Violation> violations = vtor.getViolations(); return violations == null; }
@Test void testValidateFldHasChecker_isValidFalse() throws Exception { //given ValidationConstraint testCheck1Constraint = mock(ValidationConstraint.class); //ValidationConstraint.isValid always returns false when(testCheck1Constraint.isValid(any(ValidationConstraintContext.class), any())).thenReturn(false); Map<String, List<Check>> constraints = createValidateFldHasCheckerTestConstraints(testCheck1Constraint); //when validate an object with field testField List<Violation> violations = new Vtor().validate(mockValidationContext(constraints), new ValidateTestObject("testValue"), "testField"); //then //isValid for ValidationConstraint mast be invoked verify(testCheck1Constraint).isValid(any(ValidationConstraintContext.class), eq("testValue")); assertEquals(1, violations.size()); }
@Test void testValidateFldHasChecker_isValidTrue() throws Exception { //given ValidationConstraint testCheck1Constraint = mock(ValidationConstraint.class); //ValidationConstraint.isValid always returns false when(testCheck1Constraint.isValid(any(ValidationConstraintContext.class), any())).thenReturn(true); Map<String, List<Check>> constraints = createValidateFldHasCheckerTestConstraints(testCheck1Constraint); //when validate an object with field testField List<Violation> validate = new Vtor().validate(mockValidationContext(constraints), new ValidateTestObject("testValue"), "testField"); //then //isValid for ValidationConstraint mast be invoked verify(testCheck1Constraint).isValid(any(ValidationConstraintContext.class), eq("testValue")); assertNull(validate); }
@Test void testValidateCheckForDifferentProfile() throws Exception { //given a list of constraints with different profiles, one check has same profile as Vtor Vtor vtor = new Vtor(); vtor.useProfile("profil1"); Map<String, List<Check>> constraints = new HashMap<>(); ValidationConstraint testCheck1Constraint = mock(ValidationConstraint.class); ValidationConstraint testCheck2Constraint = mock(ValidationConstraint.class); Check ch1 = createCheckWithProfile("check1", "profil1", testCheck1Constraint); Check ch2 = createCheckWithProfile("check2", "profil2", testCheck2Constraint); List<Check> checks = new ArrayList<>(); checks.add(ch1); checks.add(ch2); constraints.put("testField", checks); //when List<Violation> violations = vtor.validate(mockValidationContext(constraints), new ValidateTestObject("testValue"), "testField"); //then assertEquals(1, violations.size()); assertEquals("profil1", violations.get(0).getCheck().getProfiles()[0]); verify(testCheck1Constraint).isValid(any(ValidationConstraintContext.class), eq("testValue")); verify(testCheck2Constraint, never()).isValid(any(ValidationConstraintContext.class), eq("testValue")); }
@Test void testValidateCheckSeverity() throws Exception { //given Vtor vtor = new Vtor(); vtor.setSeverity(10); Map<String, List<Check>> constraints = new HashMap<>(); ValidationConstraint testCheck1Constraint = mock(ValidationConstraint.class); ValidationConstraint testCheck2Constraint = mock(ValidationConstraint.class); Check ch1 = new Check("check1", testCheck1Constraint); ch1.setSeverity(15); Check ch2 = new Check("check2", testCheck2Constraint); ch2.setSeverity(5); List<Check> checks = new ArrayList<>(); checks.add(ch1); checks.add(ch2); constraints.put("testField", checks); //when List<Violation> violations = vtor.validate(mockValidationContext(constraints), new ValidateTestObject("testValue"), "testField"); //then assertEquals(1, violations.size()); assertEquals(ch1, violations.get(0).getCheck()); verify(testCheck1Constraint).isValid(any(ValidationConstraintContext.class), eq("testValue")); verify(testCheck2Constraint, never()).isValid(any(ValidationConstraintContext.class), eq("testValue")); }
@Test void testTime() { Vtor vtor = new Vtor(); vtor.validate(new Tad()); assertTrue(vtor.hasViolations()); List<Violation> v = vtor.getViolations(); assertEquals(3, v.size()); assertEquals(TimeAfterConstraint.class, v.get(0).getConstraint().getClass()); } }
@Test void testAnn() { Vtor vtor = new Vtor(); vtor.validate(new Woo()); List<Violation> v = vtor.getViolations(); assertEquals(1, v.size()); vtor.resetViolations(); vtor.useProfiles("p1", "p2"); vtor.validate(new Woo()); v = vtor.getViolations(); assertEquals(2, v.size()); vtor.resetViolations(); vtor.useProfiles("default", "p1", "p2"); vtor.validate(new Woo()); v = vtor.getViolations(); assertEquals(3, v.size()); }
@Test void testDefaultProfiles() { Vtor vtor = new Vtor(); vtor.setValidateAllProfilesByDefault(false); Zoo zoo = new Zoo(); vtor.validate(zoo); List<Violation> vlist = vtor.getViolations(); assertEquals(1, vlist.size()); vtor.resetViolations(); vtor.useProfile("default"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); assertEquals("ccc", vlist.get(0).getName()); vtor.resetViolations(); vtor.resetProfiles(); vtor.useProfile("p2"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); assertEquals("bbb", vlist.get(0).getName()); }
vtor.validate(zoo); List<Violation> vlist = vtor.getViolations(); assertEquals(3, vlist.size()); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(3, vlist.size()); vtor.resetProfiles(); vtor.useProfile("p1"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.resetProfiles(); vtor.useProfile("p2"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size());
@Test void testAsJoyAction() { Vtor vtor = new Vtor(); vtor.useProfiles(Vtor.DEFAULT_PROFILE, "register"); vtor.validate(new Too()); List<Violation> violations = vtor.getViolations(); assertNull(violations); }
vtor.validate(too); List<Violation> vlist = vtor.getViolations(); assertEquals(1, vlist.size()); vtor.resetProfiles(); vtor.useProfile("p1"); vtor.validate(too); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.resetProfiles(); vtor.useProfile("p2"); vtor.validate(too); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.resetProfiles(); vtor.useProfile("p3"); vtor.validate(too); vlist = vtor.getViolations(); assertNull(vlist); vtor.resetProfiles(); vtor.useProfiles("p1", "p2"); vtor.validate(too); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); vtor.resetProfiles();
@Test void testManualConfig() { ValidationContext vctx = new ValidationContext(); vctx.add(new Check("string", new MinLengthConstraint(2))); Vtor vtor = new Vtor(); vtor.validate(vctx, new Foo()); assertTrue(vtor.hasViolations()); List<Violation> vlist = vtor.getViolations(); assertFalse(vlist.isEmpty()); assertEquals(1, vlist.size()); Violation v = vlist.get(0); assertEquals("string", v.getName()); assertEquals("1", v.getInvalidValue()); assertEquals("string", v.getCheck().getName()); assertNull(v.getCheck().getMessage()); assertEquals(MinLengthConstraint.class, v.getConstraint().getClass()); // new context that contains previous ValidationContext vctx2 = new ValidationContext(); vctx2.add(new Check("foo", new AssertValidConstraint(vctx))); vtor = new Vtor(); vtor.validate(vctx2, new Boo()); vlist = vtor.getViolations(); assertFalse(vlist.isEmpty()); assertEquals(1, vlist.size()); v = vlist.get(0); assertEquals("foo.string", v.getName()); assertEquals("1", v.getInvalidValue()); assertEquals("string", v.getCheck().getName()); assertEquals(MinLengthConstraint.class, v.getConstraint().getClass()); }
@Test void testManualAddViolation() { ValidationContext vctx = new ValidationContext(); vctx.add(new Check("string", new MinLengthConstraint(2))); Vtor vtor = new Vtor(); Foo foo = new Foo(); vtor.validate(vctx, foo); vtor.addViolation(new Violation("number", foo, null)); List<Violation> vlist = vtor.getViolations(); assertFalse(vlist.isEmpty()); assertEquals(2, vlist.size()); Violation v = vlist.get(0); assertEquals("string", v.getName()); assertEquals("1", v.getInvalidValue()); assertEquals("string", v.getCheck().getName()); assertEquals(MinLengthConstraint.class, v.getConstraint().getClass()); v = vlist.get(1); assertEquals("number", v.getName()); assertNull(v.getInvalidValue()); assertNull(v.getCheck()); assertNull(v.getConstraint()); } }
/** * Validates provided context and value withing this constraint content. */ public void validateWithin(ValidationContext vctx, Object value) { vtor.validate(vctx, value, name); } }
/** * @see #validate(ValidationContext, Object, String) */ public void validate(ValidationContext vctx, Object target) { validate(vctx, target, null); }
/** * Validate object using context from the annotations. */ public void validate(Object target) { validate(ValidationContext.resolveFor(target.getClass()), target); }