Skip to content

Commit 368384a

Browse files
committed
Use context sensitive templates where argument can be custom
Fixes #491
1 parent 964e677 commit 368384a

File tree

6 files changed

+55
-0
lines changed

6 files changed

+55
-0
lines changed

src/main/java/org/openrewrite/java/testing/assertj/JUnitAssertEqualsToAssertThat.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
6767

6868
if (args.size() == 2) {
6969
return JavaTemplate.builder("assertThat(#{any()}).isEqualTo(#{any()});")
70+
.contextSensitive()
7071
.staticImports("org.assertj.core.api.Assertions.assertThat")
7172
.javaParser(JavaParser.fromJavaVersion().classpathFromResources(ctx, "assertj-core-3.24"))
7273
.build()
@@ -77,6 +78,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
7778
JavaTemplate.builder("assertThat(#{any()}).as(#{any(String)}).isEqualTo(#{any()});") :
7879
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isEqualTo(#{any()});");
7980
return template
81+
.contextSensitive()
8082
.staticImports("org.assertj.core.api.Assertions.assertThat")
8183
.imports("java.util.function.Supplier")
8284
.javaParser(JavaParser.fromJavaVersion().classpathFromResources(ctx, "assertj-core-3.24"))
@@ -91,6 +93,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
9193
} else if (args.size() == 3) {
9294
maybeAddImport("org.assertj.core.api.Assertions", "within");
9395
return JavaTemplate.builder("assertThat(#{any()}).isCloseTo(#{any()}, within(#{any()}));")
96+
.contextSensitive()
9497
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
9598
.javaParser(JavaParser.fromJavaVersion().classpathFromResources(ctx, "assertj-core-3.24"))
9699
.build()
@@ -106,6 +109,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
106109
JavaTemplate.builder("assertThat(#{any()}).as(#{any(String)}).isCloseTo(#{any()}, within(#{any()}));") :
107110
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isCloseTo(#{any()}, within(#{any()}));");
108111
return template
112+
.contextSensitive()
109113
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
110114
.imports("java.util.function.Supplier")
111115
.javaParser(JavaParser.fromJavaVersion().classpathFromResources(ctx, "assertj-core-3.24"))

src/main/java/org/openrewrite/java/testing/assertj/JUnitAssertNotEqualsToAssertThat.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
7474

7575
if (args.size() == 2) {
7676
method = JavaTemplate.builder("assertThat(#{any()}).isNotEqualTo(#{any()});")
77+
.contextSensitive()
7778
.staticImports("org.assertj.core.api.Assertions.assertThat")
7879
.javaParser(assertionsParser(ctx))
7980
.build()
@@ -92,6 +93,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
9293

9394

9495
method = template
96+
.contextSensitive()
9597
.staticImports("org.assertj.core.api.Assertions.assertThat")
9698
.javaParser(assertionsParser(ctx))
9799
.build()
@@ -104,6 +106,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
104106
);
105107
} else if (args.size() == 3) {
106108
method = JavaTemplate.builder("assertThat(#{any()}).isNotCloseTo(#{any()}, within(#{any()}));")
109+
.contextSensitive()
107110
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
108111
.javaParser(assertionsParser(ctx))
109112
.build()
@@ -123,6 +126,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
123126
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isNotCloseTo(#{any()}, within(#{any()}));");
124127

125128
method = template
129+
.contextSensitive()
126130
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
127131
.javaParser(assertionsParser(ctx))
128132
.build()

src/main/java/org/openrewrite/java/testing/assertj/JUnitAssertNotNullToAssertThat.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
7171

7272
if (args.size() == 1) {
7373
method = JavaTemplate.builder("assertThat(#{any()}).isNotNull();")
74+
.contextSensitive()
7475
.staticImports("org.assertj.core.api.Assertions.assertThat")
7576
.javaParser(assertionsParser(ctx))
7677
.build()
@@ -88,6 +89,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
8889
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isNotNull();");
8990

9091
method = template
92+
.contextSensitive()
9193
.staticImports("org.assertj.core.api.Assertions.assertThat")
9294
.javaParser(assertionsParser(ctx))
9395
.build()

src/main/java/org/openrewrite/java/testing/assertj/JUnitAssertNullToAssertThat.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
7171

7272
if (args.size() == 1) {
7373
method = JavaTemplate.builder("assertThat(#{any()}).isNull();")
74+
.contextSensitive()
7475
.staticImports("org.assertj.core.api.Assertions.assertThat")
7576
.javaParser(assertionsParser(ctx))
7677
.build()
@@ -87,6 +88,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
8788
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isNull();");
8889

8990
method = template
91+
.contextSensitive()
9092
.staticImports("org.assertj.core.api.Assertions.assertThat")
9193
.javaParser(assertionsParser(ctx))
9294
.build()

src/main/java/org/openrewrite/java/testing/assertj/JUnitAssertSameToAssertThat.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
7272

7373
if (args.size() == 2) {
7474
method = JavaTemplate.builder("assertThat(#{any()}).isSameAs(#{any()});")
75+
.contextSensitive()
7576
.staticImports("org.assertj.core.api.Assertions.assertThat")
7677
.javaParser(assertionsParser(ctx))
7778
.build()
@@ -89,6 +90,7 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
8990
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isSameAs(#{any()});");
9091

9192
method = template
93+
.contextSensitive()
9294
.staticImports("org.assertj.core.api.Assertions.assertThat")
9395
.javaParser(assertionsParser(ctx))
9496
.build()

src/test/java/org/openrewrite/java/testing/assertj/JUnitAssertNotNullToAssertThatTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.junit.jupiter.api.Test;
1919
import org.openrewrite.DocumentExample;
2020
import org.openrewrite.InMemoryExecutionContext;
21+
import org.openrewrite.Issue;
2122
import org.openrewrite.java.JavaParser;
2223
import org.openrewrite.test.RecipeSpec;
2324
import org.openrewrite.test.RewriteTest;
@@ -241,4 +242,44 @@ private String notification() {
241242
)
242243
);
243244
}
245+
246+
@Test
247+
@Issue("https://github.com/openrewrite/rewrite-testing-frameworks/issues/491")
248+
void importAddedForCustomArguments() {
249+
rewriteRun(
250+
//language=java
251+
java(
252+
"""
253+
import org.junit.jupiter.api.Test;
254+
255+
import static org.junit.jupiter.api.Assertions.assertNotNull;
256+
257+
class TTest {
258+
259+
class A {}
260+
261+
@Test
262+
public void testClass() {
263+
assertNotNull(new A());
264+
}
265+
}
266+
""",
267+
"""
268+
import org.junit.jupiter.api.Test;
269+
270+
import static org.assertj.core.api.Assertions.assertThat;
271+
272+
class TTest {
273+
274+
class A {}
275+
276+
@Test
277+
public void testClass() {
278+
assertThat(new A()).isNotNull();
279+
}
280+
}
281+
"""
282+
)
283+
);
284+
}
244285
}

0 commit comments

Comments
 (0)