Skip to content

Commit c517485

Browse files
committed
added JUnit test and fixed package
1 parent ca2d94f commit c517485

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed

src/test/java/com/devonfw/sample/archunit/architecture/PackageStructure.java renamed to src/test/java/com/devonfw/sample/archunit/PackageStructure.java

File renamed without changes.
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
package com.devonfw.sample.archunit;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
6+
/**
7+
* Test of {@link PackageStructure}.
8+
*/
9+
public class PackageStructureTest extends Assertions {
10+
11+
/** Test of {@link PackageStructure#of(String)} with valid examples. */
12+
@Test
13+
public void testValid() {
14+
15+
checkValid("com.customer.app.mycomponent.dataaccess.api.detail1.detail2", "mycomponent", "dataaccess", "api",
16+
"detail1.detail2");
17+
checkValid("com.customer.app.foo.logic.uc", "foo", "logic", "", "uc");
18+
checkValid("com.customer.app.bar.common", "bar", "common");
19+
checkValid("com.customer.app.some.service.rest", "some", "service", "", "rest");
20+
}
21+
22+
/** Test of {@link PackageStructure#of(String)} with invalid examples. */
23+
@Test
24+
public void testInvalid() {
25+
26+
checkInvalid("com.customer.app.mycomponent.dataaacceess.api.detail1.detail2");
27+
checkInvalid("com.customer.app.mycomponent.api");
28+
checkInvalid("com.customer.app.mycomponent");
29+
checkInvalid("com.customer.app");
30+
checkInvalid("com.customer");
31+
checkInvalid("com");
32+
checkInvalid(".");
33+
}
34+
35+
private PackageStructure checkValid(String pkgName, String component, String layer) {
36+
37+
return checkValid(pkgName, component, layer, "");
38+
}
39+
40+
private PackageStructure checkValid(String pkgName, String component, String layer, String scope) {
41+
42+
return checkValid(pkgName, component, layer, scope, "");
43+
}
44+
45+
private PackageStructure checkValid(String pkgName, String component, String layer, String scope, String detail) {
46+
47+
return checkValid(pkgName, component, layer, scope, detail, "com.customer.app");
48+
}
49+
50+
// given
51+
private PackageStructure checkValid(String pkgName, String component, String layer, String scope, String detail,
52+
String root) {
53+
54+
// when
55+
PackageStructure pkg = PackageStructure.of(pkgName);
56+
// then
57+
assertThat(pkg.getPackage()).isEqualTo(pkgName);
58+
assertThat(pkg.getRoot()).isEqualTo(root);
59+
assertThat(pkg.getComponent()).isEqualTo(component);
60+
assertThat(pkg.getLayer()).isEqualTo(layer);
61+
checkLayer(layer, pkg);
62+
assertThat(pkg.getScope()).isEqualTo(scope);
63+
checkScope(scope, pkg);
64+
assertThat(pkg.getDetail()).isEqualTo(detail);
65+
assertThat(pkg.hasDetail()).isEqualTo(!detail.isEmpty());
66+
assertThat(pkg.isValid()).isTrue();
67+
return pkg;
68+
}
69+
70+
private void checkScope(String scope, PackageStructure pkg) {
71+
72+
if (scope.isEmpty()) {
73+
assertThat(pkg.hasScope()).isFalse();
74+
} else {
75+
assertThat(pkg.hasScope()).isTrue();
76+
boolean isApi = false;
77+
boolean isBase = false;
78+
boolean isImpl = false;
79+
if (PackageStructure.SCOPE_API.equals(scope)) {
80+
isApi = true;
81+
} else if (PackageStructure.SCOPE_BASE.equals(scope)) {
82+
isBase = true;
83+
} else if (PackageStructure.SCOPE_IMPLEMENTATION.equals(scope)) {
84+
isImpl = true;
85+
} else {
86+
throw new IllegalStateException(scope);
87+
}
88+
assertThat(pkg.isScopeApi()).isEqualTo(isApi);
89+
assertThat(pkg.isScopeBase()).isEqualTo(isBase);
90+
assertThat(pkg.isScopeImpl()).isEqualTo(isImpl);
91+
}
92+
}
93+
94+
private void checkLayer(String layer, PackageStructure pkg) {
95+
96+
boolean isService = false;
97+
boolean isLogic = false;
98+
boolean isDataAccess = false;
99+
boolean isCommon = false;
100+
boolean isBatch = false;
101+
boolean isClient = false;
102+
if (PackageStructure.LAYER_SERVICE.equals(layer)) {
103+
isService = true;
104+
} else if (PackageStructure.LAYER_LOGIC.equals(layer)) {
105+
isLogic = true;
106+
} else if (PackageStructure.LAYER_DATA_ACCESS.equals(layer)) {
107+
isDataAccess = true;
108+
} else if (PackageStructure.LAYER_COMMON.equals(layer)) {
109+
isCommon = true;
110+
} else if (PackageStructure.LAYER_BATCH.equals(layer)) {
111+
isBatch = true;
112+
} else if (PackageStructure.LAYER_CLIENT.equals(layer)) {
113+
isClient = true;
114+
} else {
115+
throw new IllegalStateException(layer);
116+
}
117+
assertThat(pkg.isLayerService()).isEqualTo(isService);
118+
assertThat(pkg.isLayerLogic()).isEqualTo(isLogic);
119+
assertThat(pkg.isLayerDataAccess()).isEqualTo(isDataAccess);
120+
assertThat(pkg.isLayerCommon()).isEqualTo(isCommon);
121+
assertThat(pkg.isLayerBatch()).isEqualTo(isBatch);
122+
assertThat(pkg.isLayerClient()).isEqualTo(isClient);
123+
}
124+
125+
// given
126+
private void checkInvalid(String pkgName) {
127+
128+
// when
129+
PackageStructure pkg = PackageStructure.of(pkgName);
130+
// then
131+
assertThat(pkg.getPackage()).isEqualTo(pkgName);
132+
assertThat(pkg.getRoot()).isEqualTo("");
133+
assertThat(pkg.getComponent()).isEqualTo("");
134+
assertThat(pkg.getLayer()).isEqualTo("");
135+
assertThat(pkg.getScope()).isEqualTo("");
136+
assertThat(pkg.hasScope()).isFalse();
137+
assertThat(pkg.getDetail()).isEqualTo("");
138+
assertThat(pkg.hasDetail()).isFalse();
139+
assertThat(pkg.isValid()).isFalse();
140+
141+
}
142+
143+
}

0 commit comments

Comments
 (0)