Initial commit

This commit is contained in:
ponzischeme89
2026-05-02 08:26:18 +12:00
commit b7ea05f150
119 changed files with 13641 additions and 0 deletions
@@ -0,0 +1,11 @@
import { saveHomepageContent, getHomepageContent } from '$lib/server/content';
import { json } from '@sveltejs/kit';
export async function GET() {
return json(await getHomepageContent());
}
export async function PUT({ request }) {
const content = await request.json();
return json(await saveHomepageContent(content));
}
@@ -0,0 +1,53 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { homepageContent } from '$lib/content/homepage';
const { getHomepageContent, saveHomepageContent } = vi.hoisted(() => ({
getHomepageContent: vi.fn(),
saveHomepageContent: vi.fn()
}));
vi.mock('$lib/server/content', () => ({
getHomepageContent,
saveHomepageContent
}));
import { GET, PUT } from './+server';
describe('homepage content endpoint', () => {
beforeEach(() => {
getHomepageContent.mockReset();
saveHomepageContent.mockReset();
});
it('returns homepage content for GET requests', async () => {
getHomepageContent.mockResolvedValue(homepageContent);
const response = await GET();
expect(response.status).toBe(200);
await expect(response.json()).resolves.toEqual(homepageContent);
});
it('saves homepage content for PUT requests', async () => {
const updatedContent = {
...homepageContent,
seo: {
...homepageContent.seo,
title: 'Updated home title'
}
};
saveHomepageContent.mockResolvedValue(updatedContent);
const response = await PUT({
request: new Request('https://www.goodwalk.co.nz/api/content/homepage', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(updatedContent)
})
} as never);
expect(saveHomepageContent).toHaveBeenCalledWith(updatedContent);
await expect(response.json()).resolves.toEqual(updatedContent);
});
});
+28
View File
@@ -0,0 +1,28 @@
import { json } from '@sveltejs/kit';
import { getPool } from '$lib/server/db';
export async function GET() {
const pool = getPool();
let database: 'disabled' | 'up' | 'down' = 'disabled';
if (pool) {
try {
await pool.query('select 1');
database = 'up';
} catch (error) {
console.error('Health check database query failed.', error);
database = 'down';
}
}
return json(
{
status: database === 'down' ? 'degraded' : 'ok',
database,
timestamp: new Date().toISOString()
},
{
status: database === 'down' ? 503 : 200
}
);
}
+57
View File
@@ -0,0 +1,57 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
vi.mock('$lib/server/db', () => ({
getPool: vi.fn()
}));
import { getPool } from '$lib/server/db';
import { GET } from './+server';
describe('health endpoint', () => {
beforeEach(() => {
vi.mocked(getPool).mockReset();
});
it('reports a disabled database when no connection string is configured', async () => {
vi.mocked(getPool).mockReturnValue(null);
const response = await GET();
const body = await response.json();
expect(response.status).toBe(200);
expect(body).toMatchObject({
status: 'ok',
database: 'disabled'
});
});
it('reports an available database when the query succeeds', async () => {
vi.mocked(getPool).mockReturnValue({
query: vi.fn().mockResolvedValue({})
} as never);
const response = await GET();
const body = await response.json();
expect(response.status).toBe(200);
expect(body).toMatchObject({
status: 'ok',
database: 'up'
});
});
it('reports a degraded status when the database query fails', async () => {
vi.mocked(getPool).mockReturnValue({
query: vi.fn().mockRejectedValue(new Error('connection refused'))
} as never);
const response = await GET();
const body = await response.json();
expect(response.status).toBe(503);
expect(body).toMatchObject({
status: 'degraded',
database: 'down'
});
});
});