Implement medicine library and cabinet
This commit is contained in:
parent
db79af06f7
commit
1f66fab30f
72 changed files with 7642 additions and 319 deletions
|
|
@ -20,10 +20,14 @@ vi.mock('jose', () => ({
|
|||
}));
|
||||
|
||||
// Mock the users repository module with a real class
|
||||
const mockUpsertFromToken = vi.hoisted(() => vi.fn());
|
||||
const { mockUpsertFromToken, mockFindByKeycloakId } = vi.hoisted(() => ({
|
||||
mockUpsertFromToken: vi.fn(),
|
||||
mockFindByKeycloakId: vi.fn(),
|
||||
}));
|
||||
vi.mock('./users.repository.js', () => ({
|
||||
UsersRepository: class MockUsersRepository {
|
||||
upsertFromToken = mockUpsertFromToken;
|
||||
findByKeycloakId = mockFindByKeycloakId;
|
||||
},
|
||||
}));
|
||||
|
||||
|
|
@ -47,6 +51,55 @@ describe('users.routes', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
mockFindByKeycloakId.mockResolvedValue({ householdIds: ['hh1'] });
|
||||
});
|
||||
|
||||
it('returns 404 when syncFromToken returns null', async () => {
|
||||
mockUpsertFromToken.mockResolvedValue(null);
|
||||
|
||||
const app = await buildTestApp();
|
||||
await app.ready();
|
||||
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
url: '/api/v1/users/me',
|
||||
headers: { authorization: 'Bearer valid-token' },
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(404);
|
||||
|
||||
await app.close();
|
||||
});
|
||||
|
||||
it('handles ObjectId and Date objects in response', async () => {
|
||||
const mockUser = {
|
||||
_id: { toString: () => 'u-obj' },
|
||||
keycloakId: 'kc-1',
|
||||
displayName: 'testuser',
|
||||
email: 'test@example.com',
|
||||
householdIds: ['hh1'],
|
||||
defaultHouseholdId: 'hh1',
|
||||
createdAt: { toISOString: () => '2024-01-01T00:00:00.000Z' },
|
||||
updatedAt: { toISOString: () => '2024-01-02T00:00:00.000Z' },
|
||||
};
|
||||
mockUpsertFromToken.mockResolvedValue(mockUser);
|
||||
|
||||
const app = await buildTestApp();
|
||||
await app.ready();
|
||||
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
url: '/api/v1/users/me',
|
||||
headers: { authorization: 'Bearer valid-token' },
|
||||
});
|
||||
|
||||
expect(res.statusCode).toBe(200);
|
||||
const body = res.json();
|
||||
expect(body._id).toBe('u-obj');
|
||||
expect(body.createdAt).toBe('2024-01-01T00:00:00.000Z');
|
||||
expect(body.defaultHouseholdId).toBe('hh1');
|
||||
|
||||
await app.close();
|
||||
});
|
||||
|
||||
it('GET /api/v1/users/me syncs user from token and returns profile', async () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue