diff --git a/java-es-cqrs/pom.xml b/java-es-cqrs/pom.xml
index 4160c62b0c..b1ebbf1d57 100644
--- a/java-es-cqrs/pom.xml
+++ b/java-es-cqrs/pom.xml
@@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.sapient.learning
- java-events
+ java-es-cqrs
0.0.1-SNAPSHOT
java-es-cqrs
@@ -16,5 +16,12 @@
lombok
1.18.12
+
+ junit
+ junit
+ 4.13
+ test
+
+
\ No newline at end of file
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/cqrs/projectors/UserProjector.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/cqrs/projectors/UserProjector.java
index 25c10094c1..0344c352d9 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/cqrs/projectors/UserProjector.java
+++ b/java-es-cqrs/src/main/java/com/baeldung/patterns/cqrs/projectors/UserProjector.java
@@ -3,6 +3,7 @@ package com.baeldung.patterns.cqrs.projectors;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import com.baeldung.patterns.cqrs.repository.UserReadRepository;
@@ -21,36 +22,28 @@ public class UserProjector {
}
public void project(User user) {
- UserContact userContact = readRepository.getUserContact(user.getUserid());
- if (userContact == null)
- userContact = new UserContact();
- userContact.setContacts(user.getContacts());
+ UserContact userContact = Optional.ofNullable(readRepository.getUserContact(user.getUserid()))
+ .orElse(new UserContact());
Map> contactByType = new HashMap<>();
for (Contact contact : user.getContacts()) {
- Set contacts = contactByType.get(contact.getType());
- if (contacts == null)
- contacts = new HashSet<>();
+ Set contacts = Optional.ofNullable(contactByType.get(contact.getType()))
+ .orElse(new HashSet<>());
contacts.add(contact);
contactByType.put(contact.getType(), contacts);
}
userContact.setContactByType(contactByType);
readRepository.addUserContact(user.getUserid(), userContact);
- UserAddress userAddress = readRepository.getUserAddress(user.getUserid());
- if (userAddress == null)
- userAddress = new UserAddress();
- userAddress.setAddresses(user.getAddresses());
+ UserAddress userAddress = Optional.ofNullable(readRepository.getUserAddress(user.getUserid()))
+ .orElse(new UserAddress());
Map> addressByRegion = new HashMap<>();
for (Address address : user.getAddresses()) {
- Set addresses = addressByRegion.get(address.getState());
- if (addresses == null)
- addresses = new HashSet<>();
+ Set addresses = Optional.ofNullable(addressByRegion.get(address.getState()))
+ .orElse(new HashSet<>());
addresses.add(address);
addressByRegion.put(address.getState(), addresses);
}
userAddress.setAddressByRegion(addressByRegion);
readRepository.addUserAddress(user.getUserid(), userAddress);
-
}
-
}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/crud/Main.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/crud/Main.java
deleted file mode 100644
index 1f20e0be38..0000000000
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/crud/Main.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.baeldung.patterns.crud;
-
-import java.util.UUID;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import com.baeldung.patterns.crud.repository.UserRepository;
-import com.baeldung.patterns.crud.service.UserService;
-import com.baeldung.patterns.domain.Address;
-import com.baeldung.patterns.domain.Contact;
-
-public class Main {
-
- public static void main(String[] args) throws Exception {
-
- UserRepository repository = new UserRepository();
- UserService service = new UserService(repository);
- String userId = UUID.randomUUID()
- .toString();
-
- service.createUser(userId, "Tom", "Sawyer");
- service.updateUser(userId,
- Stream.of(
- new Contact("EMAIL", "tom.sawyer@gmail.com"),
- new Contact("EMAIL", "tom.sawyer@rediff.com"),
- new Contact("PHONE", "700-000-0001"))
- .collect(Collectors.toSet()),
- Stream.of(
- new Address("New York", "NY", "10001"),
- new Address("Los Angeles", "CA", "90001"),
- new Address("Housten", "TX", "77001"))
- .collect(Collectors.toSet()));
- service.updateUser(userId,
- Stream.of(
- new Contact("EMAIL", "tom.sawyer@gmail.com"),
- new Contact("PHONE", "700-000-0001"))
- .collect(Collectors.toSet()),
- Stream.of(
- new Address("New York", "NY", "10001"),
- new Address("Housten", "TX", "77001"))
- .collect(Collectors.toSet()));
-
- System.out.println(service.getContactByType(userId, "EMAIL"));
- System.out.println(service.getAddressByRegion(userId, "NY"));
-
- }
-
-}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserAddress.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserAddress.java
index 33f9bdf28f..8105a53265 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserAddress.java
+++ b/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserAddress.java
@@ -1,7 +1,6 @@
package com.baeldung.patterns.domain;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -10,7 +9,6 @@ import lombok.Data;
@Data
public class UserAddress {
- private Set addresses = new HashSet<>();
private Map> addressByRegion = new HashMap<>();
}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserContact.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserContact.java
index 4f2ba812a4..1768dadc39 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserContact.java
+++ b/java-es-cqrs/src/main/java/com/baeldung/patterns/domain/UserContact.java
@@ -1,7 +1,6 @@
package com.baeldung.patterns.domain;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -10,7 +9,6 @@ import lombok.Data;
@Data
public class UserContact {
- private Set contacts = new HashSet<>();
private Map> contactByType = new HashMap<>();
}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/Main.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/es/Main.java
deleted file mode 100644
index 77649088e9..0000000000
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/Main.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.baeldung.patterns.es;
-
-import java.util.UUID;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import com.baeldung.patterns.domain.Address;
-import com.baeldung.patterns.domain.Contact;
-import com.baeldung.patterns.es.repository.EventStore;
-import com.baeldung.patterns.es.service.UserService;
-
-public class Main {
-
- public static void main(String[] args) throws Exception {
-
- EventStore repository = new EventStore();
- UserService service = new UserService(repository);
- String userId = UUID.randomUUID()
- .toString();
-
- service.createUser(userId, "Tom", "Sawyer");
- service.updateUser(userId,
- Stream.of(
- new Contact("EMAIL", "tom.sawyer@gmail.com"),
- new Contact("EMAIL", "tom.sawyer@rediff.com"),
- new Contact("PHONE", "700-000-0001"))
- .collect(Collectors.toSet()),
- Stream.of(
- new Address("New York", "NY", "10001"),
- new Address("Los Angeles", "CA", "90001"),
- new Address("Housten", "TX", "77001"))
- .collect(Collectors.toSet()));
- service.updateUser(userId,
- Stream.of(
- new Contact("EMAIL", "tom.sawyer@gmail.com"),
- new Contact("PHONE", "700-000-0001"))
- .collect(Collectors.toSet()),
- Stream.of(
- new Address("New York", "NY", "10001"),
- new Address("Housten", "TX", "77001"))
- .collect(Collectors.toSet()));
-
- System.out.println(service.getContactByType(userId, "EMAIL"));
- System.out.println(service.getAddressByRegion(userId, "NY"));
-
- }
-
-}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/events/UserRemovedEvent.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/es/events/UserRemovedEvent.java
deleted file mode 100644
index b609cb1daf..0000000000
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/events/UserRemovedEvent.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.baeldung.patterns.es.events;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-@Data
-@AllArgsConstructor
-@EqualsAndHashCode(callSuper = false)
-public class UserRemovedEvent extends Event {
-
-}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserService.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserService.java
index 0233453d68..9650c4294f 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserService.java
+++ b/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserService.java
@@ -1,6 +1,5 @@
package com.baeldung.patterns.es.service;
-import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -23,8 +22,7 @@ public class UserService {
}
public void createUser(String userId, String firstName, String lastName) {
- UserCreatedEvent event = new UserCreatedEvent(userId, firstName, lastName);
- repository.addEvent(userId, event);
+ repository.addEvent(userId, new UserCreatedEvent(userId, firstName, lastName));
}
public void updateUser(String userId, Set contacts, Set addresses) throws Exception {
@@ -32,49 +30,30 @@ public class UserService {
if (user == null)
throw new Exception("User does not exist.");
- List contactsToRemove = user.getContacts()
+ user.getContacts()
.stream()
.filter(c -> !contacts.contains(c))
- .collect(Collectors.toList());
- for (Contact contact : contactsToRemove) {
- UserContactRemovedEvent contactRemovedEvent = new UserContactRemovedEvent(contact.getType(), contact.getDetail());
- repository.addEvent(userId, contactRemovedEvent);
- }
-
- List contactsToAdd = contacts.stream()
+ .forEach(c -> repository.addEvent(userId, new UserContactRemovedEvent(c.getType(), c.getDetail())));
+ contacts.stream()
.filter(c -> !user.getContacts()
.contains(c))
- .collect(Collectors.toList());
- for (Contact contact : contactsToAdd) {
- UserContactAddedEvent contactAddedEvent = new UserContactAddedEvent(contact.getType(), contact.getDetail());
- repository.addEvent(userId, contactAddedEvent);
- }
-
- List addressesToRemove = user.getAddresses()
+ .forEach(c -> repository.addEvent(userId, new UserContactAddedEvent(c.getType(), c.getDetail())));
+ user.getAddresses()
.stream()
.filter(a -> !addresses.contains(a))
- .collect(Collectors.toList());
- for (Address address : addressesToRemove) {
- UserAddressRemovedEvent addressRemovedEvent = new UserAddressRemovedEvent(address.getCity(), address.getState(), address.getPostcode());
- repository.addEvent(userId, addressRemovedEvent);
- }
-
- List addressesToAdd = addresses.stream()
+ .forEach(a -> repository.addEvent(userId, new UserAddressRemovedEvent(a.getCity(), a.getState(), a.getPostcode())));
+ addresses.stream()
.filter(a -> !user.getAddresses()
.contains(a))
- .collect(Collectors.toList());
- for (Address address : addressesToAdd) {
- UserAddressAddedEvent addressAddedEvent = new UserAddressAddedEvent(address.getCity(), address.getState(), address.getPostcode());
- repository.addEvent(userId, addressAddedEvent);
- }
+ .forEach(a -> repository.addEvent(userId, new UserAddressAddedEvent(a.getCity(), a.getState(), a.getPostcode())));
}
public Set getContactByType(String userId, String contactType) throws Exception {
User user = UserUtility.recreateUserState(repository, userId);
if (user == null)
throw new Exception("User does not exist.");
- Set contacts = user.getContacts();
- return contacts.stream()
+ return user.getContacts()
+ .stream()
.filter(c -> c.getType()
.equals(contactType))
.collect(Collectors.toSet());
@@ -84,11 +63,10 @@ public class UserService {
User user = UserUtility.recreateUserState(repository, userId);
if (user == null)
throw new Exception("User does not exist.");
- Set addresses = user.getAddresses();
- return addresses.stream()
+ return user.getAddresses()
+ .stream()
.filter(a -> a.getState()
.equals(state))
.collect(Collectors.toSet());
}
-
}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserUtility.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserUtility.java
index b7ed9208b2..e44e404588 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserUtility.java
+++ b/java-es-cqrs/src/main/java/com/baeldung/patterns/es/service/UserUtility.java
@@ -12,7 +12,6 @@ import com.baeldung.patterns.es.events.UserAddressRemovedEvent;
import com.baeldung.patterns.es.events.UserContactAddedEvent;
import com.baeldung.patterns.es.events.UserContactRemovedEvent;
import com.baeldung.patterns.es.events.UserCreatedEvent;
-import com.baeldung.patterns.es.events.UserRemovedEvent;
import com.baeldung.patterns.es.repository.EventStore;
public class UserUtility {
@@ -27,9 +26,6 @@ public class UserUtility {
user = new User(UUID.randomUUID()
.toString(), e.getFirstName(), e.getLastName());
}
- if (event instanceof UserRemovedEvent) {
- user = null;
- }
if (event instanceof UserAddressAddedEvent) {
UserAddressAddedEvent e = (UserAddressAddedEvent) event;
Address address = new Address(e.getCity(), e.getState(), e.getPostCode());
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/escqrs/projectors/UserProjector.java b/java-es-cqrs/src/main/java/com/baeldung/patterns/escqrs/projectors/UserProjector.java
index 036b6e8396..d388abe7cb 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/escqrs/projectors/UserProjector.java
+++ b/java-es-cqrs/src/main/java/com/baeldung/patterns/escqrs/projectors/UserProjector.java
@@ -2,6 +2,7 @@ package com.baeldung.patterns.escqrs.projectors;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import com.baeldung.patterns.cqrs.repository.UserReadRepository;
@@ -14,8 +15,6 @@ import com.baeldung.patterns.es.events.UserAddressAddedEvent;
import com.baeldung.patterns.es.events.UserAddressRemovedEvent;
import com.baeldung.patterns.es.events.UserContactAddedEvent;
import com.baeldung.patterns.es.events.UserContactRemovedEvent;
-import com.baeldung.patterns.es.events.UserCreatedEvent;
-import com.baeldung.patterns.es.events.UserRemovedEvent;
public class UserProjector {
@@ -28,10 +27,6 @@ public class UserProjector {
public void project(String userId, List events) {
for (Event event : events) {
- if (event instanceof UserCreatedEvent)
- apply(userId, (UserCreatedEvent) event);
- if (event instanceof UserRemovedEvent)
- apply(userId, (UserRemovedEvent) event);
if (event instanceof UserAddressAddedEvent)
apply(userId, (UserAddressAddedEvent) event);
if (event instanceof UserAddressRemovedEvent)
@@ -44,25 +39,13 @@ public class UserProjector {
}
- public void apply(String userId, UserCreatedEvent event) {
-
- }
-
- public void apply(String userId, UserRemovedEvent event) {
-
- }
-
public void apply(String userId, UserAddressAddedEvent event) {
Address address = new Address(event.getCity(), event.getState(), event.getPostCode());
- UserAddress userAddress = readRepository.getUserAddress(userId);
- if (userAddress == null)
- userAddress = new UserAddress();
- userAddress.getAddresses()
- .add(address);
- Set addresses = userAddress.getAddressByRegion()
- .get(address.getState());
- if (addresses == null)
- addresses = new HashSet<>();
+ UserAddress userAddress = Optional.ofNullable(readRepository.getUserAddress(userId))
+ .orElse(new UserAddress());
+ Set addresses = Optional.ofNullable(userAddress.getAddressByRegion()
+ .get(address.getState()))
+ .orElse(new HashSet<>());
addresses.add(address);
userAddress.getAddressByRegion()
.put(address.getState(), addresses);
@@ -73,30 +56,21 @@ public class UserProjector {
Address address = new Address(event.getCity(), event.getState(), event.getPostCode());
UserAddress userAddress = readRepository.getUserAddress(userId);
if (userAddress != null) {
- userAddress.getAddresses()
- .remove(address);
Set addresses = userAddress.getAddressByRegion()
.get(address.getState());
- if (addresses != null) {
+ if (addresses != null)
addresses.remove(address);
- userAddress.getAddressByRegion()
- .put(address.getState(), addresses);
- }
readRepository.addUserAddress(userId, userAddress);
}
}
public void apply(String userId, UserContactAddedEvent event) {
Contact contact = new Contact(event.getContactType(), event.getContactDetails());
- UserContact userContact = readRepository.getUserContact(userId);
- if (userContact == null)
- userContact = new UserContact();
- userContact.getContacts()
- .add(contact);
- Set contacts = userContact.getContactByType()
- .get(contact.getType());
- if (contacts == null)
- contacts = new HashSet<>();
+ UserContact userContact = Optional.ofNullable(readRepository.getUserContact(userId))
+ .orElse(new UserContact());
+ Set contacts = Optional.ofNullable(userContact.getContactByType()
+ .get(contact.getType()))
+ .orElse(new HashSet<>());
contacts.add(contact);
userContact.getContactByType()
.put(contact.getType(), contacts);
@@ -107,17 +81,11 @@ public class UserProjector {
Contact contact = new Contact(event.getContactType(), event.getContactDetails());
UserContact userContact = readRepository.getUserContact(userId);
if (userContact != null) {
- userContact.getContacts()
- .remove(contact);
Set contacts = userContact.getContactByType()
.get(contact.getType());
- if (contacts != null) {
+ if (contacts != null)
contacts.remove(contact);
- userContact.getContactByType()
- .put(contact.getType(), contacts);
- }
readRepository.addUserContact(userId, userContact);
}
}
-
}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/cqrs/Main.java b/java-es-cqrs/src/test/java/com/baeldung/patterns/cqrs/ApplicationUnitTest.java
similarity index 66%
rename from java-es-cqrs/src/main/java/com/baeldung/patterns/cqrs/Main.java
rename to java-es-cqrs/src/test/java/com/baeldung/patterns/cqrs/ApplicationUnitTest.java
index 4e9c872cf1..4a324e72f6 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/cqrs/Main.java
+++ b/java-es-cqrs/src/test/java/com/baeldung/patterns/cqrs/ApplicationUnitTest.java
@@ -1,9 +1,14 @@
package com.baeldung.patterns.cqrs;
+import static org.junit.Assert.assertEquals;
+
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.junit.Before;
+import org.junit.Test;
+
import com.baeldung.patterns.cqrs.aggregates.UserAggregate;
import com.baeldung.patterns.cqrs.commands.CreateUserCommand;
import com.baeldung.patterns.cqrs.commands.UpdateUserCommand;
@@ -17,15 +22,25 @@ import com.baeldung.patterns.domain.Address;
import com.baeldung.patterns.domain.Contact;
import com.baeldung.patterns.domain.User;
-public class Main {
+public class ApplicationUnitTest {
- public static void main(String[] args) throws Exception {
- UserWriteRepository writeRepository = new UserWriteRepository();
- UserReadRepository readRepository = new UserReadRepository();
- UserProjector projector = new UserProjector(readRepository);
- UserAggregate userAggregate = new UserAggregate(writeRepository);
- UserProjection userProjection = new UserProjection(readRepository);
+ private UserWriteRepository writeRepository;
+ private UserReadRepository readRepository;
+ private UserProjector projector;
+ private UserAggregate userAggregate;
+ private UserProjection userProjection;
+ @Before
+ public void setUp() {
+ writeRepository = new UserWriteRepository();
+ readRepository = new UserReadRepository();
+ projector = new UserProjector(readRepository);
+ userAggregate = new UserAggregate(writeRepository);
+ userProjection = new UserProjection(readRepository);
+ }
+
+ @Test
+ public void testApplication() throws Exception {
String userId = UUID.randomUUID()
.toString();
User user = null;
@@ -47,11 +62,13 @@ public class Main {
user = userAggregate.handleUpdateUserCommand(updateUserCommand);
projector.project(user);
- AddressByRegionQuery addressByRegionQuery = new AddressByRegionQuery(user.getUserid(), "NY");
- System.out.println(userProjection.handle(addressByRegionQuery));
+ ContactByTypeQuery contactByTypeQuery = new ContactByTypeQuery(userId, "EMAIL");
+ assertEquals(Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"))
+ .collect(Collectors.toSet()), userProjection.handle(contactByTypeQuery));
+ AddressByRegionQuery addressByRegionQuery = new AddressByRegionQuery(userId, "NY");
+ assertEquals(Stream.of(new Address("New York", "NY", "10001"))
+ .collect(Collectors.toSet()), userProjection.handle(addressByRegionQuery));
- ContactByTypeQuery contactByTypeQuery = new ContactByTypeQuery(user.getUserid(), "EMAIL");
- System.out.println(userProjection.handle(contactByTypeQuery));
}
}
diff --git a/java-es-cqrs/src/test/java/com/baeldung/patterns/crud/ApplicationUnitTest.java b/java-es-cqrs/src/test/java/com/baeldung/patterns/crud/ApplicationUnitTest.java
new file mode 100644
index 0000000000..28c113bf46
--- /dev/null
+++ b/java-es-cqrs/src/test/java/com/baeldung/patterns/crud/ApplicationUnitTest.java
@@ -0,0 +1,48 @@
+package com.baeldung.patterns.crud;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.UUID;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.baeldung.patterns.crud.repository.UserRepository;
+import com.baeldung.patterns.crud.service.UserService;
+import com.baeldung.patterns.domain.Address;
+import com.baeldung.patterns.domain.Contact;
+
+public class ApplicationUnitTest {
+
+ private UserRepository repository;
+
+ @Before
+ public void setUp() {
+ repository = new UserRepository();
+ }
+
+ @Test
+ public void testApplication() throws Exception {
+ UserService service = new UserService(repository);
+ String userId = UUID.randomUUID()
+ .toString();
+
+ service.createUser(userId, "Tom", "Sawyer");
+ service.updateUser(userId, Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"), new Contact("EMAIL", "tom.sawyer@rediff.com"), new Contact("PHONE", "700-000-0001"))
+ .collect(Collectors.toSet()),
+ Stream.of(new Address("New York", "NY", "10001"), new Address("Los Angeles", "CA", "90001"), new Address("Housten", "TX", "77001"))
+ .collect(Collectors.toSet()));
+ service.updateUser(userId, Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"), new Contact("PHONE", "700-000-0001"))
+ .collect(Collectors.toSet()),
+ Stream.of(new Address("New York", "NY", "10001"), new Address("Housten", "TX", "77001"))
+ .collect(Collectors.toSet()));
+
+ assertEquals(Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"))
+ .collect(Collectors.toSet()), service.getContactByType(userId, "EMAIL"));
+ assertEquals(Stream.of(new Address("New York", "NY", "10001"))
+ .collect(Collectors.toSet()), service.getAddressByRegion(userId, "NY"));
+ }
+
+}
diff --git a/java-es-cqrs/src/test/java/com/baeldung/patterns/es/ApplicationUnitTest.java b/java-es-cqrs/src/test/java/com/baeldung/patterns/es/ApplicationUnitTest.java
new file mode 100644
index 0000000000..52bdde449f
--- /dev/null
+++ b/java-es-cqrs/src/test/java/com/baeldung/patterns/es/ApplicationUnitTest.java
@@ -0,0 +1,50 @@
+package com.baeldung.patterns.es;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.UUID;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.baeldung.patterns.domain.Address;
+import com.baeldung.patterns.domain.Contact;
+import com.baeldung.patterns.es.repository.EventStore;
+import com.baeldung.patterns.es.service.UserService;
+
+public class ApplicationUnitTest {
+
+ private EventStore repository;
+ private UserService service;
+
+ @Before
+ public void setUp() {
+ repository = new EventStore();
+ service = new UserService(repository);
+ }
+
+ @Test
+ public void testApplication() throws Exception {
+ String userId = UUID.randomUUID()
+ .toString();
+
+ service.createUser(userId, "Tom", "Sawyer");
+ service.updateUser(userId, Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"), new Contact("EMAIL", "tom.sawyer@rediff.com"), new Contact("PHONE", "700-000-0001"))
+ .collect(Collectors.toSet()),
+ Stream.of(new Address("New York", "NY", "10001"), new Address("Los Angeles", "CA", "90001"), new Address("Housten", "TX", "77001"))
+ .collect(Collectors.toSet()));
+ service.updateUser(userId, Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"), new Contact("PHONE", "700-000-0001"))
+ .collect(Collectors.toSet()),
+ Stream.of(new Address("New York", "NY", "10001"), new Address("Housten", "TX", "77001"))
+ .collect(Collectors.toSet()));
+
+ assertEquals(Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"))
+ .collect(Collectors.toSet()), service.getContactByType(userId, "EMAIL"));
+ assertEquals(Stream.of(new Address("New York", "NY", "10001"))
+ .collect(Collectors.toSet()), service.getAddressByRegion(userId, "NY"));
+
+ }
+
+}
diff --git a/java-es-cqrs/src/main/java/com/baeldung/patterns/escqrs/Main.java b/java-es-cqrs/src/test/java/com/baeldung/patterns/escqrs/ApplicationUnitTest.java
similarity index 69%
rename from java-es-cqrs/src/main/java/com/baeldung/patterns/escqrs/Main.java
rename to java-es-cqrs/src/test/java/com/baeldung/patterns/escqrs/ApplicationUnitTest.java
index 44395a75a7..22cb5235d1 100644
--- a/java-es-cqrs/src/main/java/com/baeldung/patterns/escqrs/Main.java
+++ b/java-es-cqrs/src/test/java/com/baeldung/patterns/escqrs/ApplicationUnitTest.java
@@ -1,10 +1,15 @@
package com.baeldung.patterns.escqrs;
+import static org.junit.Assert.assertEquals;
+
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.junit.Before;
+import org.junit.Test;
+
import com.baeldung.patterns.cqrs.commands.CreateUserCommand;
import com.baeldung.patterns.cqrs.commands.UpdateUserCommand;
import com.baeldung.patterns.cqrs.projections.UserProjection;
@@ -18,16 +23,25 @@ import com.baeldung.patterns.es.repository.EventStore;
import com.baeldung.patterns.escqrs.aggregates.UserAggregate;
import com.baeldung.patterns.escqrs.projectors.UserProjector;
-public class Main {
+public class ApplicationUnitTest {
- public static void main(String[] args) throws Exception {
+ private EventStore writeRepository;
+ private UserReadRepository readRepository;
+ private UserProjector projector;
+ private UserAggregate userAggregate;
+ private UserProjection userProjection;
- EventStore writeRepository = new EventStore();
- UserReadRepository readRepository = new UserReadRepository();
- UserProjector projector = new UserProjector(readRepository);
- UserAggregate userAggregate = new UserAggregate(writeRepository);
- UserProjection userProjection = new UserProjection(readRepository);
+ @Before
+ public void setUp() {
+ writeRepository = new EventStore();
+ readRepository = new UserReadRepository();
+ projector = new UserProjector(readRepository);
+ userAggregate = new UserAggregate(writeRepository);
+ userProjection = new UserProjection(readRepository);
+ }
+ @Test
+ public void testApplication() throws Exception {
String userId = UUID.randomUUID()
.toString();
List events = null;
@@ -50,11 +64,12 @@ public class Main {
events = userAggregate.handleUpdateUserCommand(updateUserCommand);
projector.project(userId, events);
- AddressByRegionQuery addressByRegionQuery = new AddressByRegionQuery(userId, "NY");
- System.out.println(userProjection.handle(addressByRegionQuery));
-
ContactByTypeQuery contactByTypeQuery = new ContactByTypeQuery(userId, "EMAIL");
- System.out.println(userProjection.handle(contactByTypeQuery));
+ assertEquals(Stream.of(new Contact("EMAIL", "tom.sawyer@gmail.com"))
+ .collect(Collectors.toSet()), userProjection.handle(contactByTypeQuery));
+ AddressByRegionQuery addressByRegionQuery = new AddressByRegionQuery(userId, "NY");
+ assertEquals(Stream.of(new Address("New York", "NY", "10001"))
+ .collect(Collectors.toSet()), userProjection.handle(addressByRegionQuery));
}