Skip to content

Commit f3f9a41

Browse files
committed
Add more tests for multi-scope
1 parent 5751e36 commit f3f9a41

File tree

15 files changed

+168
-21
lines changed

15 files changed

+168
-21
lines changed

blackbox-multi-scope/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@
3131
<version>1.5</version>
3232
<scope>test</scope>
3333
</dependency>
34-
34+
<dependency>
35+
<groupId>org.junit.jupiter</groupId>
36+
<artifactId>junit-jupiter-params</artifactId>
37+
<version>5.12.1</version>
38+
<scope>test</scope>
39+
</dependency>
3540
</dependencies>
3641

3742
<build>

blackbox-multi-scope/src/main/java/org/multi/crosscut/BeanCross2.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package org.multi.crosscut;
22

33
import org.multi.moda.BeanInModA;
4-
import org.multi.modb.BeanInModB;
5-
import org.multi.modc.modb.BeanInModC;
4+
import org.multi.modc.BeanInModC;
65
import org.multi.scope.CrossCutScope;
76

87
@CrossCutScope

blackbox-multi-scope/src/main/java/org/multi/crosscut/BeanCross3.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.multi.crosscut;
22

3-
import org.multi.modc.modb.COther;
3+
import org.multi.modc.COther;
44
import org.multi.scope.CrossCutScope;
55

66
@CrossCutScope

blackbox-multi-scope/src/main/java/org/multi/main/CrossCutMain.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.multi.main;
22

3-
import io.avaje.inject.BeanScope;
43
import org.multi.crosscut.BeanCross;
54
import org.multi.crosscut.BeanCross2;
65
import org.multi.crosscut.BeanCross3;
@@ -9,7 +8,9 @@
98
import org.multi.moda.ModAModule;
109
import org.multi.modb.BeanInModB;
1110
import org.multi.modb.ModBModule;
12-
import org.multi.modc.modb.ModCModule;
11+
import org.multi.modc.ModCModule;
12+
13+
import io.avaje.inject.BeanScope;
1314

