feat: version 2 beta
This commit is contained in:
61
tests/adapters/mocks/user-reducer.ts
Normal file
61
tests/adapters/mocks/user-reducer.ts
Normal file
@@ -0,0 +1,61 @@
|
||||
import { makeReducer } from "../../../libraries/reducer.ts";
|
||||
import { EventStoreFactory } from "./events.ts";
|
||||
|
||||
export const userReducer = makeReducer<EventStoreFactory, UserState>(
|
||||
(state, event) => {
|
||||
switch (event.type) {
|
||||
case "user:created": {
|
||||
state.name.given = event.data.name?.given ?? "";
|
||||
state.name.family = event.data.name?.family ?? "";
|
||||
state.email = event.data.email;
|
||||
break;
|
||||
}
|
||||
case "user:name:given-set": {
|
||||
state.name.given = event.data;
|
||||
break;
|
||||
}
|
||||
case "user:name:family-set": {
|
||||
state.name.family = event.data;
|
||||
break;
|
||||
}
|
||||
case "user:email-set": {
|
||||
state.email = event.data;
|
||||
break;
|
||||
}
|
||||
case "user:activated": {
|
||||
state.active = true;
|
||||
break;
|
||||
}
|
||||
case "user:deactivated": {
|
||||
state.active = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return state;
|
||||
},
|
||||
() => ({
|
||||
name: {
|
||||
given: "",
|
||||
family: "",
|
||||
},
|
||||
email: "",
|
||||
active: true,
|
||||
posts: {
|
||||
list: [],
|
||||
count: 0,
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
type UserState = {
|
||||
name: {
|
||||
given: string;
|
||||
family: string;
|
||||
};
|
||||
email: string;
|
||||
active: boolean;
|
||||
posts: {
|
||||
list: string[];
|
||||
count: number;
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user