/** * Returns validation violations or <code>null</code> if validation was successful. */ public List<Violation> violations() { if (vtor == null) { return null; } return vtor.getViolations(); }
/** * 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 testAddViolation_withTwoDifferentValues() throws Exception { //given Vtor vtor = new Vtor(); Violation violation1 = mock(Violation.class); vtor.addViolation(violation1); Violation violation2 = mock(Violation.class); vtor.addViolation(violation2); assertEquals(2, vtor.getViolations().size()); assertEquals(violation1, vtor.getViolations().get(0)); assertEquals(violation2, vtor.getViolations().get(1)); //when vtor.addViolation(null); //then assertEquals(2, vtor.getViolations().size()); }
/** * Performs validation of provided validation context and appends violations. */ public List<Violation> validate(final ValidationContext ctx, final Object target, final String targetName) { for (Map.Entry<String, List<Check>> entry : ctx.map.entrySet()) { String name = entry.getKey(); Object value = BeanUtil.declaredSilent.getProperty(target, name); String valueName = targetName != null ? (targetName + '.' + name) : name; // move up ValidationConstraintContext vcc = new ValidationConstraintContext(this, target, valueName); for (Check check : entry.getValue()) { String[] checkProfiles = check.getProfiles(); if (!matchProfiles(checkProfiles)) { continue; } if (check.getSeverity() < severity) { continue; } ValidationConstraint constraint = check.getConstraint(); if (!constraint.isValid(vcc, value)) { addViolation(new Violation(valueName, target, value, check)); } } } return getViolations(); }
@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 testAddViolation_withNullValue() throws Exception { Vtor vtor = new Vtor(); vtor.addViolation(null); assertNull(vtor.getViolations()); }
@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()); }
@Test void testAsJoyAction() { Vtor vtor = new Vtor(); vtor.useProfiles(Vtor.DEFAULT_PROFILE, "register"); vtor.validate(new Too()); List<Violation> violations = vtor.getViolations(); assertNull(violations); }
List<Violation> vlist = vtor.getViolations(); assertEquals(3, vlist.size()); vtor.useProfile("default"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); vtor.useProfile("p2"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.useProfile("p1"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(3, vlist.size()); vtor.useProfile("p1"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.useProfile("p2"); vtor.validate(zoo); vlist = vtor.getViolations(); assertEquals(1, vlist.size());
List<Violation> vlist = vtor.getViolations(); assertEquals(1, vlist.size()); Violation v = vlist.get(0); vtor.useProfile("p1"); vtor.validate(too); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.useProfile("p2"); vtor.validate(too); vlist = vtor.getViolations(); assertEquals(2, vlist.size()); vtor.useProfile("p3"); vtor.validate(too); vlist = vtor.getViolations(); assertNull(vlist); vtor.useProfiles("p1", "p2"); vtor.validate(too); vlist = vtor.getViolations(); assertEquals(1, vlist.size()); vtor.useProfiles("p1", "p2", "p3"); vtor.validate(too); vlist = vtor.getViolations(); assertEquals(2, vlist.size());
@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()); } }
/** * Returns validation violations or <code>null</code> if validation was successful. */ public List<Violation> violations() { if (vtor == null) { return null; } return vtor.getViolations(); }
/** * 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; }