feat: add peerDependencies

This commit is contained in:
2025-07-07 13:11:16 +02:00
parent 2093dd7097
commit dd1570d52e
36 changed files with 481 additions and 274 deletions

View File

@@ -8,7 +8,11 @@ export default describe<EventStoreFactory>(".makeAggregateReducer", (getEventSto
it("should reduce a user", async () => {
const { store } = await getEventStore();
const userA = await store.aggregate("user").create({ given: "John", family: "Doe" }, "john.doe@fixture.none").setGivenName("Jane").save();
const userA = await store
.aggregate("user")
.create({ given: "John", family: "Doe" }, "john.doe@fixture.none")
.setGivenName("Jane")
.save();
await userA.snapshot();

View File

@@ -82,7 +82,12 @@ export default describe<EventStoreFactory>(".makeReducer", (getEventStore) => {
}),
);
const state = await store.reduce({ name: "user", stream: streamA, reducer: userReducer, filter: { types: ["user:created", "user:email-set"] } });
const state = await store.reduce({
name: "user",
stream: streamA,
reducer: userReducer,
filter: { types: ["user:created", "user:email-set"] },
});
assertEquals(state?.name, { given: "John", family: "Doe" });
assertEquals(state?.email, "jane.doe@fixture.none");
@@ -100,10 +105,31 @@ export default describe<EventStoreFactory>(".makeReducer", (getEventStore) => {
const post2 = makeId();
const post3 = makeId();
await store.pushEvent(store.event({ stream: post1, type: "post:created", data: { title: "Post #1", body: "Sample #1" }, meta: { auditor } }));
await store.pushEvent(store.event({ stream: post2, type: "post:created", data: { title: "Post #2", body: "Sample #2" }, meta: { auditor } }));
await store.pushEvent(
store.event({
stream: post1,
type: "post:created",
data: { title: "Post #1", body: "Sample #1" },
meta: { auditor },
}),
);
await store.pushEvent(
store.event({
stream: post2,
type: "post:created",
data: { title: "Post #2", body: "Sample #2" },
meta: { auditor },
}),
);
await store.pushEvent(store.event({ stream: post2, type: "post:removed", meta: { auditor } }));
await store.pushEvent(store.event({ stream: post3, type: "post:created", data: { title: "Post #3", body: "Sample #3" }, meta: { auditor } }));
await store.pushEvent(
store.event({
stream: post3,
type: "post:created",
data: { title: "Post #3", body: "Sample #3" },
meta: { auditor },
}),
);
const events = await store.getEventsByRelations([`user:${auditor}:posts`]);

View File

@@ -25,7 +25,10 @@ export default describe<EventStoreFactory>(".pushAggregate", (getEventStore) =>
assertEquals(records.length, 3);
assertObjectMatch(records[0], { stream: user.id, data: { name: { given: "Jane", family: "Doe" }, email: "jane.doe@fixture.none" } });
assertObjectMatch(records[0], {
stream: user.id,
data: { name: { given: "Jane", family: "Doe" }, email: "jane.doe@fixture.none" },
});
assertObjectMatch(records[1], { stream: user.id, data: "John" });
assertObjectMatch(records[2], { stream: user.id, data: "john.doe@fixture.none", meta: { auditor: "admin" } });

View File

@@ -33,10 +33,16 @@ export default describe<EventStoreFactory>(".pushManyAggregates", (getEventStore
assertEquals(records.length, 6);
assertObjectMatch(records[0], { stream: userA.id, data: { name: { given: "Jane", family: "Doe" }, email: "jane.doe@fixture.none" } });
assertObjectMatch(records[0], {
stream: userA.id,
data: { name: { given: "Jane", family: "Doe" }, email: "jane.doe@fixture.none" },
});
assertObjectMatch(records[1], { stream: userA.id, data: "John" });
assertObjectMatch(records[2], { stream: userA.id, data: "john.doe@fixture.none", meta: { auditor: "admin" } });
assertObjectMatch(records[3], { stream: userB.id, data: { name: { given: "Peter", family: "Doe" }, email: "peter.doe@fixture.none" } });
assertObjectMatch(records[3], {
stream: userB.id,
data: { name: { given: "Peter", family: "Doe" }, email: "peter.doe@fixture.none" },
});
assertObjectMatch(records[4], { stream: userB.id, data: "Barry" });
assertObjectMatch(records[5], { stream: userB.id, data: "barry.doe@fixture.none", meta: { auditor: "admin" } });