Skip to content

Commit efcc1e4

Browse files
authored
JavaTemplate#apply (#346)
1 parent b8f29f3 commit efcc1e4

File tree

41 files changed

+1259
-1264
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1259
-1264
lines changed

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

Lines changed: 31 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -70,79 +70,50 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
7070
}
7171

7272
List<Expression> args = method.getArguments();
73-
7473
Expression expected = args.get(0);
7574
Expression actual = args.get(1);
7675

76+
maybeAddImport("org.assertj.core.api.Assertions", "assertThat");
77+
maybeRemoveImport(JUNIT_QUALIFIED_ASSERTIONS_CLASS_NAME);
78+
7779
if (args.size() == 2) {
78-
method = method.withTemplate(
79-
JavaTemplate.builder("assertThat(#{anyArray()}).containsExactly(#{anyArray()});")
80-
.context(getCursor())
81-
.staticImports("org.assertj.core.api.Assertions.assertThat")
82-
.javaParser(assertionsParser(ctx))
83-
.build(),
84-
getCursor(),
85-
method.getCoordinates().replace(),
86-
actual,
87-
expected
88-
);
80+
return JavaTemplate.builder("assertThat(#{anyArray()}).containsExactly(#{anyArray()});")
81+
.staticImports("org.assertj.core.api.Assertions.assertThat")
82+
.javaParser(assertionsParser(ctx))
83+
.build()
84+
.apply(getCursor(), method.getCoordinates().replace(), actual, expected);
8985
} else if (args.size() == 3 && !isFloatingPointType(args.get(2))) {
9086
Expression message = args.get(2);
9187
JavaTemplate.Builder template = TypeUtils.isString(message.getType()) ?
9288
JavaTemplate.builder("assertThat(#{anyArray()}).as(#{any(String)}).containsExactly(#{anyArray()});") :
9389
JavaTemplate.builder("assertThat(#{anyArray()}).as(#{any(java.util.function.Supplier)}).containsExactly(#{anyArray()});");
94-
95-
method = method.withTemplate(template
96-
.staticImports("org.assertj.core.api.Assertions.assertThat")
97-
.javaParser(assertionsParser(ctx))
98-
.build(),
99-
getCursor(),
100-
method.getCoordinates().replace(),
101-
actual,
102-
message,
103-
expected
104-
);
90+
return template
91+
.staticImports("org.assertj.core.api.Assertions.assertThat")
92+
.javaParser(assertionsParser(ctx))
93+
.build()
94+
.apply(getCursor(), method.getCoordinates().replace(), actual, message, expected);
10595
} else if (args.size() == 3) {
106-
// assert is using floating points with a delta and no message.
107-
method = method.withTemplate(
108-
JavaTemplate.builder("assertThat(#{anyArray()}).containsExactly(#{anyArray()}, within(#{any()}));")
109-
.context(getCursor())
110-
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
111-
.javaParser(assertionsParser(ctx))
112-
.build(),
113-
getCursor(),
114-
method.getCoordinates().replace(),
115-
actual,
116-
expected,
117-
args.get(2)
118-
);
119-
maybeAddImport("org.assertj.core.api.Assertions", "within");
120-
} else {
121-
// The assertEquals is using a floating point with a delta argument and a message.
122-
Expression message = args.get(3);
123-
JavaTemplate.Builder template = TypeUtils.isString(message.getType()) ?
124-
JavaTemplate.builder("assertThat(#{anyArray()}).as(#{any(String)}).containsExactly(#{anyArray()}, within(#{any()}));") :
125-
JavaTemplate.builder("assertThat(#{anyArray()}).as(#{any(java.util.function.Supplier)}).containsExactly(#{anyArray()}, within(#{}));");
126-
127-
method = method.withTemplate(template
128-
.context(getCursor())
129-
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
130-
.javaParser(assertionsParser(ctx))
131-
.build(),
132-
getCursor(),
133-
method.getCoordinates().replace(),
134-
actual,
135-
message,
136-
expected,
137-
args.get(2)
138-
);
13996
maybeAddImport("org.assertj.core.api.Assertions", "within");
97+
// assert is using floating points with a delta and no message.
98+
return JavaTemplate.builder("assertThat(#{anyArray()}).containsExactly(#{anyArray()}, within(#{any()}));")
99+
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
100+
.javaParser(assertionsParser(ctx))
101+
.build()
102+
.apply(getCursor(), method.getCoordinates().replace(), actual, expected, args.get(2));
140103
}
141104

