diff options
5 files changed, 71 insertions, 1 deletions
diff --git a/packages/integrations/node/test/encoded.test.js b/packages/integrations/node/test/encoded.test.js new file mode 100644 index 000000000..162ebd6cc --- /dev/null +++ b/packages/integrations/node/test/encoded.test.js @@ -0,0 +1,44 @@ +import nodejs from '../dist/index.js'; +import { loadFixture, createRequestAndResponse } from './test-utils.js'; +import { expect } from 'chai'; + +describe('Encoded Pathname', () => { + /** @type {import('./test-utils').Fixture} */ + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/encoded/', + output: 'server', + adapter: nodejs({ mode: 'middleware' }), + }); + await fixture.build(); + }); + + it('Can get an Astro file', async () => { + const { handler } = await import('./fixtures/encoded/dist/server/entry.mjs'); + let { req, res, text } = createRequestAndResponse({ + url: '/什么', + }); + + handler(req, res); + req.send(); + + const html = await text(); + expect(html).to.include('什么</h1>'); + }); + + it('Can get a Markdown file', async () => { + const { handler } = await import('./fixtures/encoded/dist/server/entry.mjs'); + + let { req, res, text } = createRequestAndResponse({ + url: '/blog/什么', + }); + + handler(req, res); + req.send(); + + const html = await text(); + expect(html).to.include('什么</h1>'); + }); +}); diff --git a/packages/integrations/node/test/fixtures/encoded/package.json b/packages/integrations/node/test/fixtures/encoded/package.json new file mode 100644 index 000000000..350077973 --- /dev/null +++ b/packages/integrations/node/test/fixtures/encoded/package.json @@ -0,0 +1,9 @@ +{ + "name": "@test/nodejs-encoded", + "version": "0.0.0", + "private": true, + "dependencies": { + "astro": "workspace:*", + "@astrojs/node": "workspace:*" + } +} diff --git a/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md b/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md new file mode 100644 index 000000000..2820cf17e --- /dev/null +++ b/packages/integrations/node/test/fixtures/encoded/src/pages/blog/什么.md @@ -0,0 +1 @@ +# 什么 diff --git a/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro b/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro new file mode 100644 index 000000000..c8473f594 --- /dev/null +++ b/packages/integrations/node/test/fixtures/encoded/src/pages/什么.astro @@ -0,0 +1 @@ +<h1>什么</h1> diff --git a/packages/integrations/node/test/test-utils.js b/packages/integrations/node/test/test-utils.js index d3d7c17be..13e32a5e8 100644 --- a/packages/integrations/node/test/test-utils.js +++ b/packages/integrations/node/test/test-utils.js @@ -28,7 +28,13 @@ export function createRequestAndResponse(reqOptions) { let done = toPromise(res); - return { req, res, done }; + // Get the response as text + const text = async () => { + let chunks = await done; + return buffersToString(chunks); + }; + + return { req, res, done, text }; } export function toPromise(res) { @@ -48,3 +54,12 @@ export function toPromise(res) { }); }); } + +export function buffersToString(buffers) { + let decoder = new TextDecoder(); + let str = ''; + for (const buffer of buffers) { + str += decoder.decode(buffer); + } + return str; +} |