|
|
|
@@ -46,7 +46,7 @@ const GROOMER: StaffRow = {
|
|
|
|
|
let staffLookupResult: StaffRow | null = null;
|
|
|
|
|
let managerFallbackResult: StaffRow | null = MANAGER;
|
|
|
|
|
let userLookupResult: { id: string; name: string | null; email: string | null } | null = null;
|
|
|
|
|
let insertedStaff: StaffRow | null = null;
|
|
|
|
|
let _insertedStaff: StaffRow | null = null;
|
|
|
|
|
|
|
|
|
|
vi.mock("../db", () => {
|
|
|
|
|
const makeTableProxy = (name: string) =>
|
|
|
|
@@ -65,13 +65,17 @@ vi.mock("../db", () => {
|
|
|
|
|
const user = makeTableProxy("user");
|
|
|
|
|
|
|
|
|
|
const buildQuery = (result: unknown, fallback: unknown) => ({
|
|
|
|
|
limit: () => ({
|
|
|
|
|
[Symbol.iterator]: function* () {
|
|
|
|
|
if (result) yield result;
|
|
|
|
|
},
|
|
|
|
|
0: result,
|
|
|
|
|
length: result ? 1 : 0,
|
|
|
|
|
}),
|
|
|
|
|
[Symbol.iterator]: function* () {
|
|
|
|
|
if (result) yield result;
|
|
|
|
|
},
|
|
|
|
|
limit: (_n: number) => {
|
|
|
|
|
const item = result ?? fallback;
|
|
|
|
|
return {
|
|
|
|
|
[Symbol.iterator]: function* () { if (item) yield item; },
|
|
|
|
|
0: item,
|
|
|
|
|
length: item ? 1 : 0,
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
@@ -84,7 +88,7 @@ vi.mock("../db", () => {
|
|
|
|
|
),
|
|
|
|
|
}),
|
|
|
|
|
}),
|
|
|
|
|
insert: (table: unknown) => ({
|
|
|
|
|
insert: (_table: unknown) => ({
|
|
|
|
|
values: (vals: Record<string, unknown>) => ({
|
|
|
|
|
returning: () => {
|
|
|
|
|
const newStaff: StaffRow = {
|
|
|
|
@@ -100,7 +104,7 @@ vi.mock("../db", () => {
|
|
|
|
|
createdAt: new Date(),
|
|
|
|
|
updatedAt: new Date(),
|
|
|
|
|
};
|
|
|
|
|
insertedStaff = newStaff;
|
|
|
|
|
_insertedStaff = newStaff;
|
|
|
|
|
return [newStaff];
|
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
@@ -120,7 +124,7 @@ function resetMocks() {
|
|
|
|
|
staffLookupResult = null;
|
|
|
|
|
managerFallbackResult = MANAGER;
|
|
|
|
|
userLookupResult = null;
|
|
|
|
|
insertedStaff = null;
|
|
|
|
|
_insertedStaff = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** Build a minimal Hono app with jwtPayload pre-set, then apply a middleware. */
|
|
|
|
@@ -130,7 +134,7 @@ function buildApp(
|
|
|
|
|
) {
|
|
|
|
|
const app = new Hono<AppEnv>();
|
|
|
|
|
app.use("*", async (c, next) => {
|
|
|
|
|
c.set("jwtPayload", { sub: staffLookupResult?.userId ?? "unknown-sub" });
|
|
|
|
|
c.set("jwtPayload", { sub: userLookupResult?.id ?? staffLookupResult?.userId ?? "unknown-sub" });
|
|
|
|
|
await next();
|
|
|
|
|
});
|
|
|
|
|
app.use("*", middleware);
|
|
|
|
|