Skip to content

Commit 7c498d0

Browse files
committed
Polishing.
Refine transaction annotation lookup. Structure argument stream. See #3188 Original pull request: #3194
1 parent 1d99afa commit 7c498d0

File tree

1 file changed

+24
-14
lines changed

1 file changed

+24
-14
lines changed

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java

+24-14
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,10 @@
1515
*/
1616
package org.springframework.data.jpa.repository.support;
1717

18-
import static java.util.Collections.singletonMap;
19-
import static org.assertj.core.api.Assertions.assertThat;
20-
import static org.assertj.core.api.Assertions.assertThatNoException;
21-
import static org.mockito.Mockito.any;
22-
import static org.mockito.Mockito.never;
23-
import static org.mockito.Mockito.verify;
24-
import static org.mockito.Mockito.when;
25-
import static org.springframework.data.jpa.domain.Specification.where;
18+
import static java.util.Collections.*;
19+
import static org.assertj.core.api.Assertions.*;
20+
import static org.mockito.Mockito.*;
21+
import static org.springframework.data.jpa.domain.Specification.*;
2622

2723
import jakarta.persistence.EntityGraph;
2824
import jakarta.persistence.EntityManager;
@@ -35,19 +31,20 @@
3531
import java.lang.reflect.Method;
3632
import java.lang.reflect.Modifier;
3733
import java.util.Arrays;
38-
import java.util.List;
3934
import java.util.Optional;
4035
import java.util.stream.Stream;
4136

4237
import org.junit.jupiter.api.BeforeEach;
4338
import org.junit.jupiter.api.Test;
4439
import org.junit.jupiter.api.extension.ExtendWith;
4540
import org.junit.jupiter.params.ParameterizedTest;
41+
import org.junit.jupiter.params.provider.Arguments;
4642
import org.junit.jupiter.params.provider.MethodSource;
4743
import org.mockito.Mock;
4844
import org.mockito.junit.jupiter.MockitoExtension;
4945
import org.mockito.junit.jupiter.MockitoSettings;
5046
import org.mockito.quality.Strictness;
47+
5148
import org.springframework.data.domain.PageRequest;
5249
import org.springframework.data.jpa.domain.sample.User;
5350
import org.springframework.data.jpa.repository.EntityGraph.EntityGraphType;
@@ -229,13 +226,26 @@ void applyQueryHintsToCountQueriesForSpecificationPageables() {
229226
@ParameterizedTest // GH-3188
230227
@MethodSource("modifyingMethods")
231228
void checkTransactionalAnnotation(Method method) {
229+
232230
Transactional transactional = method.getAnnotation(Transactional.class);
233-
assertThat(transactional).as("Method [%s] should be annotated with @Transactional", method).isNotNull();
234-
assertThat(transactional.readOnly()).as("Method [%s] should not be annotated with @Transactional(readOnly = true)", method).isFalse();
231+
if (transactional == null) {
232+
transactional = method.getDeclaringClass().getAnnotation(Transactional.class);
233+
}
234+
235+
assertThat(transactional).isNotNull();
236+
assertThat(transactional.readOnly()).isFalse();
237+
}
238+
239+
static Stream<Arguments> modifyingMethods() {
240+
241+
return Stream.of(SimpleJpaRepository.class.getDeclaredMethods())
242+
.filter(method -> Modifier.isPublic(method.getModifiers())) //
243+
.filter(method -> !method.isBridge()) //
244+
.filter(method -> method.getName().startsWith("delete") || method.getName().startsWith("save"))
245+
.map(method -> Arguments.argumentSet(formatName(method), method));
235246
}
236247

237-
static List<Method> modifyingMethods() {
238-
return Stream.of(SimpleJpaRepository.class.getDeclaredMethods()).filter(method -> Modifier.isPublic(method.getModifiers()) &&
239-
!method.isBridge() && (method.getName().startsWith("delete") || method.getName().startsWith("save"))).toList();
248+
private static String formatName(Method method) {
249+
return method.toString().replaceAll("public ", "").replaceAll(SimpleJpaRepository.class.getName() + ".", "");
240250
}
241251
}

0 commit comments

Comments
 (0)