Skip to content

Commit d642afa

Browse files
authored
Add ResolverProviderTest unit test (#337)
1 parent 275bade commit d642afa

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

core/src/main/java/com/datastax/oss/driver/internal/core/resolver/ResolverProvider.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.datastax.oss.driver.internal.core.resolver;
22

33
import com.datastax.oss.driver.internal.core.resolver.defaultResolver.DefaultResolverFactory;
4+
import com.datastax.oss.driver.shaded.guava.common.annotations.VisibleForTesting;
45

56
/**
67
* Entry point for driver components to getting the {@link Resolver} instances. By default returns
@@ -45,4 +46,10 @@ public static synchronized void setDefaultResolverFactory(
4546
alreadySet = true;
4647
defaultResolverFactoryImpl = resolverFactoryImpl;
4748
}
49+
50+
@VisibleForTesting
51+
static synchronized void resetBooleansForTesting() {
52+
alreadyInUse = false;
53+
alreadySet = false;
54+
}
4855
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.datastax.oss.driver.internal.core.resolver;
2+
3+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
4+
5+
import com.datastax.oss.driver.internal.core.resolver.mockResolver.MockResolverFactory;
6+
import org.junit.Before;
7+
import org.junit.Test;
8+
9+
public class ResolverProviderTest {
10+
11+
@Before
12+
public void resetState() {
13+
ResolverProvider.resetBooleansForTesting();
14+
}
15+
16+
@Test(expected = IllegalStateException.class)
17+
public void should_not_allow_setting_twice() {
18+
try {
19+
MockResolverFactory first = new MockResolverFactory();
20+
MockResolverFactory second = new MockResolverFactory();
21+
ResolverProvider.setDefaultResolverFactory(first);
22+
ResolverProvider.setDefaultResolverFactory(second);
23+
} catch (IllegalStateException ex) {
24+
assertThat(ex.getMessage())
25+
.isEqualTo(
26+
"Cannot change default resolver factory: this method has already been called. You can set "
27+
+ "default resolver factory only once.");
28+
throw ex;
29+
}
30+
}
31+
32+
@Test(expected = IllegalStateException.class)
33+
public void should_not_allow_setting_once_in_use() {
34+
try {
35+
ResolverProvider.getResolver(ResolverProviderTest.class);
36+
MockResolverFactory first = new MockResolverFactory();
37+
ResolverProvider.setDefaultResolverFactory(first);
38+
} catch (IllegalStateException ex) {
39+
assertThat(ex.getMessage())
40+
.isEqualTo(
41+
"Cannot change default resolver factory: ResolverProvider has already returned an instance of a "
42+
+ "Resolver to use. Default resolver factory needs to be set up before first use by any class.");
43+
throw ex;
44+
}
45+
}
46+
47+
@Test
48+
public void should_allow_setting_once() {
49+
MockResolverFactory first = new MockResolverFactory();
50+
ResolverProvider.setDefaultResolverFactory(first);
51+
}
52+
}

0 commit comments

Comments
 (0)