content, Link... links) {
+ super(content, links);
+ }
+}
diff --git a/account/account-web/src/main/java/demo/order/event/OrderEvent.java b/account/account-web/src/main/java/demo/order/event/OrderEvent.java
new file mode 100644
index 0000000..b9bffac
--- /dev/null
+++ b/account/account-web/src/main/java/demo/order/event/OrderEvent.java
@@ -0,0 +1,85 @@
+package demo.order.event;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import demo.event.Event;
+import demo.order.domain.Order;
+
+/**
+ * The domain event {@link OrderEvent} tracks the type and state of events as applied to the {@link Order} domain
+ * object. This event resource can be used to event source the aggregate state of {@link Order}.
+ *
+ * This event resource also provides a transaction log that can be used to append actions to the event.
+ *
+ * @author Kenny Bastani
+ */
+public class OrderEvent extends Event {
+
+ private Long eventId;
+ private OrderEventType type;
+ @JsonIgnore
+ private Order order;
+ private Long createdAt, lastModified;
+
+ public OrderEvent() {
+ }
+
+ public OrderEvent(OrderEventType type) {
+ this.type = type;
+ }
+
+ public OrderEvent(OrderEventType type, Order order) {
+ this.type = type;
+ this.order = order;
+ }
+
+ public Long getEventId() {
+ return eventId;
+ }
+
+ public void setEventId(Long id) {
+ eventId = id;
+ }
+
+ public OrderEventType getType() {
+ return type;
+ }
+
+ public void setType(OrderEventType type) {
+ this.type = type;
+ }
+
+ public Order getEntity() {
+ return order;
+ }
+
+ public void setEntity(Order entity) {
+ this.order = entity;
+ }
+
+ public Long getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Long createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Long getLastModified() {
+ return lastModified;
+ }
+
+ public void setLastModified(Long lastModified) {
+ this.lastModified = lastModified;
+ }
+
+ @Override
+ public String toString() {
+ return "OrderEvent{" +
+ "eventId=" + eventId +
+ ", type=" + type +
+ ", order=" + order +
+ ", createdAt=" + createdAt +
+ ", lastModified=" + lastModified +
+ "} " + super.toString();
+ }
+}
diff --git a/account/account-web/src/main/java/demo/order/event/OrderEventType.java b/account/account-web/src/main/java/demo/order/event/OrderEventType.java
new file mode 100644
index 0000000..ede43c9
--- /dev/null
+++ b/account/account-web/src/main/java/demo/order/event/OrderEventType.java
@@ -0,0 +1,24 @@
+package demo.order.event;
+
+import demo.order.domain.Order;
+import demo.order.domain.OrderStatus;
+
+/**
+ * The {@link OrderEventType} represents a collection of possible events that describe state transitions of
+ * {@link OrderStatus} on the {@link Order} aggregate.
+ *
+ * @author Kenny Bastani
+ */
+public enum OrderEventType {
+ ORDER_CREATED,
+ ACCOUNT_CONNECTED,
+ RESERVATION_PENDING,
+ INVENTORY_RESERVED,
+ RESERVATION_SUCCEEDED,
+ RESERVATION_FAILED,
+ PAYMENT_CREATED,
+ PAYMENT_CONNECTED,
+ PAYMENT_PENDING,
+ PAYMENT_SUCCEEDED,
+ PAYMENT_FAILED
+}
diff --git a/account/account-web/src/main/resources/application.yml b/account/account-web/src/main/resources/application.yml
index 3210601..dbbf0c2 100644
--- a/account/account-web/src/main/resources/application.yml
+++ b/account/account-web/src/main/resources/application.yml
@@ -11,4 +11,22 @@ spring:
destination: account
contentType: 'application/json'
server:
- port: 8080
\ No newline at end of file
+ port: 0
+events:
+ worker: http://account-worker/v1/events
+---
+spring:
+ profiles: test
+ cloud:
+ stream:
+ bindings:
+ output:
+ destination: account
+ contentType: 'application/json'
+server:
+ port: 0
+events:
+ worker: http://account-worker/v1/events
+eureka:
+ client:
+ enabled: false
\ No newline at end of file
diff --git a/account/account-web/src/test/java/demo/account/AccountControllerTest.java b/account/account-web/src/test/java/demo/account/AccountControllerTest.java
index ffe5c8f..2171f43 100644
--- a/account/account-web/src/test/java/demo/account/AccountControllerTest.java
+++ b/account/account-web/src/test/java/demo/account/AccountControllerTest.java
@@ -1,8 +1,8 @@
package demo.account;
import demo.account.controller.AccountController;
-import demo.event.AccountEvent;
-import demo.event.AccountEventType;
+import demo.account.event.AccountEvent;
+import demo.account.event.AccountEventType;
import demo.event.EventService;
import demo.event.Events;
import org.junit.Test;
@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
@@ -23,6 +24,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
@RunWith(SpringRunner.class)
@WebMvcTest(AccountController.class)
+@ActiveProfiles("test")
public class AccountControllerTest {
@Autowired
diff --git a/account/account-web/src/test/java/demo/account/AccountServiceTests.java b/account/account-web/src/test/java/demo/account/AccountServiceTests.java
index c3511d0..b4efd31 100644
--- a/account/account-web/src/test/java/demo/account/AccountServiceTests.java
+++ b/account/account-web/src/test/java/demo/account/AccountServiceTests.java
@@ -1,13 +1,15 @@
package demo.account;
-import demo.event.AccountEvent;
-import demo.event.AccountEventType;
+import demo.account.event.AccountEvent;
+import demo.account.event.AccountEventType;
import demo.event.EventService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import static org.assertj.core.api.Assertions.assertThat;
@@ -15,6 +17,7 @@ import static org.mockito.BDDMockito.given;
@RunWith(SpringRunner.class)
@SpringBootTest
+@ActiveProfiles("test")
public class AccountServiceTests {
@MockBean
@@ -23,6 +26,9 @@ public class AccountServiceTests {
@MockBean
private AccountRepository accountRepository;
+ @MockBean
+ private DiscoveryClient discoveryClient;
+
@Autowired
private AccountService accountService;
diff --git a/account/account-worker/pom.xml b/account/account-worker/pom.xml
index 4e76279..1eef4b5 100644
--- a/account/account-worker/pom.xml
+++ b/account/account-worker/pom.xml
@@ -43,6 +43,10 @@
org.springframework.boot
spring-boot-starter-integration