Skip to content

Commit bf27539

Browse files
authored
Add missing Hamcrest not(Matcher) to AssertJ conversions (#866) (#917)
Add 7 missing `HamcrestNotMatcherToAssertJ` entries for: - Map matchers: `not(hasKey)`, `not(hasValue)`, `not(hasEntry)`, `not(anEmptyMap)` - String matchers: `not(isEmptyOrNullString)`, `not(emptyOrNullString)` - Object matchers: `not(isA)`
1 parent 4f3f340 commit bf27539

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

src/main/resources/META-INF/rewrite/hamcrest.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,3 +382,27 @@ recipeList:
382382
notMatcher: empty
383383
assertion: isNotEmpty
384384

385+
- org.openrewrite.java.testing.hamcrest.HamcrestNotMatcherToAssertJ:
386+
notMatcher: hasKey
387+
assertion: doesNotContainKey
388+
- org.openrewrite.java.testing.hamcrest.HamcrestNotMatcherToAssertJ:
389+
notMatcher: hasValue
390+
assertion: doesNotContainValue
391+
- org.openrewrite.java.testing.hamcrest.HamcrestNotMatcherToAssertJ:
392+
notMatcher: hasEntry
393+
assertion: doesNotContainEntry
394+
- org.openrewrite.java.testing.hamcrest.HamcrestNotMatcherToAssertJ:
395+
notMatcher: anEmptyMap
396+
assertion: isNotEmpty
397+
398+
- org.openrewrite.java.testing.hamcrest.HamcrestNotMatcherToAssertJ:
399+
notMatcher: isEmptyOrNullString
400+
assertion: isNotEmpty
401+
- org.openrewrite.java.testing.hamcrest.HamcrestNotMatcherToAssertJ:
402+
notMatcher: emptyOrNullString
403+
assertion: isNotEmpty
404+
405+
- org.openrewrite.java.testing.hamcrest.HamcrestNotMatcherToAssertJ:
406+
notMatcher: isA
407+
assertion: isNotInstanceOf
408+

src/test/java/org/openrewrite/java/testing/hamcrest/MigrateHamcrestToAssertJTest.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,43 @@ void test(String key, String value) {
462462
rewriteRun(java(before, after));
463463
}
464464

465+
private static Stream<Arguments> notMapReplacements() {
466+
return Stream.of(
467+
Arguments.arguments("map1", "hasKey", "key", "doesNotContainKey"),
468+
Arguments.arguments("map1", "hasValue", "value", "doesNotContainValue"),
469+
Arguments.arguments("map1", "hasEntry", "key, value", "doesNotContainEntry"),
470+
Arguments.arguments("map1", "anEmptyMap", "", "isNotEmpty")
471+
);
472+
}
473+
474+
@MethodSource("notMapReplacements")
475+
@ParameterizedTest
476+
void notMapReplacements(String actual, String hamcrestMatcher, String matcherArgs, String assertJAssertion) {
477+
String importsBefore = """
478+
import static org.hamcrest.MatcherAssert.assertThat;
479+
import static org.hamcrest.Matchers.not;
480+
import static org.hamcrest.Matchers.%s;""".formatted(hamcrestMatcher);
481+
String importsAfter = "import static org.assertj.core.api.Assertions.assertThat;";
482+
//language=java
483+
String template = """
484+
import java.util.Map;
485+
import org.junit.jupiter.api.Test;
486+
487+
%s
488+
489+
class ATest {
490+
@Test
491+
void test(String key, String value) {
492+
Map<String, String> map1 = Map.of("a", "b", "c", "d");
493+
%s
494+
}
495+
}
496+
""";
497+
String before = template.formatted(importsBefore, "assertThat(%s, not(%s(%s)));".formatted(actual, hamcrestMatcher, matcherArgs));
498+
String after = template.formatted(importsAfter, "assertThat(%s).%s(%s);".formatted(actual, assertJAssertion, matcherArgs));
499+
rewriteRun(java(before, after));
500+
}
501+
465502
private static Stream<Arguments> notReplacements() {
466503
return Stream.of(
467504
Arguments.arguments("str1", "equalTo", "str2", "isNotEqualTo"),
@@ -480,7 +517,10 @@ private static Stream<Arguments> notReplacements() {
480517
Arguments.arguments("str1", "equalToIgnoringCase", "str2", "isNotEqualToIgnoringCase"),
481518
Arguments.arguments("str1", "equalToIgnoringWhiteSpace", "str2", "isNotEqualToIgnoringWhitespace"),
482519
Arguments.arguments("str1", "blankString", "", "isNotBlank"),
483-
Arguments.arguments("str1", "emptyString", "", "isNotEmpty")
520+
Arguments.arguments("str1", "emptyString", "", "isNotEmpty"),
521+
Arguments.arguments("str1", "isEmptyOrNullString", "", "isNotEmpty"),
522+
Arguments.arguments("str1", "emptyOrNullString", "", "isNotEmpty"),
523+
Arguments.arguments("str1", "isA", "String.class", "isNotInstanceOf")
484524
);
485525
}
486526

0 commit comments

Comments
 (0)