fix: resolve issues #10 and #11 for metadata and preview language

Co-authored-by: rfc1437 <774975+rfc1437@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-17 17:52:56 +00:00
parent 6802aa40fa
commit 7c81d76a4b
4 changed files with 52 additions and 24 deletions

View File

@@ -14,7 +14,7 @@ type PostEngineLike = {
};
type SettingsEngineLike = {
getProjectMetadata: () => Promise<{ maxPostsPerPage?: number } | null>;
getProjectMetadata: () => Promise<{ maxPostsPerPage?: number; mainLanguage?: string } | null>;
setProjectContext: (projectId: string, dataDir?: string) => void;
};
@@ -335,6 +335,30 @@ describe('PreviewServer', () => {
expect(html).not.toContain('<title>Blog Preview</title>');
});
it('uses mainLanguage from metadata for html lang attribute', async () => {
server = new PreviewServer({
postEngine: makeEngine([makePost()]),
settingsEngine: {
setProjectContext: vi.fn(),
async getProjectMetadata() {
return {
name: 'My Great Blog',
mainLanguage: 'de',
maxPostsPerPage: 50,
};
},
},
getActiveProjectContext: async () => ({ projectId: 'default' }),
});
await server.start(0);
const response = await fetch(`${server.getBaseUrl()}/`);
expect(response.status).toBe(200);
const html = await response.text();
expect(html).toContain('<html lang="de">');
});
it('falls back to active project name in page title when metadata is unavailable', async () => {
server = new PreviewServer({
postEngine: makeEngine([makePost()]),
@@ -587,4 +611,4 @@ describe('PreviewServer', () => {
expect(getPost).toHaveBeenCalledTimes(50);
});
});
});