From 78124d60dd20babab13b1649503eaefdd37091fd Mon Sep 17 00:00:00 2001 From: Carlos Chacin Date: Tue, 13 Dec 2022 16:55:12 -0800 Subject: [PATCH] [BAEL-5976]: Extract Values using AssertJ in Java (#13105) JIRA: https://jira.baeldung.com/browse/BAEL-5976 --- .../baeldung/assertj/extracting/Address.java | 25 ++++++++++ .../baeldung/assertj/extracting/Person.java | 25 ++++++++++ .../baeldung/assertj/extracting/ZipCode.java | 13 ++++++ .../extracting/AssertJExtractingUnitTest.java | 46 +++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Address.java create mode 100644 testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Person.java create mode 100644 testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/ZipCode.java create mode 100644 testing-modules/assertion-libraries/src/test/java/com/baeldung/assertj/extracting/AssertJExtractingUnitTest.java diff --git a/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Address.java b/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Address.java new file mode 100644 index 0000000000..aa6ee85351 --- /dev/null +++ b/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Address.java @@ -0,0 +1,25 @@ +package com.baeldung.assertj.extracting; + +class Address { + private String street; + private String city; + private ZipCode zipCode; + + Address(String street, String city, ZipCode zipCode) { + this.street = street; + this.city = city; + this.zipCode = zipCode; + } + + public String getStreet() { + return street; + } + + public String getCity() { + return city; + } + + public ZipCode getZipCode() { + return zipCode; + } +} diff --git a/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Person.java b/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Person.java new file mode 100644 index 0000000000..b8a987cf09 --- /dev/null +++ b/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/Person.java @@ -0,0 +1,25 @@ +package com.baeldung.assertj.extracting; + +class Person { + private String firstName; + private String lastName; + private Address address; + + Person(String firstName, String lastName, Address address) { + this.firstName = firstName; + this.lastName = lastName; + this.address = address; + } + + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } + + public Address getAddress() { + return address; + } +} diff --git a/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/ZipCode.java b/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/ZipCode.java new file mode 100644 index 0000000000..1523ef7144 --- /dev/null +++ b/testing-modules/assertion-libraries/src/main/java/com/baeldung/assertj/extracting/ZipCode.java @@ -0,0 +1,13 @@ +package com.baeldung.assertj.extracting; + +class ZipCode { + private long zipcode; + + ZipCode(long zipcode) { + this.zipcode = zipcode; + } + + public long getZipcode() { + return zipcode; + } +} diff --git a/testing-modules/assertion-libraries/src/test/java/com/baeldung/assertj/extracting/AssertJExtractingUnitTest.java b/testing-modules/assertion-libraries/src/test/java/com/baeldung/assertj/extracting/AssertJExtractingUnitTest.java new file mode 100644 index 0000000000..aae4f8a041 --- /dev/null +++ b/testing-modules/assertion-libraries/src/test/java/com/baeldung/assertj/extracting/AssertJExtractingUnitTest.java @@ -0,0 +1,46 @@ +package com.baeldung.assertj.extracting; + +import org.assertj.core.api.InstanceOfAssertFactories; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.as; +import static org.assertj.core.api.Assertions.assertThat; + +class AssertJExtractingUnitTest { + static final List
RESTRICTED_ADDRESSES = new ArrayList<>(); + + @Test + void whenUsingRegularAssertionFlow_thenCorrect() { + + // Given + Person person = new Person("aName", "aLastName", new Address("aStreet", "aCity", new ZipCode(90210))); + + // Then + Address address = person.getAddress(); + assertThat(address).isNotNull() + .isNotIn(RESTRICTED_ADDRESSES); + ZipCode zipCode = address.getZipCode(); + assertThat(zipCode).isNotNull(); + assertThat(zipCode.getZipcode()).isBetween(1000L, 100_000L); + } + + @Test + void whenUsingExtractingAssertionFlow_thenCorrect() { + + // Given + Person person = new Person("aName", "aLastName", new Address("aStreet", "aCity", new ZipCode(90210))); + + // Then + assertThat(person) + .extracting(Person::getAddress) + .isNotNull() + .isNotIn(RESTRICTED_ADDRESSES) + .extracting(Address::getZipCode) + .isNotNull() + .extracting(ZipCode::getZipcode, as(InstanceOfAssertFactories.LONG)) + .isBetween(1_000L, 100_000L); + } +}