Skip to content

Commit 78ed13d

Browse files
committed
Adapt ConnectionFactoryUtilsTests to newly added Informix codes
Signed-off-by: Lukáš Kvídera <[email protected]>
1 parent abf6ed8 commit 78ed13d

File tree

1 file changed

+37
-35
lines changed

1 file changed

+37
-35
lines changed

spring-r2dbc/src/test/java/org/springframework/r2dbc/connection/ConnectionFactoryUtilsTests.java

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,9 @@
1616

1717
package org.springframework.r2dbc.connection;
1818

19-
import io.r2dbc.spi.R2dbcBadGrammarException;
20-
import io.r2dbc.spi.R2dbcDataIntegrityViolationException;
21-
import io.r2dbc.spi.R2dbcException;
22-
import io.r2dbc.spi.R2dbcNonTransientResourceException;
23-
import io.r2dbc.spi.R2dbcPermissionDeniedException;
24-
import io.r2dbc.spi.R2dbcRollbackException;
25-
import io.r2dbc.spi.R2dbcTimeoutException;
26-
import io.r2dbc.spi.R2dbcTransientResourceException;
27-
import org.junit.jupiter.api.Test;
19+
import static org.assertj.core.api.Assertions.assertThat;
20+
21+
import java.util.stream.Stream;
2822

2923
import org.springframework.dao.CannotAcquireLockException;
3024
import org.springframework.dao.DataAccessResourceFailureException;
@@ -37,7 +31,18 @@
3731
import org.springframework.r2dbc.BadSqlGrammarException;
3832
import org.springframework.r2dbc.UncategorizedR2dbcException;
3933

40-
import static org.assertj.core.api.Assertions.assertThat;
34+
import io.r2dbc.spi.R2dbcBadGrammarException;
35+
import io.r2dbc.spi.R2dbcDataIntegrityViolationException;
36+
import io.r2dbc.spi.R2dbcException;
37+
import io.r2dbc.spi.R2dbcNonTransientResourceException;
38+
import io.r2dbc.spi.R2dbcPermissionDeniedException;
39+
import io.r2dbc.spi.R2dbcRollbackException;
40+
import io.r2dbc.spi.R2dbcTimeoutException;
41+
import io.r2dbc.spi.R2dbcTransientResourceException;
42+
import org.junit.jupiter.api.Test;
43+
import org.junit.jupiter.params.ParameterizedTest;
44+
import org.junit.jupiter.params.provider.Arguments;
45+
import org.junit.jupiter.params.provider.MethodSource;
4146

4247
/**
4348
* Tests for {@link ConnectionFactoryUtils}.
@@ -86,35 +91,32 @@ void shouldTranslateNonTransientResourceException() {
8691
assertThat(exception).isExactlyInstanceOf(DataAccessResourceFailureException.class);
8792
}
8893

94+
private static Stream<Arguments> duplicateKeyErrorCodes() {
95+
return Stream.of(
96+
Arguments.of("Oracle", "23505", 0),
97+
Arguments.of("Oracle", "23000", 1),
98+
Arguments.of("SAP HANA", "23000", 301),
99+
Arguments.of("MySQL/MariaDB", "23000", 1062),
100+
Arguments.of("MS SQL Server", "23000", 2601),
101+
Arguments.of("MS SQL Server", "23000", 2627),
102+
Arguments.of("Informix", "23000", -239),
103+
Arguments.of("Informix", "23000", -268)
104+
);
105+
}
106+
107+
@ParameterizedTest
108+
@MethodSource("duplicateKeyErrorCodes")
109+
void shouldTranslateIntegrityViolationException(final String db, String sqlState, final int errorCode) {
110+
Exception exception = ConnectionFactoryUtils.convertR2dbcException("", "",
111+
new R2dbcDataIntegrityViolationException("reason", sqlState, errorCode));
112+
assertThat(exception).as(db).isExactlyInstanceOf(DuplicateKeyException.class);
113+
}
114+
89115
@Test
90-
void shouldTranslateIntegrityViolationException() {
116+
void shouldTranslateGenericIntegrityViolationException() {
91117
Exception exception = ConnectionFactoryUtils.convertR2dbcException("", "",
92118
new R2dbcDataIntegrityViolationException());
93119
assertThat(exception).isExactlyInstanceOf(DataIntegrityViolationException.class);
94-
95-
exception = ConnectionFactoryUtils.convertR2dbcException("", "",
96-
new R2dbcDataIntegrityViolationException("reason", "23505"));
97-
assertThat(exception).isExactlyInstanceOf(DuplicateKeyException.class);
98-
99-
exception = ConnectionFactoryUtils.convertR2dbcException("", "",
100-
new R2dbcDataIntegrityViolationException("reason", "23000", 1));
101-
assertThat(exception).as("Oracle").isExactlyInstanceOf(DuplicateKeyException.class);
102-
103-
exception = ConnectionFactoryUtils.convertR2dbcException("", "",
104-
new R2dbcDataIntegrityViolationException("reason", "23000", 301));
105-
assertThat(exception).as("SAP HANA").isExactlyInstanceOf(DuplicateKeyException.class);
106-
107-
exception = ConnectionFactoryUtils.convertR2dbcException("", "",
108-
new R2dbcDataIntegrityViolationException("reason", "23000", 1062));
109-
assertThat(exception).as("MySQL/MariaDB").isExactlyInstanceOf(DuplicateKeyException.class);
110-
111-
exception = ConnectionFactoryUtils.convertR2dbcException("", "",
112-
new R2dbcDataIntegrityViolationException("reason", "23000", 2601));
113-
assertThat(exception).as("MS SQL Server").isExactlyInstanceOf(DuplicateKeyException.class);
114-
115-
exception = ConnectionFactoryUtils.convertR2dbcException("", "",
116-
new R2dbcDataIntegrityViolationException("reason", "23000", 2627));
117-
assertThat(exception).as("MS SQL Server").isExactlyInstanceOf(DuplicateKeyException.class);
118120
}
119121

120122
@Test

0 commit comments

Comments
 (0)