From 28d827a724bab212c8069903bd1bac3679370ad6 Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Sat, 29 Jul 2023 14:52:24 +0200 Subject: [PATCH] Add test case for subclass mapping and bean mapping ignore by default --- .../SubclassIgnoreByDefaultMapper.java | 29 +++++++++++++++++++ .../subclassmapping/SubclassMappingTest.java | 14 +++++++++ 2 files changed, 43 insertions(+) create mode 100644 processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassIgnoreByDefaultMapper.java diff --git a/processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassIgnoreByDefaultMapper.java b/processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassIgnoreByDefaultMapper.java new file mode 100644 index 000000000..d138eb4ec --- /dev/null +++ b/processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassIgnoreByDefaultMapper.java @@ -0,0 +1,29 @@ +/* + * Copyright MapStruct Authors. + * + * Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 + */ +package org.mapstruct.ap.test.subclassmapping; + +import org.mapstruct.BeanMapping; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.SubclassMapping; +import org.mapstruct.ap.test.subclassmapping.mappables.Bike; +import org.mapstruct.ap.test.subclassmapping.mappables.BikeDto; +import org.mapstruct.ap.test.subclassmapping.mappables.Car; +import org.mapstruct.ap.test.subclassmapping.mappables.CarDto; +import org.mapstruct.ap.test.subclassmapping.mappables.Vehicle; +import org.mapstruct.ap.test.subclassmapping.mappables.VehicleDto; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface SubclassIgnoreByDefaultMapper { + SubclassIgnoreByDefaultMapper INSTANCE = Mappers.getMapper( SubclassIgnoreByDefaultMapper.class ); + + @BeanMapping(ignoreByDefault = true) + @SubclassMapping(source = Car.class, target = CarDto.class) + @SubclassMapping(source = Bike.class, target = BikeDto.class) + @Mapping(target = "name") + VehicleDto map(Vehicle vehicle); +} diff --git a/processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassMappingTest.java b/processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassMappingTest.java index ba64d2cc7..60e274ef1 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassMappingTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/subclassmapping/SubclassMappingTest.java @@ -277,4 +277,18 @@ public class SubclassMappingTest { }) void inverseSubclassMappingNotPossible() { } + + @ProcessorTest + @WithClasses(SubclassIgnoreByDefaultMapper.class) + void beanMappingIgnoreByDefaultShouldBePropagated() { + Car car = new Car(); + car.setName( "Test car" ); + car.setManual( true ); + VehicleDto target = SubclassIgnoreByDefaultMapper.INSTANCE.map( car ); + assertThat( target ) + .isInstanceOfSatisfying( CarDto.class, carDto -> { + assertThat( carDto.getName() ).isEqualTo( "Test car" ); + assertThat( carDto.isManual() ).isFalse(); + } ); + } }