diff options
author | 2024-02-01 21:24:21 +0000 | |
---|---|---|
committer | 2024-02-01 16:24:21 -0500 | |
commit | 44674418965d658733d3602668a9354e18f8ef89 (patch) | |
tree | 3954c5e37041c6e741d2e7d22239652c3e006edb /packages/integrations/node/test/errors.test.js | |
parent | b956149b2805fdd977d20e267f05c6c4872e2704 (diff) | |
download | astro-44674418965d658733d3602668a9354e18f8ef89.tar.gz astro-44674418965d658733d3602668a9354e18f8ef89.tar.zst astro-44674418965d658733d3602668a9354e18f8ef89.zip |
fix(NodeApp): fix responses with null bodies never completing (#9931)
* fix(NodeApp): fix responses with null bodies never completing
* add changeset
* add test
* chore(tests): restore correct assertions
* adjust incorrect test
* added Astro.redirect and Response.redirect test cases
* updated incorrect HTTP status
* adjust api-routes.test.js after cherry-pick
* bup markdoc test timeout
---------
Co-authored-by: Emanuele Stoppa <my.burning@gmail.com>
Co-authored-by: Friedemann Sommer <friedemannsommer@users.noreply.github.com>
Diffstat (limited to 'packages/integrations/node/test/errors.test.js')
-rw-r--r-- | packages/integrations/node/test/errors.test.js | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/packages/integrations/node/test/errors.test.js b/packages/integrations/node/test/errors.test.js index 76bff1326..8d54bcd4e 100644 --- a/packages/integrations/node/test/errors.test.js +++ b/packages/integrations/node/test/errors.test.js @@ -32,16 +32,25 @@ describe('Errors', () => { }); it('generator that throws called in template', async () => { + const result = ['<!DOCTYPE html><h1>Astro</h1> 1', 'Internal server error']; + /** @type {Response} */ const res = await fixture.fetch('/generator'); const reader = res.body.getReader(); const decoder = new TextDecoder(); - const expect = async ({ done, value }) => { - const result = await reader.read(); - assert.equal(result.done, done); - if (!done) assert.equal(decoder.decode(result.value), value); - }; - await expect({ done: false, value: '<!DOCTYPE html><h1>Astro</h1> 1Internal server error' }); - await expect({ done: true }); + const chunk1 = await reader.read(); + const chunk2 = await reader.read(); + const chunk3 = await reader.read(); + assert.equal(chunk1.done, false); + if (chunk2.done) { + assert.equal(decoder.decode(chunk1.value), result.join("")); + } + else if (chunk3.done) { + assert.equal(decoder.decode(chunk1.value), result[0]); + assert.equal(decoder.decode(chunk2.value), result[1]); + } + else { + throw new Error('The response should take at most 2 chunks.'); + } }); }); |