Skip to content

Commit

Permalink
#215 - Improved OrderCompletionReport.toString() to be human readable.
Browse files Browse the repository at this point in the history
Replaced OrderCompletionReport's and OrderLineCompletion's toString() methods with custom implementations to make sure the Streamable instances are rendered in a human readable way.
  • Loading branch information
odrotbohm committed Nov 19, 2018
1 parent 70c1666 commit 7cb6d2d
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 14 deletions.
14 changes: 2 additions & 12 deletions src/main/java/org/salespointframework/order/Order.java
Expand Up @@ -30,17 +30,7 @@
import java.util.Set;

import javax.money.MonetaryAmount;
import javax.persistence.AttributeOverride;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.*;

import org.salespointframework.core.AbstractEntity;
import org.salespointframework.payment.PaymentMethod;
Expand All @@ -57,7 +47,7 @@
*/
@Entity
@Table(name = "ORDERS")
@ToString
@ToString(doNotUseGetters = true)
@NoArgsConstructor(force = true, access = AccessLevel.PROTECTED)
public class Order extends AbstractEntity<OrderIdentifier> {

Expand Down
Expand Up @@ -20,7 +20,6 @@
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import lombok.Value;
import lombok.experimental.FieldDefaults;

Expand All @@ -30,7 +29,6 @@
import org.salespointframework.order.OrderCompletionReport.OrderLineCompletion;
import org.springframework.data.util.Streamable;

@ToString
@EqualsAndHashCode
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
Expand Down Expand Up @@ -107,6 +105,24 @@ public Iterator<OrderLineCompletion> iterator() {
return completions.iterator();
}

/*
* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {

StringBuilder builder = new StringBuilder() //
.append(status) //
.append(" ") //
.append(order);

completions.forEach(it -> builder.append('\n') //
.append("> ").append(it));

return builder.toString();
}

/**
* The completion status of an {@link OrderLine}.
*
Expand Down Expand Up @@ -149,6 +165,22 @@ public static OrderLineCompletion error(OrderLine orderLine, String message) {
public boolean isFailure() {
return CompletionStatus.FAILED.equals(status);
}

/*
* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {

StringBuilder builder = new StringBuilder() //
.append(status) //
.append(" – ") //
.append(orderLine);

message.ifPresent(it -> builder.append(" - ").append(it));

return builder.toString();
}
}

/**
Expand Down
Expand Up @@ -18,8 +18,11 @@
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;

import java.util.Arrays;

import org.junit.jupiter.api.Test;
import org.salespointframework.order.OrderCompletionReport.OrderLineCompletion;
import org.salespointframework.useraccount.UserAccount;

/**
* Unit tests for {@link OrderCompletionReport}.
Expand All @@ -38,4 +41,17 @@ void erroneousCompletionExposesFailure() {
assertThat(it).isEqualTo("Some message!");
});
}

@Test // #215
public void toStringRendersHumanReadableOutput() {

UserAccount account = mock(UserAccount.class);
Order order = new Order(account);

OrderLineCompletion completion = OrderLineCompletion.error(mock(OrderLine.class), "Some message!");
OrderCompletionReport report = OrderCompletionReport.forCompletions(order, Arrays.asList(completion));

// toString() contains message of OrderLineCompletion
assertThat(report.toString()).contains("Some message!");
}
}

0 comments on commit 7cb6d2d

Please sign in to comment.