Skip to content

Commit 681aabf

Browse files
committed
add basic unit test for x-implements and x-implements-overrides
1 parent 221f05a commit 681aabf

2 files changed

Lines changed: 176 additions & 140 deletions

File tree

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/assertions/JavaFileAssert.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.github.javaparser.ast.body.*;
66
import com.github.javaparser.ast.nodeTypes.NodeWithName;
77
import com.github.javaparser.ast.nodeTypes.modifiers.NodeWithAbstractModifier;
8+
import com.github.javaparser.ast.type.ClassOrInterfaceType;
89
import org.assertj.core.api.AbstractAssert;
910
import org.assertj.core.api.Assertions;
1011
import org.assertj.core.util.CanIgnoreReturnValue;
@@ -15,7 +16,9 @@
1516
import java.util.Arrays;
1617
import java.util.List;
1718
import java.util.Optional;
19+
import java.util.Set;
1820
import java.util.stream.Collectors;
21+
import java.util.stream.Stream;
1922

2023
@CanIgnoreReturnValue
2124
public class JavaFileAssert extends AbstractAssert<JavaFileAssert, CompilationUnit> {
@@ -56,6 +59,36 @@ public JavaFileAssert isNormalClass() {
5659
return this;
5760
}
5861

62+
public JavaFileAssert implementsInterfaces(String... implementedInterfaces) {
63+
Set<String> expectedInterfaces = Stream.of(implementedInterfaces)
64+
.collect(Collectors.toSet());
65+
66+
Set<String> actualInterfaces = actual.getType(0)
67+
.asClassOrInterfaceDeclaration()
68+
.getImplementedTypes().stream()
69+
.map(ClassOrInterfaceType::getNameWithScope)
70+
.collect(Collectors.toSet());
71+
72+
Assertions.assertThat(actualInterfaces)
73+
.withFailMessage("Expected type %s to implement interfaces %s, but found %s",
74+
actual.getType(0).getName().asString(), expectedInterfaces, actualInterfaces)
75+
.isEqualTo(expectedInterfaces);
76+
return this;
77+
}
78+
79+
public JavaFileAssert doesNotImplementInterfaces(String... interfaces) {
80+
Set<String> forbiddenInterfaces = Stream.of(interfaces).collect(Collectors.toSet());
81+
Set<String> implemented = actual.getType(0).asClassOrInterfaceDeclaration()
82+
.getImplementedTypes().stream()
83+
.map(ClassOrInterfaceType::getNameWithScope)
84+
.collect(Collectors.toSet());
85+
Assertions.assertThat(implemented)
86+
.withFailMessage("Expected type %s to not implement interfaces %s, but found %s",
87+
actual.getType(0).getName().asString(), forbiddenInterfaces, implemented)
88+
.doesNotContainAnyElementsOf(forbiddenInterfaces);
89+
return this;
90+
}
91+
5992
public JavaFileAssert isAbstractClass() {
6093
Assertions.assertThat(actual.getType(0).asClassOrInterfaceDeclaration())
6194
.withFailMessage("Expected type %s to be an abstract class", actual.getType(0).getName().asString())

0 commit comments

Comments
 (0)