-
-
Notifications
You must be signed in to change notification settings - Fork 39
/
ShoppingCartTests.java
69 lines (59 loc) · 2.07 KB
/
ShoppingCartTests.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package io.eventdriven.ecommerce.shoppingcarts;
import io.eventdriven.ecommerce.shoppingcarts.ShoppingCartEvent.ProductItemAddedToShoppingCart;
import io.eventdriven.ecommerce.shoppingcarts.ShoppingCartEvent.ProductItemRemovedFromShoppingCart;
import io.eventdriven.ecommerce.shoppingcarts.ShoppingCartEvent.ShoppingCartConfirmed;
import io.eventdriven.ecommerce.shoppingcarts.ShoppingCartEvent.ShoppingCartOpened;
import io.eventdriven.ecommerce.shoppingcarts.productitems.PricedProductItem;
import io.eventdriven.ecommerce.shoppingcarts.productitems.ProductItem;
import org.junit.jupiter.api.Test;
import java.time.OffsetDateTime;
import java.util.UUID;
import static org.junit.jupiter.api.Assertions.*;
public class ShoppingCartTests {
@Test
void aggregationWorks() {
var clientId = UUID.randomUUID();
var shoppingCartId = UUID.randomUUID();
var shoes = new PricedProductItem(
new ProductItem(UUID.randomUUID(), 1),
100
);
var tShirt = new PricedProductItem(
new ProductItem(UUID.randomUUID(), 2),
40
);
var events = new ShoppingCartEvent[]
{
new ShoppingCartOpened(
shoppingCartId,
clientId
),
new ProductItemAddedToShoppingCart(
shoppingCartId,
shoes
),
new ProductItemAddedToShoppingCart(
shoppingCartId,
tShirt
),
new ProductItemRemovedFromShoppingCart(
shoppingCartId,
shoes
),
new ShoppingCartConfirmed(
shoppingCartId,
OffsetDateTime.now()
)
};
ShoppingCart shoppingCart = ShoppingCart.empty();
for (var event : events) {
shoppingCart.when(event);
}
assertEquals(shoppingCart.id(), shoppingCartId);
assertEquals(shoppingCart.clientId(), clientId);
assertEquals(ShoppingCartStatus.Confirmed, shoppingCart.status());
assertEquals((long) shoppingCart.productItems().items().size(), 1);
var tShirtFromShoppingCart = shoppingCart.productItems().items().get(0);
assertEquals(tShirt, tShirtFromShoppingCart);
}
}