142-
maybeAddImport("org.assertj.core.api.Assertions", "assertThat");
143-
maybeRemoveImport(JUNIT_QUALIFIED_ASSERTIONS_CLASS_NAME);
144-
145-
return method;
105+
// The assertEquals is using a floating point with a delta argument and a message.
106+
Expression message = args.get(3);
107+
maybeAddImport("org.assertj.core.api.Assertions", "within");
108+
109+
JavaTemplate.Builder template = TypeUtils.isString(message.getType()) ?
110+
JavaTemplate.builder("assertThat(#{anyArray()}).as(#{any(String)}).containsExactly(#{anyArray()}, within(#{any()}));") :
111+
JavaTemplate.builder("assertThat(#{anyArray()}).as(#{any(java.util.function.Supplier)}).containsExactly(#{anyArray()}, within(#{}));");
112+
return template
113+
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
114+
.javaParser(assertionsParser(ctx))
115+
.build()
116+
.apply(getCursor(), method.getCoordinates().replace(), actual, message, expected, args.get(2));
146117
}
147118

148119
/**

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

Lines changed: 45 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -69,81 +69,65 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
6969
}
7070

7171
List<Expression> args = method.getArguments();
72-
7372
Expression expected = args.get(0);
7473
Expression actual = args.get(1);
7574

75+
maybeAddImport("org.assertj.core.api.Assertions", "assertThat");
76+
maybeRemoveImport("org.junit.jupiter.api.Assertions");
77+
7678
if (args.size() == 2) {
77-
method = method.withTemplate(
78-
JavaTemplate.builder("assertThat(#{any()}).isEqualTo(#{any()});")
79-
.context(getCursor())
80-
.staticImports("org.assertj.core.api.Assertions.assertThat")
81-
.javaParser(assertionsParser(ctx))
82-
.build(),
83-
getCursor(),
84-
method.getCoordinates().replace(),
85-
actual,
86-
expected
87-
);
79+
return JavaTemplate.builder("assertThat(#{any()}).isEqualTo(#{any()});")
80+
.staticImports("org.assertj.core.api.Assertions.assertThat")
81+
.javaParser(assertionsParser(ctx))
82+
.build()
83+
.apply(getCursor(), method.getCoordinates().replace(), actual, expected);
8884
} else if (args.size() == 3 && !isFloatingPointType(args.get(2))) {
8985
Expression message = args.get(2);
9086
JavaTemplate.Builder template = TypeUtils.isString(message.getType()) ?
9187
JavaTemplate.builder("assertThat(#{any()}).as(#{any(String)}).isEqualTo(#{any()});") :
9288
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isEqualTo(#{any()});");
93-
94-
method = method.withTemplate(template
95-
.context(getCursor())
96-
.staticImports("org.assertj.core.api.Assertions.assertThat")
97-
.imports("java.util.function.Supplier")
98-
.javaParser(assertionsParser(ctx))
99-
.build(),
100-
getCursor(),
101-
method.getCoordinates().replace(),
102-
actual,
103-
message,
104-
expected
105-
);
89+
return template
90+
.staticImports("org.assertj.core.api.Assertions.assertThat")
91+
.imports("java.util.function.Supplier")
92+
.javaParser(assertionsParser(ctx))
93+
.build()
94+
.apply(
95+
getCursor(),
96+
method.getCoordinates().replace(),
97+
actual,
98+
message,
99+
expected
100+
);
106101
} else if (args.size() == 3) {
107-
method = method.withTemplate(
108-
JavaTemplate.builder("assertThat(#{any()}).isCloseTo(#{any()}, within(#{any()}));")
109-
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
110-
.javaParser(assertionsParser(ctx))
111-
.build(),
112-
getCursor(),
113-
method.getCoordinates().replace(),
114-
actual,
115-
expected,
116-
args.get(2)
117-
);
118102
maybeAddImport("org.assertj.core.api.Assertions", "within");
103+
return JavaTemplate.builder("assertThat(#{any()}).isCloseTo(#{any()}, within(#{any()}));")
104+
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
105+
.javaParser(assertionsParser(ctx))
106+
.build()
107+
.apply(getCursor(), method.getCoordinates().replace(), actual, expected, args.get(2));
119108

120-
} else {
121-
// The assertEquals is using a floating point with a delta argument and a message.
122-
Expression message = args.get(3);
123-
124-
JavaTemplate.Builder template = TypeUtils.isString(message.getType()) ?
125-
JavaTemplate.builder("assertThat(#{any()}).as(#{any(String)}).isCloseTo(#{any()}, within(#{any()}));") :
126-
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isCloseTo(#{any()}, within(#{any()}));");
127-
128-
method = method.withTemplate(template
129-
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
130-
.imports("java.util.function.Supplier")
131-
.javaParser(assertionsParser(ctx))
132-
.build(),
133-
getCursor(),
134-
method.getCoordinates().replace(),
135-
actual,
136-
message,
137-
expected,
138-
args.get(2)
139-
);
140-
maybeAddImport("org.assertj.core.api.Assertions", "within");
141109
}
142110

143-
maybeAddImport("org.assertj.core.api.Assertions", "assertThat");
144-
maybeRemoveImport("org.junit.jupiter.api.Assertions");
145-
146-
return method;
111+
// The assertEquals is using a floating point with a delta argument and a message.
112+
Expression message = args.get(3);
113+
114+
maybeAddImport("org.assertj.core.api.Assertions", "within");
115+
JavaTemplate.Builder template = TypeUtils.isString(message.getType()) ?
116+
JavaTemplate.builder("assertThat(#{any()}).as(#{any(String)}).isCloseTo(#{any()}, within(#{any()}));") :
117+
JavaTemplate.builder("assertThat(#{any()}).as(#{any(java.util.function.Supplier)}).isCloseTo(#{any()}, within(#{any()}));");
118+
return template
119+
.staticImports("org.assertj.core.api.Assertions.assertThat", "org.assertj.core.api.Assertions.within")
120+
.imports("java.util.function.Supplier")
121+
.javaParser(assertionsParser(ctx))
122+
.build()
123+
.apply(
124+
getCursor(),
125+
method.getCoordinates().replace(),
126+
actual,
127+
message,
128+
expected,
129+
args.get(2)
130+
);
147131
}
148132

149133
private static boolean isFloatingPointType(Expression expression) {

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

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -70,30 +70,31 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
7070
Expression actual = args.get(0);
7171

7272
if (args.size() == 1) {
73-
method = method.withTemplate(
74-
JavaTemplate.builder("assertThat(#{any(boolean)}).isFalse();")
75-
.staticImports("org.assertj.core.api.Assertions.assertThat")
76-
.javaParser(assertionsParser(ctx))
77-
.build(),
78-
getCursor(),
79-
method.getCoordinates().replace(),
80-
actual
81-
);
73+
method = JavaTemplate.builder("assertThat(#{any(boolean)}).isFalse();")
74+
.staticImports("org.assertj.core.api.Assertions.assertThat")
75+
.javaParser(assertionsParser(ctx))
76+
.build()
77+
.apply(
78+
getCursor(),
79+
method.getCoordinates().replace(),
80+
actual
81+
);
8282
} else {
8383
Expression message = args.get(1);
8484
JavaTemplate.Builder template = TypeUtils.isString(message.getType()) ?
8585
JavaTemplate.builder("assertThat(#{any(boolean)}).as(#{any(String)}).isFalse();") :
8686
JavaTemplate.builder("assertThat(#{any(boolean)}).as(#{any(java.util.function.Supplier)}).isFalse();");
8787

88-
method = method.withTemplate(template
89-
.staticImports("org.assertj.core.api.Assertions.assertThat")
90-
.javaParser(assertionsParser(ctx))
91-
.build(),
92-
getCursor(),
93-
method.getCoordinates().replace(),
94-
actual,
95-
message
96-
);
88+
method = template
89+
.staticImports("org.assertj.core.api.Assertions.assertThat")
90+
.javaParser(assertionsParser(ctx))
91+
.build()
92+
.apply(
93+
getCursor(),
94+
method.getCoordinates().replace(),
95+
actual,
96+
message
97+
);
9798
}
9899

99100
maybeAddImport("org.assertj.core.api.Assertions", "assertThat");

0 commit comments

Comments
 (0)