Skip to content

Commit 37563be

Browse files
authored
Refactor tests to use AssertJ assertions instead of Hamcrest (#348)
1 parent a59bf9b commit 37563be

14 files changed

Lines changed: 1639 additions & 1672 deletions

build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ repositories {
1818
dependencies {
1919
testImplementation("org.junit.jupiter:junit-jupiter:5.14.1")
2020
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
21-
testImplementation('com.github.npathai:hamcrest-optional:2.0.0')
22-
testImplementation('org.hamcrest:hamcrest:3.0')
21+
testImplementation('org.assertj:assertj-core:3.27.7')
2322
testImplementation('org.mockito:mockito-core:5.20.0')
2423
testImplementation('nl.jqno.equalsverifier:equalsverifier:3.19.4')
2524
}

src/test/java/com/apptasticsoftware/integrationtest/RssReaderIntegrationTest.java

Lines changed: 178 additions & 181 deletions
Large diffs are not rendered by default.

src/test/java/com/apptasticsoftware/rssreader/RssReaderTest.java

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717
import java.util.concurrent.CompletableFuture;
1818
import java.util.stream.Collectors;
1919

20-
import static com.github.npathai.hamcrestopt.OptionalMatchers.isPresentAndIs;
21-
import static org.hamcrest.MatcherAssert.assertThat;
22-
import static org.hamcrest.core.Is.is;
20+
import static org.assertj.core.api.Assertions.assertThat;
2321
import static org.junit.jupiter.api.Assertions.*;
2422
import static org.mockito.ArgumentMatchers.anyString;
2523
import static org.mockito.Mockito.*;
@@ -91,19 +89,19 @@ void leadingCRCharacter() throws IOException {
9189

9290
Item item = items.get(0);
9391
assertNotNull(item);
94-
assertThat(item.getTitle(), isPresentAndIs("Title item 1"));
95-
assertThat(item.getDescription(), isPresentAndIs("Description item 1."));
96-
assertThat(item.getPubDate(), isPresentAndIs("Wed, 23 May 2018 09:30:20 +0200"));
97-
assertThat(item.getLink(), isPresentAndIs("https://www.dummy.com/item1"));
98-
assertThat(item.getGuid(), isPresentAndIs("https://www.dummy.com/item1"));
99-
assertThat(item.getIsPermaLink(), isPresentAndIs(false));
92+
assertThat(item.getTitle()).hasValue("Title item 1");
93+
assertThat(item.getDescription()).hasValue("Description item 1.");
94+
assertThat(item.getPubDate()).hasValue("Wed, 23 May 2018 09:30:20 +0200");
95+
assertThat(item.getLink()).hasValue("https://www.dummy.com/item1");
96+
assertThat(item.getGuid()).hasValue("https://www.dummy.com/item1");
97+
assertThat(item.getIsPermaLink()).hasValue(false);
10098

10199
Channel channel = item.getChannel();
102100
assertNotNull(channel);
103-
assertThat(channel.getTitle(), is("Title"));
104-
assertThat(channel.getDescription(), is("Description"));
105-
assertThat(channel.getLanguage(), isPresentAndIs("sv"));
106-
assertThat(channel.getLastBuildDate(), isPresentAndIs("Fri, 01 Jun 2018 07:17:52 +0200"));
101+
assertThat(channel.getTitle()).isEqualTo("Title");
102+
assertThat(channel.getDescription()).isEqualTo("Description");
103+
assertThat(channel.getLanguage()).hasValue("sv");
104+
assertThat(channel.getLastBuildDate()).hasValue("Fri, 01 Jun 2018 07:17:52 +0200");
107105
}
108106

109107
@Test
@@ -138,19 +136,19 @@ void leadingCRLDCharacters() throws IOException {
138136

139137
Item item = items.get(0);
140138
assertNotNull(item);
141-
assertThat(item.getTitle(), isPresentAndIs("Title item 1"));
142-
assertThat(item.getDescription(), isPresentAndIs("Description item 1."));
143-
assertThat(item.getPubDate(), isPresentAndIs("Wed, 23 May 2018 09:30:20 +0200"));
144-
assertThat(item.getLink(), isPresentAndIs("https://www.dummy.com/item1"));
145-
assertThat(item.getGuid(), isPresentAndIs("https://www.dummy.com/item1"));
146-
assertThat(item.getIsPermaLink(), isPresentAndIs(false));
139+
assertThat(item.getTitle()).hasValue("Title item 1");
140+
assertThat(item.getDescription()).hasValue("Description item 1.");
141+
assertThat(item.getPubDate()).hasValue("Wed, 23 May 2018 09:30:20 +0200");
142+
assertThat(item.getLink()).hasValue("https://www.dummy.com/item1");
143+
assertThat(item.getGuid()).hasValue("https://www.dummy.com/item1");
144+
assertThat(item.getIsPermaLink()).hasValue(false);
147145

148146
Channel channel = item.getChannel();
149147
assertNotNull(channel);
150-
assertThat(channel.getTitle(), is("Title"));
151-
assertThat(channel.getDescription(), is("Description"));
152-
assertThat(channel.getLanguage(), isPresentAndIs("sv"));
153-
assertThat(channel.getLastBuildDate(), isPresentAndIs("Fri, 01 Jun 2018 07:17:52 +0200"));
148+
assertThat(channel.getTitle()).isEqualTo("Title");
149+
assertThat(channel.getDescription()).isEqualTo("Description");
150+
assertThat(channel.getLanguage()).hasValue("sv");
151+
assertThat(channel.getLastBuildDate()).hasValue("Fri, 01 Jun 2018 07:17:52 +0200");
154152
}
155153

156154
@Test
@@ -185,19 +183,19 @@ void leadingWhitespace() throws IOException {
185183

186184
Item item = items.get(0);
187185
assertNotNull(item);
188-
assertThat(item.getTitle(), isPresentAndIs("Title item 1"));
189-
assertThat(item.getDescription(), isPresentAndIs("Description item 1."));
190-
assertThat(item.getPubDate(), isPresentAndIs("Wed, 23 May 2018 09:30:20 +0200"));
191-
assertThat(item.getLink(), isPresentAndIs("https://www.dummy.com/item1"));
192-
assertThat(item.getGuid(), isPresentAndIs("https://www.dummy.com/item1"));
193-
assertThat(item.getIsPermaLink(), isPresentAndIs(false));
186+
assertThat(item.getTitle()).hasValue("Title item 1");
187+
assertThat(item.getDescription()).hasValue("Description item 1.");
188+
assertThat(item.getPubDate()).hasValue("Wed, 23 May 2018 09:30:20 +0200");
189+
assertThat(item.getLink()).hasValue("https://www.dummy.com/item1");
190+
assertThat(item.getGuid()).hasValue("https://www.dummy.com/item1");
191+
assertThat(item.getIsPermaLink()).hasValue(false);
194192

195193
Channel channel = item.getChannel();
196194
assertNotNull(channel);
197-
assertThat(channel.getTitle(), is("Title"));
198-
assertThat(channel.getDescription(), is("Description"));
199-
assertThat(channel.getLanguage(), isPresentAndIs("sv"));
200-
assertThat(channel.getLastBuildDate(), isPresentAndIs("Fri, 01 Jun 2018 07:17:52 +0200"));
195+
assertThat(channel.getTitle()).isEqualTo("Title");
196+
assertThat(channel.getDescription()).isEqualTo("Description");
197+
assertThat(channel.getLanguage()).hasValue("sv");
198+
assertThat(channel.getLastBuildDate()).hasValue("Fri, 01 Jun 2018 07:17:52 +0200");
201199
}
202200

203201
@Test
@@ -232,19 +230,19 @@ void Cdata() throws IOException {
232230

233231
Item item = items.get(0);
234232
assertNotNull(item);
235-
assertThat(item.getTitle(), isPresentAndIs("Title item 1"));
236-
assertThat(item.getDescription(), isPresentAndIs("Description item 1."));
237-
assertThat(item.getPubDate(), isPresentAndIs("Wed, 23 May 2018 09:30:20 +0200"));
238-
assertThat(item.getLink(), isPresentAndIs("https://www.dummy.com/item1"));
239-
assertThat(item.getGuid(), isPresentAndIs("https://www.dummy.com/item1"));
240-
assertThat(item.getIsPermaLink(), isPresentAndIs(false));
233+
assertThat(item.getTitle()).hasValue("Title item 1");
234+
assertThat(item.getDescription()).hasValue("Description item 1.");
235+
assertThat(item.getPubDate()).hasValue("Wed, 23 May 2018 09:30:20 +0200");
236+
assertThat(item.getLink()).hasValue("https://www.dummy.com/item1");
237+
assertThat(item.getGuid()).hasValue("https://www.dummy.com/item1");
238+
assertThat(item.getIsPermaLink()).hasValue(false);
241239

242240
Channel channel = item.getChannel();
243241
assertNotNull(channel);
244-
assertThat(channel.getTitle(), is("Title"));
245-
assertThat(channel.getDescription(), is("<p class=\"bodytext\">Description.</p>"));
246-
assertThat(channel.getLanguage(), isPresentAndIs("sv"));
247-
assertThat(channel.getLastBuildDate(), isPresentAndIs("Fri, 01 Jun 2018 07:17:52 +0200"));
242+
assertThat(channel.getTitle()).isEqualTo("Title");
243+
assertThat(channel.getDescription()).isEqualTo("<p class=\"bodytext\">Description.</p>");
244+
assertThat(channel.getLanguage()).hasValue("sv");
245+
assertThat(channel.getLastBuildDate()).hasValue("Fri, 01 Jun 2018 07:17:52 +0200");
248246
}
249247

250248
@Test

src/test/java/com/apptasticsoftware/rssreader/module/atom/AtomFeedReaderTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@
1313
import java.util.stream.Collectors;
1414
import java.util.stream.Stream;
1515

16-
import static com.github.npathai.hamcrestopt.OptionalMatchers.isPresentAndIs;
17-
import static org.hamcrest.MatcherAssert.assertThat;
18-
import static org.hamcrest.core.Is.is;
16+
import static org.assertj.core.api.Assertions.assertThat;
1917
import static org.junit.jupiter.api.Assertions.*;
2018

2119

@@ -32,7 +30,7 @@ void example1(AbstractRssReader<AtomChannel, AtomItem> feedReader) {
3230
var channel = (AtomChannel) items.get(0).getChannel();
3331

3432
// Verify item link
35-
assertThat(channel.getLink(), is("https://technewsdaily.com"));
33+
assertThat(channel.getLink()).isEqualTo("https://technewsdaily.com");
3634

3735
var channelLinks = channel.getAtomLinks();
3836
assertEquals(2, channelLinks.size());
@@ -66,7 +64,7 @@ void example1(AbstractRssReader<AtomChannel, AtomItem> feedReader) {
6664
var atomItem = items.get(0);
6765

6866
// Verify item link
69-
assertThat(atomItem.getLink(), isPresentAndIs("https://technewsdaily.com/articles/new-programming-language"));
67+
assertThat(atomItem.getLink()).hasValue("https://technewsdaily.com/articles/new-programming-language");
7068

7169
// Verify item atom:link
7270
var itemLinks = atomItem.getAtomLinks();

src/test/java/com/apptasticsoftware/rssreader/module/dc/DcFeedReaderTest.java

Lines changed: 43 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@
1616
import java.util.stream.Collectors;
1717
import java.util.stream.Stream;
1818

19-
import static com.github.npathai.hamcrestopt.OptionalMatchers.isPresentAnd;
20-
import static com.github.npathai.hamcrestopt.OptionalMatchers.isPresentAndIs;
21-
import static org.hamcrest.MatcherAssert.assertThat;
22-
import static org.hamcrest.Matchers.*;
19+
import static org.assertj.core.api.Assertions.assertThat;
2320
import static org.junit.jupiter.api.Assertions.assertEquals;
2421

2522
@SuppressWarnings("java:S5961")
@@ -34,49 +31,49 @@ void example1() {
3431
var item = items.get(0);
3532
var channel = (DcChannel) item.getChannel();
3633

37-
assertThat(channel.getTitle(), is("Meerkat"));
38-
assertThat(channel.getLink(), is("http://meerkat.oreillynet.com"));
39-
assertThat(channel.getDescription(), is("Meerkat: An Open Wire Service"));
40-
assertThat(channel.getDcTitle(), isPresentAndIs("Channel title"));
41-
assertThat(channel.getTitle(), is("Meerkat"));
42-
assertThat(channel.getDcCreator(), isPresentAndIs("Rael Dornfest (mailto:rael@oreilly.com)"));
43-
assertThat(channel.getManagingEditor(), isPresentAndIs("Rael Dornfest (mailto:rael@oreilly.com)"));
44-
assertThat(channel.getDcSubject(), isPresentAndIs("Channel subject"));
45-
assertThat(channel.getDcDescription(), isPresentAndIs("Channel description"));
46-
assertThat(channel.getDcPublisher(), isPresentAndIs("The O'Reilly Network"));
47-
assertThat(channel.getDcContributor(), isPresentAndIs("Channel contributor"));
48-
assertThat(channel.getDcDate(), isPresentAndIs("2000-01-01T12:00+00:00"));
49-
assertThat(channel.getPubDate(), isPresentAndIs("2000-01-01T12:00+00:00"));
50-
assertThat(channel.getDcType(), isPresentAndIs("Channel type"));
51-
assertThat(channel.getDcFormat(), isPresentAndIs("Channel format"));
52-
assertThat(channel.getDcIdentifier(), isPresentAndIs("Channel identifier"));
53-
assertThat(channel.getDcSource(), isPresentAndIs("Channel source"));
54-
assertThat(channel.getDcLanguage(), isPresentAndIs("en"));
55-
assertThat(channel.getLanguage(), isPresentAndIs("en"));
56-
assertThat(channel.getDcRelation(), isPresentAndIs("Channel relation"));
57-
assertThat(channel.getDcCoverage(), isPresentAndIs("Channel coverage"));
58-
assertThat(channel.getDcRights(), isPresentAndIs("Copyright © 2000 O'Reilly & Associates, Inc."));
59-
assertThat(channel.getCopyright(), isPresentAndIs("Copyright © 2000 O'Reilly & Associates, Inc."));
34+
assertThat(channel.getTitle()).isEqualTo("Meerkat");
35+
assertThat(channel.getLink()).isEqualTo("http://meerkat.oreillynet.com");
36+
assertThat(channel.getDescription()).isEqualTo("Meerkat: An Open Wire Service");
37+
assertThat(channel.getDcTitle()).hasValue("Channel title");
38+
assertThat(channel.getTitle()).isEqualTo("Meerkat");
39+
assertThat(channel.getDcCreator()).hasValue("Rael Dornfest (mailto:rael@oreilly.com)");
40+
assertThat(channel.getManagingEditor()).hasValue("Rael Dornfest (mailto:rael@oreilly.com)");
41+
assertThat(channel.getDcSubject()).hasValue("Channel subject");
42+
assertThat(channel.getDcDescription()).hasValue("Channel description");
43+
assertThat(channel.getDcPublisher()).hasValue("The O'Reilly Network");
44+
assertThat(channel.getDcContributor()).hasValue("Channel contributor");
45+
assertThat(channel.getDcDate()).hasValue("2000-01-01T12:00+00:00");
46+
assertThat(channel.getPubDate()).hasValue("2000-01-01T12:00+00:00");
47+
assertThat(channel.getDcType()).hasValue("Channel type");
48+
assertThat(channel.getDcFormat()).hasValue("Channel format");
49+
assertThat(channel.getDcIdentifier()).hasValue("Channel identifier");
50+
assertThat(channel.getDcSource()).hasValue("Channel source");
51+
assertThat(channel.getDcLanguage()).hasValue("en");
52+
assertThat(channel.getLanguage()).hasValue("en");
53+
assertThat(channel.getDcRelation()).hasValue("Channel relation");
54+
assertThat(channel.getDcCoverage()).hasValue("Channel coverage");
55+
assertThat(channel.getDcRights()).hasValue("Copyright © 2000 O'Reilly & Associates, Inc.");
56+
assertThat(channel.getCopyright()).hasValue("Copyright © 2000 O'Reilly & Associates, Inc.");
6057

61-
assertThat(item.getTitle(), isPresentAndIs("XML: A Disruptive Technology"));
62-
assertThat(item.getDcTitle(), isPresentAndIs("Item title"));
63-
assertThat(item.getDcCreator(), isPresentAndIs("Simon St.Laurent (mailto:simonstl@simonstl.com)"));
64-
assertThat(item.getAuthor(), isPresentAndIs("Simon St.Laurent (mailto:simonstl@simonstl.com)"));
65-
assertThat(item.getDcSubject(), isPresentAndIs("XML"));
66-
assertThat(item.getDcDescription(), isPresentAnd(containsString("XML is placing increasingly heavy loads on the existing technical")));
67-
assertThat(item.getDcPublisher(), isPresentAndIs("The O'Reilly Network"));
68-
assertThat(item.getDcContributor(), isPresentAndIs("Item contributor"));
69-
assertThat(item.getDcDate(), isPresentAndIs("2000-01-01T12:00+00:00"));
70-
assertThat(item.getPubDate(), isPresentAndIs("2000-01-01T12:00+00:00"));
71-
assertThat(item.getDcType(), isPresentAndIs("Item type"));
72-
assertThat(item.getDcFormat(), isPresentAndIs("Item format"));
73-
assertThat(item.getDcIdentifier(), isPresentAndIs("Item identifier"));
74-
assertThat(item.getGuid(), isPresentAndIs("Item identifier"));
75-
assertThat(item.getDcSource(), isPresentAndIs("Item source"));
76-
assertThat(item.getDcLanguage(), isPresentAndIs("en-us"));
77-
assertThat(item.getDcRelation(), isPresentAndIs("Item relation"));
78-
assertThat(item.getDcCoverage(), isPresentAndIs("Item coverage"));
79-
assertThat(item.getDcRights(), isPresentAndIs("Copyright © 2000 O'Reilly & Associates, Inc."));
58+
assertThat(item.getTitle()).hasValue("XML: A Disruptive Technology");
59+
assertThat(item.getDcTitle()).hasValue("Item title");
60+
assertThat(item.getDcCreator()).hasValue("Simon St.Laurent (mailto:simonstl@simonstl.com)");
61+
assertThat(item.getAuthor()).hasValue("Simon St.Laurent (mailto:simonstl@simonstl.com)");
62+
assertThat(item.getDcSubject()).hasValue("XML");
63+
assertThat(item.getDcDescription()).hasValueSatisfying(v -> assertThat(v).contains("XML is placing increasingly heavy loads on the existing technical"));
64+
assertThat(item.getDcPublisher()).hasValue("The O'Reilly Network");
65+
assertThat(item.getDcContributor()).hasValue("Item contributor");
66+
assertThat(item.getDcDate()).hasValue("2000-01-01T12:00+00:00");
67+
assertThat(item.getPubDate()).hasValue("2000-01-01T12:00+00:00");
68+
assertThat(item.getDcType()).hasValue("Item type");
69+
assertThat(item.getDcFormat()).hasValue("Item format");
70+
assertThat(item.getDcIdentifier()).hasValue("Item identifier");
71+
assertThat(item.getGuid()).hasValue("Item identifier");
72+
assertThat(item.getDcSource()).hasValue("Item source");
73+
assertThat(item.getDcLanguage()).hasValue("en-us");
74+
assertThat(item.getDcRelation()).hasValue("Item relation");
75+
assertThat(item.getDcCoverage()).hasValue("Item coverage");
76+
assertThat(item.getDcRights()).hasValue("Copyright © 2000 O'Reilly & Associates, Inc.");
8077
}
8178

8279
@Test

0 commit comments

Comments
 (0)