BAEL-7032: Improvement to conditional mapping by using @Condition and added tests

This commit is contained in:
balasr3 2023-10-01 07:28:57 +05:30
parent 306f1335b8
commit 87056d13bc
4 changed files with 64 additions and 2 deletions

View File

@ -11,6 +11,8 @@ public class LicenseDto {
private LocalDateTime endDate;
private String licenseType;
public UUID getId() {
return id;
}
@ -35,4 +37,12 @@ public class LicenseDto {
this.endDate = endDate;
}
public String getLicenseType() {
return licenseType;
}
public void setLicenseType(String licenseType) {
this.licenseType = licenseType;
}
}

View File

@ -6,6 +6,7 @@ import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import org.mapstruct.AfterMapping;
import org.mapstruct.Condition;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
@ -40,4 +41,13 @@ public interface LicenseMapper {
.toDays() <= 14;
}
}
@Condition
default boolean mapsToExpectedLicenseType(String licenseType) {
try {
return licenseType != null && License.LicenseType.valueOf(licenseType) != null;
} catch (IllegalArgumentException e) {
return false;
}
}
}

View File

@ -16,6 +16,8 @@ public class License {
private boolean renewalRequired;
private LicenseType licenseType;
public UUID getId() {
return id;
}
@ -55,4 +57,16 @@ public class License {
public void setRenewalRequired(boolean renewalRequired) {
this.renewalRequired = renewalRequired;
}
}
public enum LicenseType {
INDIVIDUAL, FAMILY
}
public LicenseType getLicenseType() {
return licenseType;
}
public void setLicenseType(LicenseType licenseType) {
this.licenseType = licenseType;
}
}

View File

@ -6,6 +6,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.UUID;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
@ -74,4 +75,31 @@ class LicenseMapperUnitTest {
assertThat(license.getId()).isSameAs(id);
}
@Test
void givenLicenseDtoWithoutLicenseTypeString_WhenMapperMethodIsInvoked_ThenLicenseShouldBePopulatedWithoutLicenseType() {
LicenseDto licenseDto = new LicenseDto();
License license = licenseMapper.toLicense(licenseDto);
assertThat(license).isNotNull();
Assertions.assertNull(license.getLicenseType());
}
@Test
void givenLicenseDtoWithInvalidLicenseTypeString_WhenMapperMethodIsInvoked_ThenLicenseShouldBePopulatedWithoutLicenseType() {
LicenseDto licenseDto = new LicenseDto();
licenseDto.setLicenseType("invalid_license_type");
License license = licenseMapper.toLicense(licenseDto);
assertThat(license).isNotNull();
Assertions.assertNull(license.getLicenseType());
}
@Test
void givenLicenseDtoWithValidLicenseTypeString_WhenMapperMethodIsInvoked_ThenLicenseShouldBePopulatedWithMatchingLicenseType() {
LicenseDto licenseDto = new LicenseDto();
licenseDto.setLicenseType("INDIVIDUAL");
License license = licenseMapper.toLicense(licenseDto);
assertThat(license).isNotNull();
Assertions.assertNotNull(license.getLicenseType());
assertThat(license.getLicenseType()).isEqualTo(License.LicenseType.INDIVIDUAL);
}
}