Skip to content

Commit 5ff5028

Browse files
[ACC-2439] Move common setup-code for jooq tests into testFixtures
1 parent b6af7fd commit 5ff5028

File tree

12 files changed

+137
-316
lines changed

12 files changed

+137
-316
lines changed

contentgrid-appserver-autoconfigure/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ dependencies {
2727
compileOnly 'io.minio:minio'
2828
compileOnly 'org.flywaydb:flyway-core'
2929
compileOnly 'org.flywaydb:flyway-database-postgresql'
30+
compileOnly 'org.jooq:jooq'
3031
compileOnly 'org.springframework:spring-tx'
3132
compileOnly 'org.springframework.hateoas:spring-hateoas'
3233
compileOnly 'org.springframework.security:spring-security-web'

contentgrid-appserver-query-engine-impl-jooq/build.gradle

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,31 @@ plugins {
22
id 'java-library'
33
id 'maven-publish'
44
id 'io.freefair.lombok'
5+
id 'java-test-fixtures'
56
}
67

78
dependencies {
8-
implementation project(':contentgrid-appserver-application-model')
9-
implementation project(':contentgrid-appserver-query-engine-api')
10-
runtimeOnly 'org.postgresql:postgresql'
9+
api project(':contentgrid-appserver-application-model')
10+
api project(':contentgrid-appserver-query-engine-api')
11+
api 'com.contentgrid.thunx:thunx-model'
12+
13+
implementation 'org.jooq:jooq'
1114
implementation 'org.testcontainers:postgresql'
1215
implementation 'org.springframework:spring-tx'
13-
api 'org.jooq:jooq'
14-
api 'com.contentgrid.thunx:thunx-model'
1516
implementation 'com.fasterxml.uuid:java-uuid-generator'
17+
runtimeOnly 'org.postgresql:postgresql'
1618

1719
annotationProcessor "org.jooq:jooq-checker:3.20.9"
1820
testAnnotationProcessor "org.jooq:jooq-checker:3.20.9"
21+
testFixturesAnnotationProcessor "org.jooq:jooq-checker:3.20.9"
1922

2023
testImplementation 'org.springframework.boot:spring-boot-starter-test'
2124
testImplementation 'org.springframework.boot:spring-boot-starter-jooq'
2225
testImplementation 'org.assertj:assertj-core'
2326
testImplementation 'com.google.guava:guava:33.5.0-jre'
27+
28+
testFixturesImplementation 'org.springframework.boot:spring-boot-starter-test'
29+
testFixturesImplementation 'org.springframework.boot:spring-boot-starter-jooq'
2430
}
2531

2632
// Enable jOOQ's PlainSQLChecker annotation processor to error on plain SQL usage

contentgrid-appserver-query-engine-impl-jooq/src/test/java/com/contentgrid/appserver/query/engine/jooq/BlindRelationOverwriteTest.java

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -37,38 +37,23 @@
3737
import com.contentgrid.appserver.query.engine.api.UpdateEventConsumer;
3838
import com.contentgrid.appserver.query.engine.api.data.EntityCreateData;
3939
import com.contentgrid.appserver.query.engine.api.exception.BlindRelationOverwriteException;
40-
import com.contentgrid.appserver.query.engine.jooq.BlindRelationOverwriteTest.TestApplication;
41-
import com.contentgrid.appserver.query.engine.jooq.count.JOOQTimedCountStrategy;
42-
import com.contentgrid.appserver.query.engine.jooq.resolver.AutowiredDSLContextResolver;
43-
import com.contentgrid.appserver.query.engine.jooq.resolver.DSLContextResolver;
40+
import com.contentgrid.appserver.query.engine.jooq.test.JooqTest;
4441
import com.contentgrid.thunx.predicates.model.Scalar;
45-
import java.time.Duration;
4642
import java.util.Arrays;
4743
import java.util.List;
4844
import java.util.Objects;
4945
import java.util.Set;
5046
import java.util.stream.Collectors;
5147
import java.util.stream.Stream;
52-
import org.jooq.DSLContext;
5348
import org.junit.jupiter.api.AfterEach;
5449
import org.junit.jupiter.api.BeforeEach;
5550
import org.junit.jupiter.params.ParameterizedTest;
5651
import org.junit.jupiter.params.provider.Arguments;
5752
import org.junit.jupiter.params.provider.MethodSource;
5853
import org.springframework.beans.factory.annotation.Autowired;
59-
import org.springframework.boot.autoconfigure.SpringBootApplication;
60-
import org.springframework.boot.autoconfigure.jooq.ExceptionTranslatorExecuteListener;
61-
import org.springframework.boot.test.context.SpringBootTest;
62-
import org.springframework.context.annotation.Bean;
63-
import org.springframework.test.context.ContextConfiguration;
6454
import org.springframework.test.context.bean.override.mockito.MockitoBean;
65-
import org.springframework.transaction.PlatformTransactionManager;
6655

67-
@SpringBootTest(properties = {
68-
"spring.datasource.url=jdbc:tc:postgresql:15:///",
69-
"logging.level.org.jooq.tools.LoggerListener=DEBUG"
70-
})
71-
@ContextConfiguration(classes = {TestApplication.class})
56+
@JooqTest
7257
class BlindRelationOverwriteTest {
7358

7459
public static final Scalar<Boolean> PERMIT_ALWAYS = Scalar.of(true);
@@ -415,33 +400,4 @@ void overwriteMultipleValuesOnOtherSide_fails(Relation relation) {
415400
// Also the succeeding target is not actually linked due to the exception throw earlier
416401
assertThat(queryEngine.isLinked(APPLICATION, newSourceRelationRequest, succeedingTarget.getEntityId(), PERMIT_ALWAYS)).isFalse();
417402
}
418-
419-
@SpringBootApplication
420-
static class TestApplication {
421-
422-
@Bean
423-
public DSLContextResolver autowiredDSLContextResolver(DSLContext dslContext) {
424-
return new AutowiredDSLContextResolver(dslContext);
425-
}
426-
427-
@Bean
428-
ExceptionTranslatorExecuteListener noopExceptionTranslator() {
429-
return new ExceptionTranslatorExecuteListener() {
430-
};
431-
}
432-
433-
@Bean
434-
public TableCreator jooqTableCreator(DSLContextResolver dslContextResolver) {
435-
return new JOOQTableCreator(dslContextResolver);
436-
}
437-
438-
@Bean
439-
public QueryEngine jooqQueryEngine(DSLContextResolver dslContextResolver,
440-
PlatformTransactionManager transactionManager) {
441-
return new TransactionalQueryEngine(
442-
new JOOQQueryEngine(dslContextResolver, new JOOQTimedCountStrategy(Duration.ofMillis(500))),
443-
transactionManager
444-
);
445-
}
446-
}
447403
}

contentgrid-appserver-query-engine-impl-jooq/src/test/java/com/contentgrid/appserver/query/engine/jooq/EventsDispatchTest.java

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -46,32 +46,18 @@
4646
import com.contentgrid.appserver.query.engine.api.data.SimpleAttributeData;
4747
import com.contentgrid.appserver.query.engine.api.data.XToOneRelationData;
4848
import com.contentgrid.appserver.query.engine.api.exception.QueryEngineException;
49-
import com.contentgrid.appserver.query.engine.jooq.BlindRelationOverwriteTest.TestApplication;
50-
import com.contentgrid.appserver.query.engine.jooq.count.JOOQTimedCountStrategy;
51-
import com.contentgrid.appserver.query.engine.jooq.resolver.AutowiredDSLContextResolver;
52-
import com.contentgrid.appserver.query.engine.jooq.resolver.DSLContextResolver;
49+
import com.contentgrid.appserver.query.engine.jooq.test.JooqTest;
5350
import com.contentgrid.thunx.predicates.model.Scalar;
54-
import java.time.Duration;
5551
import java.util.Set;
5652
import java.util.UUID;
57-
import org.jooq.DSLContext;
5853
import org.junit.jupiter.api.AfterEach;
5954
import org.junit.jupiter.api.BeforeEach;
6055
import org.junit.jupiter.api.Test;
6156
import org.mockito.Mockito;
6257
import org.springframework.beans.factory.annotation.Autowired;
63-
import org.springframework.boot.autoconfigure.SpringBootApplication;
64-
import org.springframework.boot.test.context.SpringBootTest;
65-
import org.springframework.context.annotation.Bean;
66-
import org.springframework.test.context.ContextConfiguration;
6758
import org.springframework.test.context.bean.override.mockito.MockitoBean;
68-
import org.springframework.transaction.PlatformTransactionManager;
6959

70-
@SpringBootTest(properties = {
71-
"spring.datasource.url=jdbc:tc:postgresql:15:///",
72-
"logging.level.org.jooq.tools.LoggerListener=DEBUG"
73-
})
74-
@ContextConfiguration(classes = {TestApplication.class})
60+
@JooqTest
7561
public class EventsDispatchTest {
7662
public static final Scalar<Boolean> PERMIT_ALWAYS = Scalar.of(true);
7763

@@ -787,27 +773,4 @@ void verifyRemoveLinks_eventThrows() {
787773
.relation(RELATION_A_TO_A)
788774
.relation(RELATION_C_TO_B)
789775
.build();
790-
791-
@SpringBootApplication
792-
static class TestApplication {
793-
794-
@Bean
795-
public DSLContextResolver autowiredDSLContextResolver(DSLContext dslContext) {
796-
return new AutowiredDSLContextResolver(dslContext);
797-
}
798-
799-
@Bean
800-
public TableCreator jooqTableCreator(DSLContextResolver dslContextResolver) {
801-
return new JOOQTableCreator(dslContextResolver);
802-
}
803-
804-
@Bean
805-
public QueryEngine jooqQueryEngine(DSLContextResolver dslContextResolver,
806-
PlatformTransactionManager transactionManager) {
807-
return new TransactionalQueryEngine(
808-
new JOOQQueryEngine(dslContextResolver, new JOOQTimedCountStrategy(Duration.ofMillis(500))),
809-
transactionManager
810-
);
811-
}
812-
}
813776
}

contentgrid-appserver-query-engine-impl-jooq/src/test/java/com/contentgrid/appserver/query/engine/jooq/JOOQQueryEngineTest.java

Lines changed: 2 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,7 @@
8686
import com.contentgrid.appserver.query.engine.api.exception.UniqueConstraintViolationException;
8787
import com.contentgrid.appserver.query.engine.api.exception.UnsatisfiedVersionException;
8888
import com.contentgrid.appserver.query.engine.api.thunx.expression.StringComparison;
89-
import com.contentgrid.appserver.query.engine.jooq.JOOQQueryEngineTest.TestApplication;
90-
import com.contentgrid.appserver.query.engine.jooq.count.JOOQTimedCountStrategy;
91-
import com.contentgrid.appserver.query.engine.jooq.resolver.AutowiredDSLContextResolver;
92-
import com.contentgrid.appserver.query.engine.jooq.resolver.DSLContextResolver;
89+
import com.contentgrid.appserver.query.engine.jooq.test.JooqTest;
9390
import com.contentgrid.thunx.predicates.model.Comparison;
9491
import com.contentgrid.thunx.predicates.model.LogicalOperation;
9592
import com.contentgrid.thunx.predicates.model.NumericFunction;
@@ -100,7 +97,6 @@
10097
import com.fasterxml.uuid.Generators;
10198
import com.fasterxml.uuid.impl.TimeBasedEpochRandomGenerator;
10299
import java.math.BigDecimal;
103-
import java.time.Duration;
104100
import java.time.Instant;
105101
import java.util.ArrayList;
106102
import java.util.List;
@@ -118,20 +114,9 @@
118114
import org.junit.jupiter.params.provider.CsvSource;
119115
import org.junit.jupiter.params.provider.MethodSource;
120116
import org.springframework.beans.factory.annotation.Autowired;
121-
import org.springframework.boot.SpringApplication;
122-
import org.springframework.boot.autoconfigure.SpringBootApplication;
123-
import org.springframework.boot.autoconfigure.jooq.ExceptionTranslatorExecuteListener;
124-
import org.springframework.boot.test.context.SpringBootTest;
125-
import org.springframework.context.annotation.Bean;
126-
import org.springframework.test.context.ContextConfiguration;
127117
import org.springframework.test.context.bean.override.mockito.MockitoBean;
128-
import org.springframework.transaction.PlatformTransactionManager;
129118

130-
@SpringBootTest(properties = {
131-
"spring.datasource.url=jdbc:tc:postgresql:15:///",
132-
"logging.level.org.jooq.tools.LoggerListener=DEBUG"
133-
})
134-
@ContextConfiguration(classes = {TestApplication.class})
119+
@JooqTest
135120
class JOOQQueryEngineTest {
136121

137122
private static final OffsetData DEFAULT_PAGE_DATA = new OffsetData(20, 0);
@@ -2680,35 +2665,4 @@ void testCounting(ThunkExpression<Boolean> expression, long count) {
26802665
assertEquals(count, exact.count());
26812666
}
26822667

2683-
@SpringBootApplication
2684-
static class TestApplication {
2685-
public static void main(String[] args) {
2686-
SpringApplication.run(TestApplication.class, args);
2687-
}
2688-
2689-
@Bean
2690-
public DSLContextResolver autowiredDSLContextResolver(DSLContext dslContext) {
2691-
return new AutowiredDSLContextResolver(dslContext);
2692-
}
2693-
2694-
@Bean
2695-
ExceptionTranslatorExecuteListener noopExceptionTranslator() {
2696-
return new ExceptionTranslatorExecuteListener() {
2697-
};
2698-
}
2699-
2700-
@Bean
2701-
public TableCreator jooqTableCreator(DSLContextResolver dslContextResolver) {
2702-
return new JOOQTableCreator(dslContextResolver);
2703-
}
2704-
2705-
@Bean
2706-
public QueryEngine jooqQueryEngine(DSLContextResolver dslContextResolver,
2707-
PlatformTransactionManager transactionManager) {
2708-
return new TransactionalQueryEngine(
2709-
new JOOQQueryEngine(dslContextResolver, new JOOQTimedCountStrategy(Duration.ofMillis(500))),
2710-
transactionManager
2711-
);
2712-
}
2713-
}
27142668
}

contentgrid-appserver-query-engine-impl-jooq/src/test/java/com/contentgrid/appserver/query/engine/jooq/JOOQTableCreatorTest.java

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@
4040
import com.contentgrid.appserver.application.model.values.RelationName;
4141
import com.contentgrid.appserver.application.model.values.TableName;
4242
import com.contentgrid.appserver.query.engine.api.TableCreator;
43-
import com.contentgrid.appserver.query.engine.jooq.JOOQTableCreatorTest.TestApplication;
44-
import com.contentgrid.appserver.query.engine.jooq.resolver.AutowiredDSLContextResolver;
43+
import com.contentgrid.appserver.query.engine.jooq.test.JooqTest;
4544
import java.sql.Connection;
4645
import java.sql.DatabaseMetaData;
4746
import java.sql.ResultSet;
@@ -58,20 +57,11 @@
5857
import org.junit.jupiter.params.ParameterizedTest;
5958
import org.junit.jupiter.params.provider.MethodSource;
6059
import org.springframework.beans.factory.annotation.Autowired;
61-
import org.springframework.boot.SpringApplication;
62-
import org.springframework.boot.autoconfigure.SpringBootApplication;
63-
import org.springframework.boot.autoconfigure.jooq.ExceptionTranslatorExecuteListener;
64-
import org.springframework.boot.test.context.SpringBootTest;
65-
import org.springframework.context.annotation.Bean;
6660
import org.springframework.jdbc.core.JdbcTemplate;
67-
import org.springframework.test.context.ContextConfiguration;
6861
import org.springframework.transaction.annotation.Propagation;
6962
import org.springframework.transaction.annotation.Transactional;
7063

71-
@SpringBootTest(properties = {
72-
"spring.datasource.url=jdbc:tc:postgresql:15:///"
73-
})
74-
@ContextConfiguration(classes = TestApplication.class)
64+
@JooqTest
7565
@Slf4j
7666
@Transactional
7767
class JOOQTableCreatorTest {
@@ -551,21 +541,4 @@ void invalidApplication_rollbackTransaction() {
551541
assertThrows(DataAccessException.class, () -> tableCreator.dropTables(application));
552542
assertTrue(getTables("public").isEmpty());
553543
}
554-
555-
@SpringBootApplication
556-
static class TestApplication {
557-
public static void main(String[] args) {
558-
SpringApplication.run(TestApplication.class, args);
559-
}
560-
561-
@Bean
562-
ExceptionTranslatorExecuteListener noopExceptionTranslator() {
563-
return new ExceptionTranslatorExecuteListener() {
564-
};
565-
}
566-
@Bean
567-
public TableCreator jooqTableCreator(DSLContext dslContext) {
568-
return new JOOQTableCreator(new AutowiredDSLContextResolver(dslContext));
569-
}
570-
}
571544
}

contentgrid-appserver-query-engine-impl-jooq/src/test/java/com/contentgrid/appserver/query/engine/jooq/JOOQThunkExpressionVisitorTest.java

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@
4242
import com.contentgrid.appserver.query.engine.api.TableCreator;
4343
import com.contentgrid.appserver.query.engine.api.exception.InvalidThunkExpressionException;
4444
import com.contentgrid.appserver.query.engine.api.thunx.expression.StringComparison;
45-
import com.contentgrid.appserver.query.engine.jooq.JOOQThunkExpressionVisitorTest.TestApplication;
46-
import com.contentgrid.appserver.query.engine.jooq.resolver.AutowiredDSLContextResolver;
45+
import com.contentgrid.appserver.query.engine.jooq.test.JooqTest;
4746
import com.contentgrid.thunx.predicates.model.CollectionValue;
4847
import com.contentgrid.thunx.predicates.model.Comparison;
4948
import com.contentgrid.thunx.predicates.model.ListValue;
@@ -71,19 +70,9 @@
7170
import org.junit.jupiter.params.provider.Arguments;
7271
import org.junit.jupiter.params.provider.MethodSource;
7372
import org.springframework.beans.factory.annotation.Autowired;
74-
import org.springframework.boot.SpringApplication;
75-
import org.springframework.boot.autoconfigure.SpringBootApplication;
76-
import org.springframework.boot.autoconfigure.jooq.ExceptionTranslatorExecuteListener;
77-
import org.springframework.boot.test.context.SpringBootTest;
78-
import org.springframework.context.annotation.Bean;
79-
import org.springframework.test.context.ContextConfiguration;
8073
import org.springframework.transaction.annotation.Transactional;
8174

82-
@SpringBootTest(properties = {
83-
"spring.datasource.url=jdbc:tc:postgresql:15:///",
84-
"logging.level.org.jooq.tools.LoggerListener=DEBUG"
85-
})
86-
@ContextConfiguration(classes = {TestApplication.class})
75+
@JooqTest
8776
@Transactional
8877
class JOOQThunkExpressionVisitorTest {
8978

@@ -911,23 +900,5 @@ void findIllegalExpression(ThunkExpression<Boolean> expression) {
911900
var context = new JOOQThunkExpressionVisitor.JOOQContext(APPLICATION, INVOICE);
912901
assertThrows(InvalidThunkExpressionException.class, () -> expression.accept(VISITOR, context));
913902
}
914-
915-
@SpringBootApplication
916-
static class TestApplication {
917-
public static void main(String[] args) {
918-
SpringApplication.run(TestApplication.class, args);
919-
}
920-
921-
@Bean
922-
ExceptionTranslatorExecuteListener noopExceptionTranslator() {
923-
return new ExceptionTranslatorExecuteListener() {
924-
};
925-
}
926-
927-
@Bean
928-
public TableCreator jooqTableCreator(DSLContext dslContext) {
929-
return new JOOQTableCreator(new AutowiredDSLContextResolver(dslContext));
930-
}
931-
}
932903
}
933904

0 commit comments

Comments
 (0)