fix(10-04): prettier format + remove unnecessary type assertions

- Run prettier on all new/modified PWA files (CredentialSheet, SetupBanner, AdminPage, admin.spec.ts)
- Remove unnecessary 'as React.RefObject<HTMLElement | null>' casts flagged by @typescript-eslint/no-unnecessary-type-assertion
- Format pre-existing API files from Plans 02/03 (me.ts, user.test.ts, requireAdmin.test.ts, me.test.ts)
- All 270 API tests + 191 PWA vitest tests pass; lint/typecheck/build clean
This commit is contained in:
Lucas Berger
2026-06-13 15:22:50 -04:00
parent 7808426a2f
commit 79fe3e0e04
8 changed files with 89 additions and 56 deletions
+24 -13
View File
@@ -167,13 +167,16 @@ describe('GET /api/me — isAdmin + needsProviderSetup (Plan 10-02, D-03)', () =
let callCount = 0;
vi.mocked(db.select).mockImplementation(() => {
callCount++;
const limitFn = callCount === 1
? vi.fn().mockResolvedValue([{ isAdmin: true }]) // users.isAdmin lookup
: vi.fn().mockResolvedValue([]); // memberCredentials lookup (none)
const limitFn =
callCount === 1
? vi.fn().mockResolvedValue([{ isAdmin: true }]) // users.isAdmin lookup
: vi.fn().mockResolvedValue([]); // memberCredentials lookup (none)
return {
from: vi.fn().mockReturnValue({
where: vi.fn().mockReturnValue({ limit: limitFn }),
innerJoin: vi.fn().mockReturnValue({ innerJoin: vi.fn().mockReturnValue({ where: vi.fn().mockResolvedValue([]) }) }),
innerJoin: vi.fn().mockReturnValue({
innerJoin: vi.fn().mockReturnValue({ where: vi.fn().mockResolvedValue([]) }),
}),
}),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} as any;
@@ -183,7 +186,9 @@ describe('GET /api/me — isAdmin + needsProviderSetup (Plan 10-02, D-03)', () =
const res = await app.request('/api/me');
expect(res.status).toBe(200);
const body = (await res.json()) as { user: { id: number; isAdmin: boolean; needsProviderSetup: boolean } };
const body = (await res.json()) as {
user: { id: number; isAdmin: boolean; needsProviderSetup: boolean };
};
expect(body.user).toHaveProperty('isAdmin');
expect(body.user.isAdmin).toBe(true); // DB returns true, not hardcoded
});
@@ -194,13 +199,16 @@ describe('GET /api/me — isAdmin + needsProviderSetup (Plan 10-02, D-03)', () =
let callCount = 0;
vi.mocked(db.select).mockImplementation(() => {
callCount++;
const limitFn = callCount === 1
? vi.fn().mockResolvedValue([{ isAdmin: false }]) // users.isAdmin lookup
: vi.fn().mockResolvedValue([]); // no member_credentials row
const limitFn =
callCount === 1
? vi.fn().mockResolvedValue([{ isAdmin: false }]) // users.isAdmin lookup
: vi.fn().mockResolvedValue([]); // no member_credentials row
return {
from: vi.fn().mockReturnValue({
where: vi.fn().mockReturnValue({ limit: limitFn }),
innerJoin: vi.fn().mockReturnValue({ innerJoin: vi.fn().mockReturnValue({ where: vi.fn().mockResolvedValue([]) }) }),
innerJoin: vi.fn().mockReturnValue({
innerJoin: vi.fn().mockReturnValue({ where: vi.fn().mockResolvedValue([]) }),
}),
}),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} as any;
@@ -221,13 +229,16 @@ describe('GET /api/me — isAdmin + needsProviderSetup (Plan 10-02, D-03)', () =
let callCount = 0;
vi.mocked(db.select).mockImplementation(() => {
callCount++;
const limitFn = callCount === 1
? vi.fn().mockResolvedValue([{ isAdmin: false }]) // users.isAdmin lookup
: vi.fn().mockResolvedValue([{ id: 7 }]); // has member_credentials row
const limitFn =
callCount === 1
? vi.fn().mockResolvedValue([{ isAdmin: false }]) // users.isAdmin lookup
: vi.fn().mockResolvedValue([{ id: 7 }]); // has member_credentials row
return {
from: vi.fn().mockReturnValue({
where: vi.fn().mockReturnValue({ limit: limitFn }),
innerJoin: vi.fn().mockReturnValue({ innerJoin: vi.fn().mockReturnValue({ where: vi.fn().mockResolvedValue([]) }) }),
innerJoin: vi.fn().mockReturnValue({
innerJoin: vi.fn().mockReturnValue({ where: vi.fn().mockResolvedValue([]) }),
}),
}),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} as any;