// Copyright © 2015 HSL <https://www.hsl.fi>
// This program is dual-licensed under the EUPL v1.2 and AGPLv3 licenses.
package fi.hsl.parkandride.core.domain;
import static fi.hsl.parkandride.core.domain.FacilityStatus.IN_OPERATION;
import static fi.hsl.parkandride.core.domain.PricingMethod.CUSTOM;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import org.geolatte.geom.Polygon;
import org.junit.Test;
public class ViolationTest {
private final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
@Test
public void nonCapacityViolation_is_not_translated() {
assertThat(path(nameViolation())).isEqualTo("name.fi");
}
private String path(ConstraintViolation<Facility> cv) {
return new Violation(cv).path;
}
private ConstraintViolation<Facility> nameViolation() {
Facility f = validFacility();
f.operatorId = 1l;
f.status = IN_OPERATION;
f.contacts.emergency = 1l;
f.contacts.operator = 1l;
f.name = new MultilingualString("", "Test", "Test");
return toFacilityConstraintViolation(f);
}
private ConstraintViolation<Facility> toFacilityConstraintViolation(Facility f) {
Set<ConstraintViolation<Facility>> violations = validator.validate(f);
assertThat(violations).hasSize(1);
return violations.iterator().next();
}
private Facility validFacility() {
Facility f = new Facility();
f.operatorId = 1l;
f.status = IN_OPERATION;
f.pricingMethod = CUSTOM;
f.contacts.emergency = 1l;
f.contacts.operator = 1l;
f.name = new MultilingualString("Test", "Test", "Test");
f.location = Polygon.createEmpty();
Set<ConstraintViolation<Facility>> violations = validator.validate(f);
assertThat(violations).isEmpty();
return f;
}
}