1415
public class CrossCutMain {
1516

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.multi.many;
2+
3+
import org.multi.moda.BeanInModA;
4+
import org.multi.modc.COther;
5+
import org.multi.mode.BeanInModE;
6+
import org.multi.scope.ManyScope;
7+
8+
@ManyScope
9+
public class BeanInMany {
10+
11+
private final BeanInModE beanInModE;
12+
private final COther cOther;
13+
private final BeanInModA modA;
14+
15+
public BeanInMany(final BeanInModE beanInModE, final COther cOther, final BeanInModA modA) {
16+
this.beanInModE = beanInModE;
17+
this.cOther = cOther;
18+
this.modA = modA;
19+
}
20+
}

blackbox-multi-scope/src/main/java/org/multi/modb/BOther.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.multi.modb;
22

3-
import org.multi.modc.modb.COther;
3+
import org.multi.modc.COther;
44
import org.multi.scope.ModBScope;
55

66
@ModBScope

blackbox-multi-scope/src/main/java/org/multi/modc/modb/BeanInModC.java renamed to blackbox-multi-scope/src/main/java/org/multi/modc/BeanInModC.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.multi.modc.modb;
1+
package org.multi.modc;
22

33
import org.multi.scope.ModCScope;
44

blackbox-multi-scope/src/main/java/org/multi/modc/modb/COther.java renamed to blackbox-multi-scope/src/main/java/org/multi/modc/COther.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.multi.modc.modb;
1+
package org.multi.modc;
22

33
import org.multi.scope.ModCScope;
44

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.multi.modd;
2+
3+
import org.multi.moda.BeanInModA;
4+
import org.multi.scope.ModDScope;
5+
6+
@ModDScope
7+
public class BeanInModD {
8+
9+
private final BeanInModA beanA;
10+
11+
public BeanInModD(final BeanInModA beanInModA){
12+
this.beanA = beanInModA;
13+
}
14+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.multi.mode;
2+
3+
import org.multi.scope.ModEScope;
4+
5+
@ModEScope
6+
public class BeanInModE {
7+
}

blackbox-multi-scope/src/main/java/org/multi/scope/CrossCutScope.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import io.avaje.inject.InjectModule;
44
import jakarta.inject.Scope;
5-
import org.multi.modb.BeanInModB;
65

76
@Scope
87
@InjectModule(requires = {ModAScope.class, ModBScope.class}, strictWiring = true)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.multi.scope;
2+
3+
import io.avaje.inject.InjectModule;
4+
import jakarta.inject.Scope;
5+
6+
@Scope
7+
@InjectModule(requires = {ModDScope.class, CrossCutScope.class, ModEScope.class}, strictWiring = true)
8+
public @interface ManyScope {
9+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.multi.scope;
2+
3+
import io.avaje.inject.InjectModule;
4+
import jakarta.inject.Scope;
5+
6+
@Scope
7+
@InjectModule(requires = {ModAScope.class}, strictWiring = true)
8+
public @interface ModDScope {
9+
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.multi.scope;
2+
3+
import io.avaje.inject.InjectModule;
4+
import jakarta.inject.Scope;
5+
6+
@Scope
7+
@InjectModule(requires = {}, strictWiring = true)
8+
public @interface ModEScope {
9+
10+
}
Lines changed: 84 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,97 @@
11
package org.multi.crosscut;
22

3+
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
4+
import static org.junit.jupiter.api.Assertions.assertTrue;
35

4-
import io.avaje.inject.BeanScope;
5-
import org.junit.jupiter.api.Test;
6+
import java.util.stream.Stream;
7+
8+
import org.junit.jupiter.api.Named;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.junit.jupiter.params.provider.Arguments;
11+
import org.junit.jupiter.params.provider.MethodSource;
12+
import org.multi.many.BeanInMany;
13+
import org.multi.many.ManyModule;
14+
import org.multi.moda.BeanInModA;
15+
import org.multi.moda.ModAModule;
16+
import org.multi.modb.BOther;
617
import org.multi.modb.BeanInModB;
18+
import org.multi.modb.ModBModule;
19+
import org.multi.modc.BeanInModC;
20+
import org.multi.modc.COther;
21+
import org.multi.modc.ModCModule;
22+
import org.multi.modd.BeanInModD;
23+
import org.multi.modd.ModDModule;
24+
import org.multi.mode.BeanInModE;
25+
import org.multi.mode.ModEModule;
726

8-
import static org.assertj.core.api.Assertions.assertThat;
27+
import io.avaje.inject.BeanScope;
28+
import io.avaje.inject.spi.AvajeModule;
929

1030
class BeanCrossTest {
1131

12-
@Test
13-
void bootstrap() {
32+
private static Stream<Arguments> allModulesDefined() {
33+
return Stream.of(
34+
Arguments.of(Named.of("In working order A", new AvajeModule[]{
35+
new ModAModule(),
36+
new ModCModule(),
37+
new ModBModule(),
38+
new CrossCutModule(),
39+
new ModDModule(),
40+
new ModEModule(),
41+
new ManyModule(),
42+
})),
43+
Arguments.of(Named.of("In alphabetical order", new AvajeModule[]{
44+
new CrossCutModule(),
45+
new ManyModule(),
46+
new ModAModule(),
47+
new ModBModule(),
48+
new ModCModule(),
49+
new ModDModule(),
50+
new ModEModule(),
51+
})),
52+
Arguments.of(Named.of("In reverse alphabetical order", new AvajeModule[]{
53+
new ModEModule(),
54+
new ModDModule(),
55+
new ModCModule(),
56+
new ModBModule(),
57+
new ModAModule(),
58+
new ManyModule(),
59+
new CrossCutModule(),
60+
})),
61+
Arguments.of(Named.of("In shuffled order", new AvajeModule[]{
62+
new ModEModule(),
63+
new ModBModule(),
64+
new ModDModule(),
65+
new ManyModule(),
66+
new ModCModule(),
67+
new ModAModule(),
68+
new CrossCutModule(),
69+
}))
70+
);
71+
}
1472

15-
try (BeanScope beanScope = BeanScope.builder()
16-
// .modules(new CrossCutModule())
17-
.build()) {
73+
private static final Class[] CHECKABLE = {
74+
BeanCross.class,
75+
BeanCross2.class,
76+
BeanCross3.class,
77+
BeanInMany.class,
78+
BeanInModA.class,
79+
BeanInModB.class,
80+
BOther.class,
81+
BeanInModC.class,
82+
COther.class,
83+
BeanInModD.class,
84+
BeanInModE.class
85+
};
1886

19-
// var beanInModB = beanScope.get(BeanInModB.class);
20-
// assertThat(beanInModB).isNotNull();
21-
}
87+
@ParameterizedTest(name = "Multi Scope Test: {1}")
88+
@MethodSource("allModulesDefined")
89+
void bootstrap(AvajeModule... modules) {
2290

91+
try (BeanScope beanScope = assertDoesNotThrow(() -> BeanScope.builder().modules(modules).build())) {
92+
for (final Class<?> clazz : CHECKABLE) {
93+
assertTrue(beanScope.getOptional(clazz).isPresent(), "Bean not found: " + clazz.getSimpleName());
94+
}
95+
}
2396
}
2497
}

0 commit comments

Comments
 (0)