package com.talentcard.server.request;
|
|
import com.talentcard.server.business.portal.FamilyCardApplicationRequest;
|
import jakarta.validation.Validation;
|
import jakarta.validation.Validator;
|
import org.junit.jupiter.api.AfterAll;
|
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.Test;
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
class FamilyCardIdCardValidationTests {
|
|
private static jakarta.validation.ValidatorFactory validatorFactory;
|
private static Validator validator;
|
|
@BeforeAll
|
static void setUpValidator() {
|
validatorFactory = Validation.buildDefaultValidatorFactory();
|
validator = validatorFactory.getValidator();
|
}
|
|
@AfterAll
|
static void closeValidator() {
|
validatorFactory.close();
|
}
|
|
@Test
|
void acceptsEighteenDigitsOrUppercaseXAsCheckCode() {
|
assertThat(violationsForDependentRequest("510105199001011234")).isZero();
|
assertThat(violationsForDependentRequest("51010519900101123X")).isZero();
|
assertThat(violationsForPortalRequest("510105199001011234")).isZero();
|
assertThat(violationsForPortalRequest("51010519900101123X")).isZero();
|
}
|
|
@Test
|
void rejectsLegacyAndInvalidIdCardFormats() {
|
for (String idCard : new String[] { "510105900101123", "51010519900101123x", "51010519900101123A" }) {
|
assertThat(violationsForDependentRequest(idCard)).isPositive();
|
assertThat(violationsForPortalRequest(idCard)).isPositive();
|
}
|
}
|
|
private int violationsForDependentRequest(String idCard) {
|
return validator.validate(new DependentCardApplyRequest(1L, "家属", idCard, "13800138000", "配偶")).size();
|
}
|
|
private int violationsForPortalRequest(String idCard) {
|
return validator.validate(new FamilyCardApplicationRequest(1L, "家属", idCard, "13800138000", "配偶")).size();
|
}
|
}
|