Skip to content

Commit be6de40

Browse files
committed
refactor: Move null conditions in Hibernate and Hikari context so no method solely exists for tests #1587
1 parent 7acb9ff commit be6de40

File tree

4 files changed

+18
-109
lines changed

4 files changed

+18
-109
lines changed

backend/src/main/java/ch/puzzle/okr/multitenancy/HibernateContext.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ private boolean hasEmptyValues() {
3232
private static DbConfig cachedHibernateConfig;
3333

3434
public static void setHibernateConfig(DbConfig dbConfig) {
35-
if (dbConfig == null || !dbConfig.isValid()) {
36-
throw new HibernateContextException("Invalid hibernate configuration " + dbConfig);
37-
}
3835
cachedHibernateConfig = dbConfig;
3936
}
4037

4138
public static void extractAndSetHibernateConfig(ConfigurableEnvironment environment) {
4239
DbConfig dbConfig = extractHibernateConfig(environment);
40+
if (!dbConfig.isValid()) {
41+
throw new HibernateContextException("Invalid hikari configuration " + dbConfig);
42+
}
4343
HibernateContext.setHibernateConfig(dbConfig);
4444
}
4545

@@ -51,13 +51,9 @@ private static DbConfig extractHibernateConfig(ConfigurableEnvironment environme
5151
return new DbConfig(url, username, password, multiTenancy);
5252
}
5353

54-
// for testing
55-
public static void resetHibernateConfig() {
56-
cachedHibernateConfig = null;
57-
}
58-
5954
public static Properties getHibernateConfig() {
60-
if (cachedHibernateConfig == null) {
55+
// Assert non null due to prevent null pointer in method getConfigAsProperties()
56+
if (cachedHibernateConfig == null || !cachedHibernateConfig.isValid()) {
6157
throw new HibernateContextException("No cached hibernate configuration found");
6258
}
6359
return getConfigAsProperties(cachedHibernateConfig);

backend/src/main/java/ch/puzzle/okr/multitenancy/HikariContext.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ private boolean hasEmptyValues() {
2525
private static DbConfig cachedHikariConfig;
2626

2727
public static void setHikariConfig(DbConfig dbConfig) {
28-
if (dbConfig == null || !dbConfig.isValid()) {
29-
throw new HikariContextException("Invalid hikari configuration " + dbConfig);
30-
}
3128
cachedHikariConfig = dbConfig;
3229
}
3330

3431
public static void extractAndSetHikariConfig(ConfigurableEnvironment environment) {
3532
DbConfig dbConfig = extractHikariConfig(environment);
33+
if (!dbConfig.isValid()) {
34+
throw new HikariContextException("Invalid hikari configuration " + dbConfig);
35+
}
3636
HikariContext.setHikariConfig(dbConfig);
3737
}
3838

@@ -41,13 +41,9 @@ private static DbConfig extractHikariConfig(ConfigurableEnvironment environment)
4141
return new DbConfig(maximumPoolSize);
4242
}
4343

44-
// for testing
45-
public static void resetHikariConfig() {
46-
cachedHikariConfig = null;
47-
}
48-
4944
public static Properties getHikariConfig() {
50-
if (cachedHikariConfig == null) {
45+
// Assert non null due to prevent null pointer in method getConfigAsProperties()
46+
if (cachedHikariConfig == null || !cachedHikariConfig.isValid()) {
5147
throw new HikariContextException("No cached hikari configuration found");
5248
}
5349
return getConfigAsProperties(cachedHikariConfig);
@@ -58,4 +54,4 @@ private static Properties getConfigAsProperties(DbConfig dbConfig) {
5854
properties.put(HikariContext.HIKARI_MAXIMUM_POOL_SIZE, dbConfig.maximumPoolSize());
5955
return properties;
6056
}
61-
}
57+
}

backend/src/test/java/ch/puzzle/okr/multitenancy/HibernateContextTest.java

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -7,59 +7,16 @@
77

88
import ch.puzzle.okr.exception.HibernateContextException;
99
import java.util.Properties;
10-
import java.util.stream.Stream;
1110
import org.junit.jupiter.api.BeforeEach;
1211
import org.junit.jupiter.api.DisplayName;
1312
import org.junit.jupiter.api.Test;
14-
import org.junit.jupiter.params.ParameterizedTest;
15-
import org.junit.jupiter.params.provider.Arguments;
16-
import org.junit.jupiter.params.provider.MethodSource;
1713
import org.springframework.core.env.ConfigurableEnvironment;
1814

1915
class HibernateContextTest {
2016

2117
@BeforeEach
2218
void setUp() {
23-
resetHibernateConfig();
24-
}
25-
26-
@DisplayName("setHibernateConfig() should throw exception if db config is null")
27-
@Test
28-
void setHibernateConfigShouldThrowExceptionIfDbConfigIsNull() {
29-
// arrange
30-
DbConfig dbConfig = null;
31-
32-
// act + assert
33-
HibernateContextException exception = assertThrows(HibernateContextException.class,
34-
() -> setHibernateConfig(dbConfig));
35-
assertEquals("Invalid hibernate configuration null", exception.getMessage());
36-
}
37-
38-
@ParameterizedTest(name = "setHibernateConfig() should throw exception if db config has null or empty values")
39-
@MethodSource("invalidDbConfig")
40-
void setHibernateConfigShouldThrowExceptionIfDbConfigHasNullOrEmptyValues(String url, String username,
41-
String password, String tenant) {
42-
43-
// arrange
44-
DbConfig dbConfig = new DbConfig(url, username, password, tenant);
45-
46-
// act + assert
47-
HibernateContextException exception = assertThrows(HibernateContextException.class,
48-
() -> setHibernateConfig(dbConfig));
49-
assertTrue(exception.getMessage().startsWith("Invalid hibernate configuration"));
50-
}
51-
52-
private static Stream<Arguments> invalidDbConfig() {
53-
return Stream
54-
.of( //
55-
Arguments.of(null, "username", "password", "multiTenancy"), //
56-
Arguments.of("", "username", "password", "multiTenancy"), //
57-
Arguments.of("url", null, "password", "multiTenancy"), //
58-
Arguments.of("url", "", "password", "multiTenancy"), //
59-
Arguments.of("url", "username", null, "multiTenancy"), //
60-
Arguments.of("url", "username", "", "multiTenancy"), //
61-
Arguments.of("url", "username", "password", null), //
62-
Arguments.of("url", "username", "password", ""));
19+
HibernateContext.setHibernateConfig(null);
6320
}
6421

6522
@DisplayName("extractAndSetHibernateConfig() should extract hibernate properties from environment and set it")
@@ -86,8 +43,6 @@ void extractAndSetHibernateConfigShouldExtractHibernatePropertiesFromEnvironment
8643
@DisplayName("getHibernateConfig() should throw exception if setHibernateConfig() is not called before with valid configuration")
8744
@Test
8845
void getHibernateConfigShouldThrowExceptionIfSetHibernateConfigIsNotCalledBeforeWithValidConfiguration() {
89-
// arrange
90-
9146
// act + assert
9247
HibernateContextException exception = assertThrows(HibernateContextException.class,
9348
HibernateContext::getHibernateConfig);

backend/src/test/java/ch/puzzle/okr/multitenancy/HikariContextTest.java

Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,19 @@
22

33
import static ch.puzzle.okr.multitenancy.HikariContext.*;
44
import static org.junit.jupiter.api.Assertions.*;
5-
import static org.mockito.Mockito.mock;
6-
import static org.mockito.Mockito.when;
5+
import static org.mockito.Mockito.*;
76

87
import ch.puzzle.okr.exception.HikariContextException;
98
import java.util.Properties;
10-
import java.util.stream.Stream;
119
import org.junit.jupiter.api.BeforeEach;
1210
import org.junit.jupiter.api.DisplayName;
1311
import org.junit.jupiter.api.Test;
14-
import org.junit.jupiter.params.ParameterizedTest;
15-
import org.junit.jupiter.params.provider.Arguments;
16-
import org.junit.jupiter.params.provider.MethodSource;
1712
import org.springframework.core.env.ConfigurableEnvironment;
1813

1914
public class HikariContextTest {
2015
@BeforeEach
2116
void setUp() {
22-
resetHikariConfig();
23-
}
24-
25-
@DisplayName("setHikariConfig() should throw exception if db config is null")
26-
@Test
27-
void setHikariConfigShouldThrowExceptionIfDbConfigIsNull() {
28-
// arrange
29-
HikariContext.DbConfig dbConfig = null;
30-
31-
// act + assert
32-
HikariContextException exception = assertThrows(HikariContextException.class, () -> setHikariConfig(dbConfig));
33-
assertEquals("Invalid hikari configuration null", exception.getMessage());
34-
}
35-
36-
private static Stream<Arguments> invalidDbConfig() {
37-
return Stream
38-
.of( //
39-
Arguments.of(null, ""), //
40-
Arguments.of("")); //
41-
}
42-
43-
@ParameterizedTest(name = "setHikariConfig() should throw exception if db config has null or empty values")
44-
@MethodSource("invalidDbConfig")
45-
void setHikariConfigShouldThrowExceptionIfDbConfigHasNullOrEmptyValues(String maximumPoolSize) {
46-
47-
// arrange
48-
DbConfig dbConfig = new DbConfig(maximumPoolSize);
49-
50-
// act + assert
51-
HikariContextException exception = assertThrows(HikariContextException.class, () -> setHikariConfig(dbConfig));
52-
assertTrue(exception.getMessage().startsWith("Invalid hikari configuration"));
17+
HikariContext.setHikariConfig(null);
5318
}
5419

5520
@DisplayName("extractAndSetHikariConfig() should extract hikari properties from environment and set it")
@@ -67,14 +32,12 @@ void extractAndSetHikariConfigShouldExtractHikariPropertiesFromEnvironmentAndSet
6732

6833
// assert
6934
assertNotNull(hikariProperties);
70-
assertProperties(maximumPoolSize, hikariProperties);
35+
assertProperty(maximumPoolSize, hikariProperties);
7136
}
7237

7338
@DisplayName("getHikariConfig() should throw exception if setHikariConfig() is not called before with valid configuration")
7439
@Test
7540
void getHikariConfigShouldThrowExceptionIfSetHikariConfigIsNotCalledBeforeWithValidConfiguration() {
76-
// arrange
77-
7841
// act + assert
7942
HikariContextException exception = assertThrows(HikariContextException.class, HikariContext::getHikariConfig);
8043
assertEquals("No cached hikari configuration found", exception.getMessage());
@@ -93,12 +56,11 @@ void getHikariConfigShouldReturnHikariConfigAsPropertiesIfDbConfigIsValid() {
9356

9457
// assert
9558
assertNotNull(hikariProperties);
96-
assertProperties(maximumPoolSize, hikariProperties);
59+
assertProperty(maximumPoolSize, hikariProperties);
9760
}
9861

99-
private void assertProperties(String maximumPoolSize, Properties properties) {
100-
101-
assertEquals(maximumPoolSize, properties.get(HIKARI_MAXIMUM_POOL_SIZE));
62+
private void assertProperty(String maximumPoolSize, Properties property) {
63+
assertEquals(maximumPoolSize, property.get(HIKARI_MAXIMUM_POOL_SIZE));
10264
}
10365

10466
}

0 commit comments

Comments
 (0)