use of org.springframework.data.convert.ClassGeneratingEntityInstantiatorUnitTests.Outer.Inner in project spring-data-commons by spring-projects.
the class ClassGeneratingEntityInstantiatorUnitTests method createsInnerClassInstanceCorrectly.
// DATACMNS-134, DATACMNS-578
@Test
public void createsInnerClassInstanceCorrectly() {
BasicPersistentEntity<Inner, P> entity = new BasicPersistentEntity<>(from(Inner.class));
assertThat(entity.getPersistenceConstructor()).satisfies(constructor -> {
Parameter<Object, P> parameter = constructor.getParameters().iterator().next();
Object outer = new Outer();
doReturn(outer).when(provider).getParameterValue(parameter);
Inner instance = this.instance.createInstance(entity, provider);
assertThat(instance).isNotNull();
// Hack to check synthetic field as compiles create different field names (e.g. this$0, this$1)
ReflectionUtils.doWithFields(Inner.class, field -> {
if (field.isSynthetic() && field.getName().startsWith("this$")) {
ReflectionUtils.makeAccessible(field);
assertThat(ReflectionUtils.getField(field, instance)).isEqualTo(outer);
}
});
});
}
Aggregations