Add test case for subclass mapping and bean mapping ignore by default

This commit is contained in:
Filip Hrisafov 2023-07-29 14:52:24 +02:00
parent 0460c373c0
commit 28d827a724
2 changed files with 43 additions and 0 deletions

View File

@ -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);
}

View File

@ -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();
} );
}
}