56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import { POST } from '@/app/api/db/init/route';
|
|
|
|
const { initSchema, seed, resetDatabase, migrateFromLegacyPlaces } = vi.hoisted(() => ({
|
|
initSchema: vi.fn(),
|
|
seed: vi.fn(),
|
|
resetDatabase: vi.fn(),
|
|
migrateFromLegacyPlaces: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('@/lib/schema', () => ({
|
|
initSchema,
|
|
seed,
|
|
resetDatabase,
|
|
migrateFromLegacyPlaces,
|
|
}));
|
|
|
|
describe('/api/db/init', () => {
|
|
beforeEach(() => {
|
|
initSchema.mockReset();
|
|
seed.mockReset();
|
|
resetDatabase.mockReset();
|
|
migrateFromLegacyPlaces.mockReset();
|
|
});
|
|
|
|
it('initializes schema and seed data', async () => {
|
|
initSchema.mockResolvedValueOnce(undefined);
|
|
migrateFromLegacyPlaces.mockResolvedValueOnce(undefined);
|
|
seed.mockResolvedValueOnce(undefined);
|
|
|
|
const response = await POST(new Request('http://localhost/api/db/init'));
|
|
const body = await response.json();
|
|
|
|
expect(response.status).toBe(200);
|
|
expect(body).toEqual({ ok: true });
|
|
expect(initSchema).toHaveBeenCalledTimes(1);
|
|
expect(migrateFromLegacyPlaces).toHaveBeenCalledTimes(1);
|
|
expect(seed).toHaveBeenCalledTimes(1);
|
|
expect(resetDatabase).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('uses the reset path when requested', async () => {
|
|
resetDatabase.mockResolvedValueOnce(undefined);
|
|
|
|
const response = await POST(new Request('http://localhost/api/db/init?reset=true'));
|
|
const body = await response.json();
|
|
|
|
expect(response.status).toBe(200);
|
|
expect(body).toEqual({ ok: true, reset: true });
|
|
expect(resetDatabase).toHaveBeenCalledTimes(1);
|
|
expect(initSchema).not.toHaveBeenCalled();
|
|
expect(seed).not.toHaveBeenCalled();
|
|
expect(migrateFromLegacyPlaces).not.toHaveBeenCalled();
|
|
});
|
|
});
|