@reventlessdev/online-shop-aggregates-ordering 3.0.0-alpha.213 → 3.0.0-alpha.215
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/lib/bs/.compiler.log +2 -2
- package/lib/bs/compiler-info.json +1 -1
- package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts.ast +0 -0
- package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts.res.mjs +3 -2
- package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Customer/ReadModel/Customers_Projections-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Customer/ReadModel/Customers_Projections-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Extension/Products_Extension-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Extension/Products_Extension-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/ExtensionPoint/Orders_ExtensionPointMapping-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/ExtensionPoint/Orders_ExtensionPointMapping-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Order/Aggregate/Order-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Order/Aggregate/Order-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Order/Aggregate/Order.ast +0 -0
- package/lib/bs/src/Order/Aggregate/Order.res +3 -3
- package/lib/bs/src/Order/Aggregate/Order.res.mjs +16 -1
- package/lib/bs/src/Order/Aggregate/Order_Behavior-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Order/Aggregate/Order_Behavior-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Order/Aggregate/Order_Mappings-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Order/Aggregate/Order_Mappings-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Order/ReadModel/Orders-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Order/ReadModel/Orders-OrderingPlugin.cmj +0 -0
- package/lib/bs/src/Order/ReadModel/Orders-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Order/ReadModel/Orders.ast +0 -0
- package/lib/bs/src/Order/ReadModel/Orders.res +4 -2
- package/lib/bs/src/Order/ReadModel/Orders.res.mjs +5 -27
- package/lib/bs/src/Order/ReadModel/Orders_Projections-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Order/ReadModel/Orders_Projections-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Order/ReadModel/Orders_Projections.ast +0 -0
- package/lib/bs/src/Order/ReadModel/Orders_Projections.res +4 -4
- package/lib/bs/src/Order/ReadModel/Orders_Projections.res.mjs +4 -4
- package/lib/bs/src/Order/SideEffect/Order_EmailNotification-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Order/SideEffect/Order_EmailNotification-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Plugin-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Plugin-OrderingPlugin.cmt +0 -0
- package/lib/bs/src/Task/OrderNotifications-OrderingPlugin.cmi +0 -0
- package/lib/bs/src/Task/OrderNotifications-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/CatalogProduct/Aggregate/CatalogProduct_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/CatalogProduct/Aggregate/CatalogProduct_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/CatalogProduct/ReadModel/AvailableProducts_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/CatalogProduct/ReadModel/AvailableProducts_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Customer/Aggregate/Customer_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Customer/Aggregate/Customer_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Customer/ReadModel/Customers_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Customer/ReadModel/Customers_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Extension/Products_Extension_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Extension/Products_Extension_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/ExtensionPoint/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/ExtensionPoint/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Order/Aggregate/OrderMappings_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Order/Aggregate/OrderMappings_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Order/Aggregate/Order_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Order/Aggregate/Order_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Order/ReadModel/Orders_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Order/ReadModel/Orders_GWT-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Order/ReadModel/Orders_GWT.ast +0 -0
- package/lib/bs/tests/Order/ReadModel/Orders_GWT.res +4 -4
- package/lib/bs/tests/Order/ReadModel/Orders_GWT.res.mjs +4 -4
- package/lib/bs/tests/Order/SideEffect/EmailService_Mock-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Order/SideEffect/EmailService_Mock-OrderingPlugin.cmt +0 -0
- package/lib/bs/tests/Order/SideEffect/Order_EmailNotification_GWT-OrderingPlugin.cmi +0 -0
- package/lib/bs/tests/Order/SideEffect/Order_EmailNotification_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/.compiler.log +2 -2
- package/lib/ocaml/AvailableProducts-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/AvailableProducts-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/AvailableProducts.ast +0 -0
- package/lib/ocaml/AvailableProducts_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/AvailableProducts_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/AvailableProducts_Projections-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/AvailableProducts_Projections-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/CatalogProduct_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/CatalogProduct_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Customer_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Customer_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Customers_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Customers_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Customers_Projections-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Customers_Projections-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/EmailService_Mock-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/EmailService_Mock-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Order-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Order-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Order.ast +0 -0
- package/lib/ocaml/Order.res +3 -3
- package/lib/ocaml/OrderMappings_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/OrderMappings_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/OrderNotifications-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/OrderNotifications-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Order_Behavior-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Order_Behavior-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Order_EmailNotification-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Order_EmailNotification-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Order_EmailNotification_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Order_EmailNotification_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Order_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Order_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Order_Mappings-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Order_Mappings-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Orders-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Orders-OrderingPlugin.cmj +0 -0
- package/lib/ocaml/Orders-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Orders.ast +0 -0
- package/lib/ocaml/Orders.res +4 -2
- package/lib/ocaml/Orders_ExtensionPointMapping-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Orders_ExtensionPointMapping-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Orders_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Orders_GWT-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Orders_GWT.ast +0 -0
- package/lib/ocaml/Orders_GWT.res +4 -4
- package/lib/ocaml/Orders_Projections-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Orders_Projections-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Orders_Projections.ast +0 -0
- package/lib/ocaml/Orders_Projections.res +4 -4
- package/lib/ocaml/Plugin-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Plugin-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Products_Extension-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Products_Extension-OrderingPlugin.cmt +0 -0
- package/lib/ocaml/Products_Extension_GWT-OrderingPlugin.cmi +0 -0
- package/lib/ocaml/Products_Extension_GWT-OrderingPlugin.cmt +0 -0
- package/package.json +8 -8
- package/src/CatalogProduct/ReadModel/AvailableProducts.res.mjs +3 -2
- package/src/Order/Aggregate/Order.res +3 -3
- package/src/Order/Aggregate/Order.res.mjs +16 -1
- package/src/Order/ReadModel/Orders.res +4 -2
- package/src/Order/ReadModel/Orders.res.mjs +5 -27
- package/src/Order/ReadModel/Orders_Projections.res +4 -4
- package/src/Order/ReadModel/Orders_Projections.res.mjs +4 -4
- package/tests/Order/ReadModel/Orders_GWT.res +4 -4
- package/tests/Order/ReadModel/Orders_GWT.res.mjs +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,20 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 3.0.0-alpha.215 (2026-08-16)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **ppx:** declare a command's lifecycle edge once, as [@transition](https://github.com/transition) ([dd35130](https://github.com/ReventlessDev/reventless-core/commit/dd3513014f14b71879ee21263c6755d3c3d95096))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# 3.0.0-alpha.214 (2026-08-16)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **spec:** [@retired](https://github.com/retired) state-field annotation and its schema emission ([2d8234b](https://github.com/ReventlessDev/reventless-core/commit/2d8234b6b3dd8f479031a67eb5b4b47b5c0c2ff9))
|
|
18
|
+
|
|
19
|
+
|
|
6
20
|
# 3.0.0-alpha.213 (2026-08-15)
|
|
7
21
|
|
|
8
22
|
**Note:** Version bump only for package @reventlessdev/online-shop-aggregates-ordering
|
package/lib/bs/.compiler.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#Start(
|
|
2
|
-
#Done(
|
|
1
|
+
#Start(1786902389877)
|
|
2
|
+
#Done(1786902395231)
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
"bsc_hash": "75e3a59c95cc953608fd3dd6ea6ed68141bba4414a20a52f114261b8a48385fa",
|
|
5
5
|
"rescript_config_hash": "4c884bf958b93b21c77764e35498f269b81377cfcc324135f1ab7a1cc5b569cb",
|
|
6
6
|
"runtime_path": "/home/runner/work/reventless-core/reventless-core/node_modules/@rescript/runtime",
|
|
7
|
-
"generated_at": "
|
|
7
|
+
"generated_at": "1786902395243"
|
|
8
8
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -26,10 +26,11 @@ let stateSchema$1 = S.Metadata.set(stateSchema, StateAnnotations$Reventless.stat
|
|
|
26
26
|
scanSort: [],
|
|
27
27
|
semantic: [],
|
|
28
28
|
metric: [],
|
|
29
|
-
|
|
29
|
+
lifecycle: undefined,
|
|
30
30
|
groupBy: undefined,
|
|
31
31
|
visibility: "Internal",
|
|
32
|
-
live: undefined
|
|
32
|
+
live: undefined,
|
|
33
|
+
retired: undefined
|
|
33
34
|
});
|
|
34
35
|
|
|
35
36
|
let name = "AvailableProducts";
|
package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections-OrderingPlugin.cmi
CHANGED
|
Binary file
|
package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections-OrderingPlugin.cmt
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
@schema
|
|
7
7
|
type command =
|
|
8
8
|
| Place({customerId: string, @ref("AvailableProducts") @noDcbTag productIds: array<string>})
|
|
9
|
-
| @
|
|
10
|
-
| @
|
|
11
|
-
| @
|
|
9
|
+
| @transition(([Orders.Placed]) => Orders.Shipped) Ship
|
|
10
|
+
| @transition(([Orders.Placed]) => Orders.Cancelled) Cancel
|
|
11
|
+
| @transition(([Orders.Cancelled]) => Orders.Refunded) Refund({reason: string})
|
|
12
12
|
|
|
13
13
|
@schema
|
|
14
14
|
type event =
|
|
@@ -59,6 +59,21 @@ let commandSchema$1 = Api$ReventlessInfra.markAllowedStates(commandSchema, [
|
|
|
59
59
|
]
|
|
60
60
|
]);
|
|
61
61
|
|
|
62
|
+
let commandSchema$2 = Api$ReventlessInfra.markTargetState(commandSchema$1, [
|
|
63
|
+
[
|
|
64
|
+
"Ship",
|
|
65
|
+
"Shipped"
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
"Cancel",
|
|
69
|
+
"Cancelled"
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
"Refund",
|
|
73
|
+
"Refunded"
|
|
74
|
+
]
|
|
75
|
+
]);
|
|
76
|
+
|
|
62
77
|
function commandAuthorization(param) {
|
|
63
78
|
return "AllowAuthenticated";
|
|
64
79
|
}
|
|
@@ -74,7 +89,7 @@ export {
|
|
|
74
89
|
Id,
|
|
75
90
|
eventSchema,
|
|
76
91
|
errorSchema,
|
|
77
|
-
commandSchema$
|
|
92
|
+
commandSchema$2 as commandSchema,
|
|
78
93
|
moduleUrl,
|
|
79
94
|
commandAuthorization,
|
|
80
95
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
@@reventless.spec
|
|
5
5
|
|
|
6
6
|
@schema
|
|
7
|
-
type
|
|
7
|
+
type lifecycle =
|
|
8
8
|
| Placed
|
|
9
9
|
| Shipped
|
|
10
10
|
| Cancelled
|
|
@@ -14,6 +14,8 @@ type status =
|
|
|
14
14
|
type state = {
|
|
15
15
|
customerId: string,
|
|
16
16
|
productIds: array<string>,
|
|
17
|
-
|
|
17
|
+
// No annotation: the field name is the declaration. `@lifecycle` exists for
|
|
18
|
+
// records whose lifecycle field is honestly called something else.
|
|
19
|
+
lifecycle: lifecycle,
|
|
18
20
|
}
|
|
19
21
|
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import * as S from "sury/src/S.res.mjs";
|
|
4
4
|
import * as ReadModel$Reventless from "@reventlessdev/reventless-spec/src/components/ReadModel.res.mjs";
|
|
5
|
-
import * as StateAnnotations$Reventless from "@reventlessdev/reventless-spec/src/components/StateAnnotations.res.mjs";
|
|
6
5
|
|
|
7
|
-
let
|
|
6
|
+
let lifecycleSchema = S.union([
|
|
8
7
|
S.literal("Placed"),
|
|
9
8
|
S.literal("Shipped"),
|
|
10
9
|
S.literal("Cancelled"),
|
|
@@ -14,32 +13,11 @@ let statusSchema = S.union([
|
|
|
14
13
|
let stateSchema = S.schema(s => ({
|
|
15
14
|
customerId: s.m(S.string),
|
|
16
15
|
productIds: s.m(S.array(S.string)),
|
|
17
|
-
|
|
16
|
+
lifecycle: s.m(lifecycleSchema)
|
|
18
17
|
}));
|
|
19
18
|
|
|
20
19
|
let config = ReadModel$Reventless.config(undefined, undefined, undefined);
|
|
21
20
|
|
|
22
|
-
let stateSchema$1 = S.Metadata.set(stateSchema, StateAnnotations$Reventless.stateAnnotationsId, {
|
|
23
|
-
ids: [],
|
|
24
|
-
compositeIds: [],
|
|
25
|
-
subIds: [],
|
|
26
|
-
compositeSubIds: [],
|
|
27
|
-
indexes: [],
|
|
28
|
-
hidden: [],
|
|
29
|
-
summary: [],
|
|
30
|
-
drillTargets: [],
|
|
31
|
-
drillTargetKeys: [],
|
|
32
|
-
collapsed: [],
|
|
33
|
-
scan: [],
|
|
34
|
-
scanSort: [],
|
|
35
|
-
semantic: [],
|
|
36
|
-
metric: [],
|
|
37
|
-
status: "status",
|
|
38
|
-
groupBy: undefined,
|
|
39
|
-
visibility: undefined,
|
|
40
|
-
live: undefined
|
|
41
|
-
});
|
|
42
|
-
|
|
43
21
|
let name = "Orders";
|
|
44
22
|
|
|
45
23
|
let Id;
|
|
@@ -55,12 +33,12 @@ let visibility = "Public";
|
|
|
55
33
|
export {
|
|
56
34
|
name,
|
|
57
35
|
Id,
|
|
58
|
-
|
|
36
|
+
lifecycleSchema,
|
|
37
|
+
stateSchema,
|
|
59
38
|
config,
|
|
60
39
|
subIdConfig,
|
|
61
|
-
stateSchema$1 as stateSchema,
|
|
62
40
|
moduleUrl,
|
|
63
41
|
authorization,
|
|
64
42
|
visibility,
|
|
65
43
|
}
|
|
66
|
-
/*
|
|
44
|
+
/* lifecycleSchema Not a pure module */
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -15,15 +15,15 @@ module OrderMapping = Mapping.Make(
|
|
|
15
15
|
{
|
|
16
16
|
Orders.customerId: customerId,
|
|
17
17
|
productIds,
|
|
18
|
-
|
|
18
|
+
lifecycle: (Placed: Orders.lifecycle),
|
|
19
19
|
},
|
|
20
20
|
)
|
|
21
21
|
| Shipped =>
|
|
22
|
-
Update(id, state => {...state,
|
|
22
|
+
Update(id, state => {...state, lifecycle: (Shipped: Orders.lifecycle)})
|
|
23
23
|
| Cancelled(_) =>
|
|
24
|
-
Update(id, state => {...state,
|
|
24
|
+
Update(id, state => {...state, lifecycle: (Cancelled: Orders.lifecycle)})
|
|
25
25
|
| Refunded(_) =>
|
|
26
|
-
Update(id, state => {...state,
|
|
26
|
+
Update(id, state => {...state, lifecycle: (Refunded: Orders.lifecycle)})
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
)
|
|
@@ -22,7 +22,7 @@ function project(param) {
|
|
|
22
22
|
_1: state => ({
|
|
23
23
|
customerId: state.customerId,
|
|
24
24
|
productIds: state.productIds,
|
|
25
|
-
|
|
25
|
+
lifecycle: "Shipped"
|
|
26
26
|
})
|
|
27
27
|
};
|
|
28
28
|
}
|
|
@@ -34,7 +34,7 @@ function project(param) {
|
|
|
34
34
|
_1: {
|
|
35
35
|
customerId: event.customerId,
|
|
36
36
|
productIds: event.productIds,
|
|
37
|
-
|
|
37
|
+
lifecycle: "Placed"
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
case "Cancelled" :
|
|
@@ -44,7 +44,7 @@ function project(param) {
|
|
|
44
44
|
_1: state => ({
|
|
45
45
|
customerId: state.customerId,
|
|
46
46
|
productIds: state.productIds,
|
|
47
|
-
|
|
47
|
+
lifecycle: "Cancelled"
|
|
48
48
|
})
|
|
49
49
|
};
|
|
50
50
|
case "Refunded" :
|
|
@@ -54,7 +54,7 @@ function project(param) {
|
|
|
54
54
|
_1: state => ({
|
|
55
55
|
customerId: state.customerId,
|
|
56
56
|
productIds: state.productIds,
|
|
57
|
-
|
|
57
|
+
lifecycle: "Refunded"
|
|
58
58
|
})
|
|
59
59
|
};
|
|
60
60
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -7,7 +7,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
7
7
|
->thenState({
|
|
8
8
|
Orders.customerId: "cust-1",
|
|
9
9
|
productIds: ["prod-1", "prod-2"],
|
|
10
|
-
|
|
10
|
+
lifecycle: Placed,
|
|
11
11
|
})
|
|
12
12
|
)
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
17
17
|
->thenState({
|
|
18
18
|
Orders.customerId: "cust-1",
|
|
19
19
|
productIds: ["prod-1"],
|
|
20
|
-
|
|
20
|
+
lifecycle: Shipped,
|
|
21
21
|
})
|
|
22
22
|
)
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
27
27
|
->thenState({
|
|
28
28
|
Orders.customerId: "cust-1",
|
|
29
29
|
productIds: ["prod-1"],
|
|
30
|
-
|
|
30
|
+
lifecycle: Cancelled,
|
|
31
31
|
})
|
|
32
32
|
)
|
|
33
33
|
|
|
@@ -40,7 +40,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
40
40
|
->thenState({
|
|
41
41
|
Orders.customerId: "cust-1",
|
|
42
42
|
productIds: ["prod-1"],
|
|
43
|
-
|
|
43
|
+
lifecycle: Refunded,
|
|
44
44
|
})
|
|
45
45
|
)
|
|
46
46
|
})
|
|
@@ -29,7 +29,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
29
29
|
"prod-1",
|
|
30
30
|
"prod-2"
|
|
31
31
|
],
|
|
32
|
-
|
|
32
|
+
lifecycle: "Placed"
|
|
33
33
|
}));
|
|
34
34
|
test("Shipped updates status", undefined, () => thenState(whenEvent(givenEvents([{
|
|
35
35
|
TAG: "Placed",
|
|
@@ -38,7 +38,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
38
38
|
}]), "Shipped"), {
|
|
39
39
|
customerId: "cust-1",
|
|
40
40
|
productIds: ["prod-1"],
|
|
41
|
-
|
|
41
|
+
lifecycle: "Shipped"
|
|
42
42
|
}));
|
|
43
43
|
test("Cancelled updates status", undefined, () => thenState(whenEvent(givenEvents([{
|
|
44
44
|
TAG: "Placed",
|
|
@@ -50,7 +50,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
50
50
|
}), {
|
|
51
51
|
customerId: "cust-1",
|
|
52
52
|
productIds: ["prod-1"],
|
|
53
|
-
|
|
53
|
+
lifecycle: "Cancelled"
|
|
54
54
|
}));
|
|
55
55
|
test("Refunded updates status", undefined, () => thenState(whenEvent(givenEvents([
|
|
56
56
|
{
|
|
@@ -68,7 +68,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
68
68
|
}), {
|
|
69
69
|
customerId: "cust-1",
|
|
70
70
|
productIds: ["prod-1"],
|
|
71
|
-
|
|
71
|
+
lifecycle: "Refunded"
|
|
72
72
|
}));
|
|
73
73
|
});
|
|
74
74
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/ocaml/.compiler.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#Start(
|
|
2
|
-
#Done(
|
|
1
|
+
#Start(1786902389877)
|
|
2
|
+
#Done(1786902395231)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/ocaml/Order.ast
CHANGED
|
Binary file
|
package/lib/ocaml/Order.res
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
@schema
|
|
7
7
|
type command =
|
|
8
8
|
| Place({customerId: string, @ref("AvailableProducts") @noDcbTag productIds: array<string>})
|
|
9
|
-
| @
|
|
10
|
-
| @
|
|
11
|
-
| @
|
|
9
|
+
| @transition(([Orders.Placed]) => Orders.Shipped) Ship
|
|
10
|
+
| @transition(([Orders.Placed]) => Orders.Cancelled) Cancel
|
|
11
|
+
| @transition(([Orders.Cancelled]) => Orders.Refunded) Refund({reason: string})
|
|
12
12
|
|
|
13
13
|
@schema
|
|
14
14
|
type event =
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/ocaml/Orders.ast
CHANGED
|
Binary file
|
package/lib/ocaml/Orders.res
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
@@reventless.spec
|
|
5
5
|
|
|
6
6
|
@schema
|
|
7
|
-
type
|
|
7
|
+
type lifecycle =
|
|
8
8
|
| Placed
|
|
9
9
|
| Shipped
|
|
10
10
|
| Cancelled
|
|
@@ -14,6 +14,8 @@ type status =
|
|
|
14
14
|
type state = {
|
|
15
15
|
customerId: string,
|
|
16
16
|
productIds: array<string>,
|
|
17
|
-
|
|
17
|
+
// No annotation: the field name is the declaration. `@lifecycle` exists for
|
|
18
|
+
// records whose lifecycle field is honestly called something else.
|
|
19
|
+
lifecycle: lifecycle,
|
|
18
20
|
}
|
|
19
21
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/ocaml/Orders_GWT.ast
CHANGED
|
Binary file
|
package/lib/ocaml/Orders_GWT.res
CHANGED
|
@@ -7,7 +7,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
7
7
|
->thenState({
|
|
8
8
|
Orders.customerId: "cust-1",
|
|
9
9
|
productIds: ["prod-1", "prod-2"],
|
|
10
|
-
|
|
10
|
+
lifecycle: Placed,
|
|
11
11
|
})
|
|
12
12
|
)
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
17
17
|
->thenState({
|
|
18
18
|
Orders.customerId: "cust-1",
|
|
19
19
|
productIds: ["prod-1"],
|
|
20
|
-
|
|
20
|
+
lifecycle: Shipped,
|
|
21
21
|
})
|
|
22
22
|
)
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
27
27
|
->thenState({
|
|
28
28
|
Orders.customerId: "cust-1",
|
|
29
29
|
productIds: ["prod-1"],
|
|
30
|
-
|
|
30
|
+
lifecycle: Cancelled,
|
|
31
31
|
})
|
|
32
32
|
)
|
|
33
33
|
|
|
@@ -40,7 +40,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
40
40
|
->thenState({
|
|
41
41
|
Orders.customerId: "cust-1",
|
|
42
42
|
productIds: ["prod-1"],
|
|
43
|
-
|
|
43
|
+
lifecycle: Refunded,
|
|
44
44
|
})
|
|
45
45
|
)
|
|
46
46
|
})
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -15,15 +15,15 @@ module OrderMapping = Mapping.Make(
|
|
|
15
15
|
{
|
|
16
16
|
Orders.customerId: customerId,
|
|
17
17
|
productIds,
|
|
18
|
-
|
|
18
|
+
lifecycle: (Placed: Orders.lifecycle),
|
|
19
19
|
},
|
|
20
20
|
)
|
|
21
21
|
| Shipped =>
|
|
22
|
-
Update(id, state => {...state,
|
|
22
|
+
Update(id, state => {...state, lifecycle: (Shipped: Orders.lifecycle)})
|
|
23
23
|
| Cancelled(_) =>
|
|
24
|
-
Update(id, state => {...state,
|
|
24
|
+
Update(id, state => {...state, lifecycle: (Cancelled: Orders.lifecycle)})
|
|
25
25
|
| Refunded(_) =>
|
|
26
|
-
Update(id, state => {...state,
|
|
26
|
+
Update(id, state => {...state, lifecycle: (Refunded: Orders.lifecycle)})
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reventlessdev/online-shop-aggregates-ordering",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.215",
|
|
4
4
|
"description": "Online Shop example — Ordering plugin (Customer & Order aggregates)",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"jest": {
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"sury": "^11.0.0-alpha.4",
|
|
24
|
-
"@reventlessdev/online-shop-aggregates-catalog-spec": "3.0.0-alpha.
|
|
25
|
-
"@reventlessdev/online-shop-aggregates-ordering-spec": "3.0.0-alpha.
|
|
24
|
+
"@reventlessdev/online-shop-aggregates-catalog-spec": "3.0.0-alpha.115",
|
|
25
|
+
"@reventlessdev/online-shop-aggregates-ordering-spec": "3.0.0-alpha.115",
|
|
26
26
|
"@reventlessdev/rescript-pulumi-pulumi": "2.3.0-alpha.19",
|
|
27
|
-
"@reventlessdev/reventless-gwt": "1.0.0-alpha.
|
|
28
|
-
"@reventlessdev/reventless-infra": "3.0.0-alpha.
|
|
29
|
-
"@reventlessdev/reventless-local": "3.0.0-alpha.
|
|
30
|
-
"@reventlessdev/reventless-spec": "3.0.0-alpha.
|
|
27
|
+
"@reventlessdev/reventless-gwt": "1.0.0-alpha.185",
|
|
28
|
+
"@reventlessdev/reventless-infra": "3.0.0-alpha.144",
|
|
29
|
+
"@reventlessdev/reventless-local": "3.0.0-alpha.226",
|
|
30
|
+
"@reventlessdev/reventless-spec": "3.0.0-alpha.116"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"rescript": "12.3.0",
|
|
34
34
|
"sury-ppx": "11.0.0-alpha.2",
|
|
35
|
-
"@reventlessdev/reventless-ppx": "1.0.0-alpha.
|
|
35
|
+
"@reventlessdev/reventless-ppx": "1.0.0-alpha.68"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"rescript": "12.3.0"
|
|
@@ -26,10 +26,11 @@ let stateSchema$1 = S.Metadata.set(stateSchema, StateAnnotations$Reventless.stat
|
|
|
26
26
|
scanSort: [],
|
|
27
27
|
semantic: [],
|
|
28
28
|
metric: [],
|
|
29
|
-
|
|
29
|
+
lifecycle: undefined,
|
|
30
30
|
groupBy: undefined,
|
|
31
31
|
visibility: "Internal",
|
|
32
|
-
live: undefined
|
|
32
|
+
live: undefined,
|
|
33
|
+
retired: undefined
|
|
33
34
|
});
|
|
34
35
|
|
|
35
36
|
let name = "AvailableProducts";
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
@schema
|
|
7
7
|
type command =
|
|
8
8
|
| Place({customerId: string, @ref("AvailableProducts") @noDcbTag productIds: array<string>})
|
|
9
|
-
| @
|
|
10
|
-
| @
|
|
11
|
-
| @
|
|
9
|
+
| @transition(([Orders.Placed]) => Orders.Shipped) Ship
|
|
10
|
+
| @transition(([Orders.Placed]) => Orders.Cancelled) Cancel
|
|
11
|
+
| @transition(([Orders.Cancelled]) => Orders.Refunded) Refund({reason: string})
|
|
12
12
|
|
|
13
13
|
@schema
|
|
14
14
|
type event =
|
|
@@ -59,6 +59,21 @@ let commandSchema$1 = Api$ReventlessInfra.markAllowedStates(commandSchema, [
|
|
|
59
59
|
]
|
|
60
60
|
]);
|
|
61
61
|
|
|
62
|
+
let commandSchema$2 = Api$ReventlessInfra.markTargetState(commandSchema$1, [
|
|
63
|
+
[
|
|
64
|
+
"Ship",
|
|
65
|
+
"Shipped"
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
"Cancel",
|
|
69
|
+
"Cancelled"
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
"Refund",
|
|
73
|
+
"Refunded"
|
|
74
|
+
]
|
|
75
|
+
]);
|
|
76
|
+
|
|
62
77
|
function commandAuthorization(param) {
|
|
63
78
|
return "AllowAuthenticated";
|
|
64
79
|
}
|
|
@@ -74,7 +89,7 @@ export {
|
|
|
74
89
|
Id,
|
|
75
90
|
eventSchema,
|
|
76
91
|
errorSchema,
|
|
77
|
-
commandSchema$
|
|
92
|
+
commandSchema$2 as commandSchema,
|
|
78
93
|
moduleUrl,
|
|
79
94
|
commandAuthorization,
|
|
80
95
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
@@reventless.spec
|
|
5
5
|
|
|
6
6
|
@schema
|
|
7
|
-
type
|
|
7
|
+
type lifecycle =
|
|
8
8
|
| Placed
|
|
9
9
|
| Shipped
|
|
10
10
|
| Cancelled
|
|
@@ -14,6 +14,8 @@ type status =
|
|
|
14
14
|
type state = {
|
|
15
15
|
customerId: string,
|
|
16
16
|
productIds: array<string>,
|
|
17
|
-
|
|
17
|
+
// No annotation: the field name is the declaration. `@lifecycle` exists for
|
|
18
|
+
// records whose lifecycle field is honestly called something else.
|
|
19
|
+
lifecycle: lifecycle,
|
|
18
20
|
}
|
|
19
21
|
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import * as S from "sury/src/S.res.mjs";
|
|
4
4
|
import * as ReadModel$Reventless from "@reventlessdev/reventless-spec/src/components/ReadModel.res.mjs";
|
|
5
|
-
import * as StateAnnotations$Reventless from "@reventlessdev/reventless-spec/src/components/StateAnnotations.res.mjs";
|
|
6
5
|
|
|
7
|
-
let
|
|
6
|
+
let lifecycleSchema = S.union([
|
|
8
7
|
S.literal("Placed"),
|
|
9
8
|
S.literal("Shipped"),
|
|
10
9
|
S.literal("Cancelled"),
|
|
@@ -14,32 +13,11 @@ let statusSchema = S.union([
|
|
|
14
13
|
let stateSchema = S.schema(s => ({
|
|
15
14
|
customerId: s.m(S.string),
|
|
16
15
|
productIds: s.m(S.array(S.string)),
|
|
17
|
-
|
|
16
|
+
lifecycle: s.m(lifecycleSchema)
|
|
18
17
|
}));
|
|
19
18
|
|
|
20
19
|
let config = ReadModel$Reventless.config(undefined, undefined, undefined);
|
|
21
20
|
|
|
22
|
-
let stateSchema$1 = S.Metadata.set(stateSchema, StateAnnotations$Reventless.stateAnnotationsId, {
|
|
23
|
-
ids: [],
|
|
24
|
-
compositeIds: [],
|
|
25
|
-
subIds: [],
|
|
26
|
-
compositeSubIds: [],
|
|
27
|
-
indexes: [],
|
|
28
|
-
hidden: [],
|
|
29
|
-
summary: [],
|
|
30
|
-
drillTargets: [],
|
|
31
|
-
drillTargetKeys: [],
|
|
32
|
-
collapsed: [],
|
|
33
|
-
scan: [],
|
|
34
|
-
scanSort: [],
|
|
35
|
-
semantic: [],
|
|
36
|
-
metric: [],
|
|
37
|
-
status: "status",
|
|
38
|
-
groupBy: undefined,
|
|
39
|
-
visibility: undefined,
|
|
40
|
-
live: undefined
|
|
41
|
-
});
|
|
42
|
-
|
|
43
21
|
let name = "Orders";
|
|
44
22
|
|
|
45
23
|
let Id;
|
|
@@ -55,12 +33,12 @@ let visibility = "Public";
|
|
|
55
33
|
export {
|
|
56
34
|
name,
|
|
57
35
|
Id,
|
|
58
|
-
|
|
36
|
+
lifecycleSchema,
|
|
37
|
+
stateSchema,
|
|
59
38
|
config,
|
|
60
39
|
subIdConfig,
|
|
61
|
-
stateSchema$1 as stateSchema,
|
|
62
40
|
moduleUrl,
|
|
63
41
|
authorization,
|
|
64
42
|
visibility,
|
|
65
43
|
}
|
|
66
|
-
/*
|
|
44
|
+
/* lifecycleSchema Not a pure module */
|
|
@@ -15,15 +15,15 @@ module OrderMapping = Mapping.Make(
|
|
|
15
15
|
{
|
|
16
16
|
Orders.customerId: customerId,
|
|
17
17
|
productIds,
|
|
18
|
-
|
|
18
|
+
lifecycle: (Placed: Orders.lifecycle),
|
|
19
19
|
},
|
|
20
20
|
)
|
|
21
21
|
| Shipped =>
|
|
22
|
-
Update(id, state => {...state,
|
|
22
|
+
Update(id, state => {...state, lifecycle: (Shipped: Orders.lifecycle)})
|
|
23
23
|
| Cancelled(_) =>
|
|
24
|
-
Update(id, state => {...state,
|
|
24
|
+
Update(id, state => {...state, lifecycle: (Cancelled: Orders.lifecycle)})
|
|
25
25
|
| Refunded(_) =>
|
|
26
|
-
Update(id, state => {...state,
|
|
26
|
+
Update(id, state => {...state, lifecycle: (Refunded: Orders.lifecycle)})
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
)
|
|
@@ -22,7 +22,7 @@ function project(param) {
|
|
|
22
22
|
_1: state => ({
|
|
23
23
|
customerId: state.customerId,
|
|
24
24
|
productIds: state.productIds,
|
|
25
|
-
|
|
25
|
+
lifecycle: "Shipped"
|
|
26
26
|
})
|
|
27
27
|
};
|
|
28
28
|
}
|
|
@@ -34,7 +34,7 @@ function project(param) {
|
|
|
34
34
|
_1: {
|
|
35
35
|
customerId: event.customerId,
|
|
36
36
|
productIds: event.productIds,
|
|
37
|
-
|
|
37
|
+
lifecycle: "Placed"
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
case "Cancelled" :
|
|
@@ -44,7 +44,7 @@ function project(param) {
|
|
|
44
44
|
_1: state => ({
|
|
45
45
|
customerId: state.customerId,
|
|
46
46
|
productIds: state.productIds,
|
|
47
|
-
|
|
47
|
+
lifecycle: "Cancelled"
|
|
48
48
|
})
|
|
49
49
|
};
|
|
50
50
|
case "Refunded" :
|
|
@@ -54,7 +54,7 @@ function project(param) {
|
|
|
54
54
|
_1: state => ({
|
|
55
55
|
customerId: state.customerId,
|
|
56
56
|
productIds: state.productIds,
|
|
57
|
-
|
|
57
|
+
lifecycle: "Refunded"
|
|
58
58
|
})
|
|
59
59
|
};
|
|
60
60
|
}
|
|
@@ -7,7 +7,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
7
7
|
->thenState({
|
|
8
8
|
Orders.customerId: "cust-1",
|
|
9
9
|
productIds: ["prod-1", "prod-2"],
|
|
10
|
-
|
|
10
|
+
lifecycle: Placed,
|
|
11
11
|
})
|
|
12
12
|
)
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
17
17
|
->thenState({
|
|
18
18
|
Orders.customerId: "cust-1",
|
|
19
19
|
productIds: ["prod-1"],
|
|
20
|
-
|
|
20
|
+
lifecycle: Shipped,
|
|
21
21
|
})
|
|
22
22
|
)
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
27
27
|
->thenState({
|
|
28
28
|
Orders.customerId: "cust-1",
|
|
29
29
|
productIds: ["prod-1"],
|
|
30
|
-
|
|
30
|
+
lifecycle: Cancelled,
|
|
31
31
|
})
|
|
32
32
|
)
|
|
33
33
|
|
|
@@ -40,7 +40,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
40
40
|
->thenState({
|
|
41
41
|
Orders.customerId: "cust-1",
|
|
42
42
|
productIds: ["prod-1"],
|
|
43
|
-
|
|
43
|
+
lifecycle: Refunded,
|
|
44
44
|
})
|
|
45
45
|
)
|
|
46
46
|
})
|
|
@@ -29,7 +29,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
29
29
|
"prod-1",
|
|
30
30
|
"prod-2"
|
|
31
31
|
],
|
|
32
|
-
|
|
32
|
+
lifecycle: "Placed"
|
|
33
33
|
}));
|
|
34
34
|
test("Shipped updates status", undefined, () => thenState(whenEvent(givenEvents([{
|
|
35
35
|
TAG: "Placed",
|
|
@@ -38,7 +38,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
38
38
|
}]), "Shipped"), {
|
|
39
39
|
customerId: "cust-1",
|
|
40
40
|
productIds: ["prod-1"],
|
|
41
|
-
|
|
41
|
+
lifecycle: "Shipped"
|
|
42
42
|
}));
|
|
43
43
|
test("Cancelled updates status", undefined, () => thenState(whenEvent(givenEvents([{
|
|
44
44
|
TAG: "Placed",
|
|
@@ -50,7 +50,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
50
50
|
}), {
|
|
51
51
|
customerId: "cust-1",
|
|
52
52
|
productIds: ["prod-1"],
|
|
53
|
-
|
|
53
|
+
lifecycle: "Cancelled"
|
|
54
54
|
}));
|
|
55
55
|
test("Refunded updates status", undefined, () => thenState(whenEvent(givenEvents([
|
|
56
56
|
{
|
|
@@ -68,7 +68,7 @@ describe("Orders ReadModel ← Order", () => {
|
|
|
68
68
|
}), {
|
|
69
69
|
customerId: "cust-1",
|
|
70
70
|
productIds: ["prod-1"],
|
|
71
|
-
|
|
71
|
+
lifecycle: "Refunded"
|
|
72
72
|
}));
|
|
73
73
|
});
|
|
74
74
|
|