diff options
author | 2023-09-25 15:52:27 -0400 | |
---|---|---|
committer | 2023-10-15 08:36:37 +0200 | |
commit | 1e0610b088a518ea257287da9d1bc0ccd15cb522 (patch) | |
tree | b970fe5815dea1d5386e645e232a902cd83c022b /packages/integrations/netlify/test | |
parent | b750be65ff69c5c219f3f74abbc1e6f8a64e6830 (diff) | |
download | astro-1e0610b088a518ea257287da9d1bc0ccd15cb522.tar.gz astro-1e0610b088a518ea257287da9d1bc0ccd15cb522.tar.zst astro-1e0610b088a518ea257287da9d1bc0ccd15cb522.zip |
chore(netlify): fixes after migration
Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com>
Co-authored-by: Matthew Phillips <matthew@skypack.dev>
Co-authored-by: Reuben Tier <64310361+TheOtterlord@users.noreply.github.com>
Diffstat (limited to 'packages/integrations/netlify/test')
43 files changed, 289 insertions, 224 deletions
diff --git a/packages/integrations/netlify/test/functions/404.test.js b/packages/integrations/netlify/test/functions/404.test.js index f12919a39..1782507db 100644 --- a/packages/integrations/netlify/test/functions/404.test.js +++ b/packages/integrations/netlify/test/functions/404.test.js @@ -1,26 +1,18 @@ import { expect } from 'chai'; -import netlifyAdapter from '../../dist/index.js'; -import { loadFixture, testIntegration } from './test-utils.js'; +import fs from 'fs/promises'; +import { cli } from './test-utils.js'; +import { fileURLToPath } from 'url'; + +const root = new URL('./fixtures/404/', import.meta.url).toString(); describe('404 page', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; before(async () => { - fixture = await loadFixture({ - root: new URL('./fixtures/404/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/404/dist/', import.meta.url), - }), - site: `http://example.com`, - integrations: [testIntegration()], - }); - await fixture.build(); + await cli('build', '--root', fileURLToPath(root)); }); it('404 route is included in the redirect file', async () => { - const redir = await fixture.readFile('/_redirects'); + const redir = await fs.readFile(new URL('./dist/_redirects', root), 'utf-8'); const expr = new RegExp('/* /.netlify/functions/entry 404'); expect(redir).to.match(expr); }); diff --git a/packages/integrations/netlify/test/functions/base64-response.test.js b/packages/integrations/netlify/test/functions/base64-response.test.js index 6e59bd192..520eaf646 100644 --- a/packages/integrations/netlify/test/functions/base64-response.test.js +++ b/packages/integrations/netlify/test/functions/base64-response.test.js @@ -1,23 +1,13 @@ import { expect } from 'chai'; -import { loadFixture, testIntegration } from './test-utils.js'; -import netlifyAdapter from '../../dist/index.js'; +import { cli } from './test-utils.js'; +import { fileURLToPath } from 'url'; + +const root = new URL('./fixtures/base64-response/', import.meta.url).toString(); describe('Base64 Responses', () => { - /** @type {import('../../../astro/test/test-utils').Fixture} */ - let fixture; before(async () => { - fixture = await loadFixture({ - root: new URL('./fixtures/base64-response/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/base64-response/dist/', import.meta.url), - binaryMediaTypes: ['font/otf'], - }), - site: `http://example.com`, - integrations: [testIntegration()], - }); - await fixture.build(); + await cli('build', '--root', fileURLToPath(root)); }); it('Can return base64 encoded strings', async () => { diff --git a/packages/integrations/netlify/test/functions/builders.test.js b/packages/integrations/netlify/test/functions/builders.test.js index d47af92c0..e927527a1 100644 --- a/packages/integrations/netlify/test/functions/builders.test.js +++ b/packages/integrations/netlify/test/functions/builders.test.js @@ -1,23 +1,12 @@ import { expect } from 'chai'; -import { loadFixture, testIntegration } from './test-utils.js'; -import netlifyAdapter from '../../dist/index.js'; +import { cli } from './test-utils.js'; +import { fileURLToPath } from 'url'; -describe('Builders', () => { - /** @type {import('../../../astro/test/test-utils').Fixture} */ - let fixture; +const root = new URL('./fixtures/builders/', import.meta.url).toString(); +describe('Builders', () => { before(async () => { - fixture = await loadFixture({ - root: new URL('./fixtures/builders/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/builders/dist/', import.meta.url), - builders: true, - }), - site: `http://example.com`, - integrations: [testIntegration()], - }); - await fixture.build(); + await cli('build', '--root', fileURLToPath(root)); }); it('A route can set builders ttl', async () => { diff --git a/packages/integrations/netlify/test/functions/cookies.test.js b/packages/integrations/netlify/test/functions/cookies.test.js index f15695235..328294d10 100644 --- a/packages/integrations/netlify/test/functions/cookies.test.js +++ b/packages/integrations/netlify/test/functions/cookies.test.js @@ -1,22 +1,12 @@ import { expect } from 'chai'; -import { loadFixture, testIntegration } from './test-utils.js'; -import netlifyAdapter from '../../dist/index.js'; +import { cli } from './test-utils.js'; +import { fileURLToPath } from 'url'; -describe('Cookies', () => { - /** @type {import('../../../astro/test/test-utils').Fixture} */ - let fixture; +const root = new URL('./fixtures/cookies/', import.meta.url).toString(); +describe('Cookies', () => { before(async () => { - fixture = await loadFixture({ - root: new URL('./fixtures/cookies/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/cookies/dist/', import.meta.url), - }), - site: `http://example.com`, - integrations: [testIntegration()], - }); - await fixture.build(); + await cli('build', '--root', fileURLToPath(root)); }); it('Can set multiple', async () => { diff --git a/packages/integrations/netlify/test/functions/dynamic-route.test.js b/packages/integrations/netlify/test/functions/dynamic-route.test.js index 6bb68eab8..2e20454e6 100644 --- a/packages/integrations/netlify/test/functions/dynamic-route.test.js +++ b/packages/integrations/netlify/test/functions/dynamic-route.test.js @@ -1,31 +1,22 @@ import { expect } from 'chai'; -import netlifyAdapter from '../../dist/index.js'; -import { loadFixture, testIntegration } from './test-utils.js'; +import { cli } from './test-utils.js'; +import { fileURLToPath } from 'url'; +import fs from 'fs/promises'; -describe('Dynamic pages', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; +const root = new URL('./fixtures/dynamic-route/', import.meta.url).toString(); +describe('Dynamic pages', () => { before(async () => { - fixture = await loadFixture({ - root: new URL('./fixtures/dynamic-route/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/dynamic-route/dist/', import.meta.url), - }), - site: `http://example.com`, - integrations: [testIntegration()], - }); - await fixture.build(); + await cli('build', '--root', fileURLToPath(root)); }); it('Dynamic pages are included in the redirects file', async () => { - const redir = await fixture.readFile('/_redirects'); + const redir = await fs.readFile(new URL('./dist/_redirects', root), 'utf-8'); expect(redir).to.match(/\/products\/:id/); }); it('Prerendered routes are also included using placeholder syntax', async () => { - const redir = await fixture.readFile('/_redirects'); + const redir = await fs.readFile(new URL('./dist/_redirects', root), 'utf-8'); expect(redir).to.include('/pets/:cat /pets/:cat/index.html 200'); expect(redir).to.include('/pets/:dog /pets/:dog/index.html 200'); expect(redir).to.include('/pets /.netlify/functions/entry 200'); diff --git a/packages/integrations/netlify/test/functions/edge-middleware.test.js b/packages/integrations/netlify/test/functions/edge-middleware.test.js index a83720a4d..7e51b20da 100644 --- a/packages/integrations/netlify/test/functions/edge-middleware.test.js +++ b/packages/integrations/netlify/test/functions/edge-middleware.test.js @@ -1,44 +1,20 @@ -import netlifyAdapter from '../../dist/index.js'; -import { testIntegration, loadFixture } from './test-utils.js'; +import { fileURLToPath } from 'url'; +import { cli } from './test-utils.js'; +import fs from 'fs/promises'; import { expect } from 'chai'; describe('Middleware', () => { it('with edge handle file, should successfully build the middleware', async () => { - /** @type {import('./test-utils').Fixture} */ - const fixture = await loadFixture({ - root: new URL('./fixtures/middleware-with-handler-file/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/middleware-with-handler-file/dist/', import.meta.url), - edgeMiddleware: true, - }), - site: `http://example.com`, - integrations: [testIntegration()], - build: { - excludeMiddleware: true, - }, - }); - await fixture.build(); - const contents = await fixture.readFile('../.netlify/edge-functions/edgeMiddleware.js'); + const root = new URL('./fixtures/middleware-with-handler-file/', import.meta.url).toString(); + await cli('build', '--root', fileURLToPath(root)); + const contents = await fs.readFile(new URL('./.netlify/edge-functions/edgeMiddleware.js', root), 'utf-8'); expect(contents.includes('"Hello world"')).to.be.true; }); it('without edge handle file, should successfully build the middleware', async () => { - /** @type {import('./test-utils').Fixture} */ - const fixture = await loadFixture({ - root: new URL('./fixtures/middleware-without-handler-file/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/middleware-without-handler-file/dist/', import.meta.url), - }), - site: `http://example.com`, - integrations: [testIntegration()], - build: { - excludeMiddleware: true, - }, - }); - await fixture.build(); - const contents = await fixture.readFile('../.netlify/edge-functions/edgeMiddleware.js'); + const root = new URL('./fixtures/middleware-without-handler-file/', import.meta.url).toString(); + await cli('build', '--root', fileURLToPath(root)); + const contents = await fs.readFile(new URL('./.netlify/edge-functions/edgeMiddleware.js', root), 'utf-8'); expect(contents.includes('"Hello world"')).to.be.false; }); }); diff --git a/packages/integrations/netlify/test/functions/fixtures/404/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/404/astro.config.mjs new file mode 100644 index 000000000..d5f8922f9 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/404/astro.config.mjs @@ -0,0 +1,8 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify(), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/404/package.json b/packages/integrations/netlify/test/functions/fixtures/404/package.json new file mode 100644 index 000000000..aa95a555b --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/404/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-fourohfour", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/404/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/404/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/404/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/base64-response/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/base64-response/astro.config.mjs new file mode 100644 index 000000000..db8774760 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/base64-response/astro.config.mjs @@ -0,0 +1,10 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify({ + binaryMediaTypes: ['font/otf'], + }), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/base64-response/package.json b/packages/integrations/netlify/test/functions/fixtures/base64-response/package.json new file mode 100644 index 000000000..d52dd0c8e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/base64-response/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-base64-response", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/base64-response/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/base64-response/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/base64-response/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/builders/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/builders/astro.config.mjs new file mode 100644 index 000000000..752ce4bfb --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/builders/astro.config.mjs @@ -0,0 +1,10 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify({ + builders: true, + }), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/builders/package.json b/packages/integrations/netlify/test/functions/fixtures/builders/package.json new file mode 100644 index 000000000..5f8b5998a --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/builders/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-builders", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/builders/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/builders/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/builders/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/cookies/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/cookies/astro.config.mjs new file mode 100644 index 000000000..dd3dac266 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/cookies/astro.config.mjs @@ -0,0 +1,10 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify({ + + }), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/cookies/package.json b/packages/integrations/netlify/test/functions/fixtures/cookies/package.json new file mode 100644 index 000000000..2e3b3f5ed --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/cookies/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-cookies", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/cookies/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/cookies/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/cookies/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/dynamic-route/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/astro.config.mjs new file mode 100644 index 000000000..d1d739289 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/astro.config.mjs @@ -0,0 +1,10 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify({ + edgeMiddleware: true, + }), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/dynamic-route/package.json b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/package.json new file mode 100644 index 000000000..8bf6a6164 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-dynamic", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/dynamic-route/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/dynamic-route/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/astro.config.mjs new file mode 100644 index 000000000..d1d739289 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/astro.config.mjs @@ -0,0 +1,10 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify({ + edgeMiddleware: true, + }), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/package.json b/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/package.json new file mode 100644 index 000000000..3eaaf8f76 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-middleware-with-handler-file", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/middleware-with-handler-file/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/astro.config.mjs new file mode 100644 index 000000000..d1d739289 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/astro.config.mjs @@ -0,0 +1,10 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify({ + edgeMiddleware: true, + }), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/package.json b/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/package.json new file mode 100644 index 000000000..24ffca459 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-middleware-without-handler-file", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/middleware-without-handler-file/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/prerender/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/prerender/astro.config.mjs new file mode 100644 index 000000000..e9e11092c --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/prerender/astro.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig } from 'astro/config'; +import netlifyAdapter from '../../../../dist/index.js'; + + +export default defineConfig({ + output: process.env.ASTRO_OUTPUT || 'server', + adapter: netlifyAdapter({ + dist: new URL('./dist/', import.meta.url), + }), + site: `http://example.com`, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/prerender/package.json b/packages/integrations/netlify/test/functions/fixtures/prerender/package.json new file mode 100644 index 000000000..c37740fce --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/prerender/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-prerender", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/prerender/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/prerender/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/prerender/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/redirects/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/redirects/astro.config.mjs new file mode 100644 index 000000000..3a69f76d4 --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/redirects/astro.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'hybrid', + adapter: netlify(), + site: `http://example.com`, + redirects: { + '/other': '/', + }, +});
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/redirects/package.json b/packages/integrations/netlify/test/functions/fixtures/redirects/package.json new file mode 100644 index 000000000..c2cf4c6ec --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/redirects/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-redirects", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +}
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/redirects/src/env.d.ts b/packages/integrations/netlify/test/functions/fixtures/redirects/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/redirects/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/functions/fixtures/split-support/astro.config.mjs b/packages/integrations/netlify/test/functions/fixtures/split-support/astro.config.mjs new file mode 100644 index 000000000..cf494e10b --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/split-support/astro.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig } from 'astro/config'; +import netlify from '@astrojs/netlify'; + +export default defineConfig({ + output: 'server', + adapter: netlify({ + dist: new URL('./fixtures/split-support/dist/', import.meta.url), + functionPerRoute: true, + }), + site: `http://example.com`, +}); diff --git a/packages/integrations/netlify/test/functions/fixtures/split-support/package.json b/packages/integrations/netlify/test/functions/fixtures/split-support/package.json new file mode 100644 index 000000000..f8894eb0d --- /dev/null +++ b/packages/integrations/netlify/test/functions/fixtures/split-support/package.json @@ -0,0 +1,6 @@ +{ + "name": "@test/netlify-split-support", + "dependencies": { + "@astrojs/netlify": "workspace:" + } +} diff --git a/packages/integrations/netlify/test/functions/prerender.test.js b/packages/integrations/netlify/test/functions/prerender.test.js index 2028e89c3..8acc5a519 100644 --- a/packages/integrations/netlify/test/functions/prerender.test.js +++ b/packages/integrations/netlify/test/functions/prerender.test.js @@ -1,23 +1,14 @@ import { expect } from 'chai'; -import netlifyAdapter from '../../dist/index.js'; -import { loadFixture, testIntegration } from './test-utils.js'; +import fs from 'fs/promises'; +import { cli } from './test-utils.js'; +import { fileURLToPath } from 'url'; -describe('Mixed Prerendering with SSR', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; +const root = new URL('./fixtures/prerender/', import.meta.url).toString(); +describe('Mixed Prerendering with SSR', () => { before(async () => { process.env.PRERENDER = true; - fixture = await loadFixture({ - root: new URL('./fixtures/prerender/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/prerender/dist/', import.meta.url), - }), - site: `http://example.com`, - integrations: [testIntegration()], - }); - await fixture.build(); + await cli('build', '--root', fileURLToPath(root)); }); after(() => { @@ -25,7 +16,7 @@ describe('Mixed Prerendering with SSR', () => { }); it('Wildcard 404 is sorted last', async () => { - const redir = await fixture.readFile('/_redirects'); + const redir = await fs.readFile(new URL('./dist/_redirects', root), 'utf-8'); const baseRouteIndex = redir.indexOf('/ /.netlify/functions/entry 200'); const oneRouteIndex = redir.indexOf('/one /one/index.html 200'); const fourOhFourWildCardIndex = redir.indexOf('/* /.netlify/functions/entry 404'); @@ -37,21 +28,10 @@ describe('Mixed Prerendering with SSR', () => { }); describe('Mixed Hybrid rendering with SSR', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; - before(async () => { process.env.PRERENDER = false; - fixture = await loadFixture({ - root: new URL('./fixtures/prerender/', import.meta.url).toString(), - output: 'hybrid', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/prerender/dist/', import.meta.url), - }), - site: `http://example.com`, - integrations: [testIntegration()], - }); - await fixture.build(); + process.env.ASTRO_OUTPUT = 'hybrid'; + await cli('build', '--root', fileURLToPath(root)); }); after(() => { @@ -59,8 +39,7 @@ describe('Mixed Hybrid rendering with SSR', () => { }); it('outputs a correct redirect file', async () => { - const redir = await fixture.readFile('/_redirects'); - console.log(redir); + const redir = await fs.readFile(new URL('./dist/_redirects', root), 'utf-8'); const baseRouteIndex = redir.indexOf('/one /.netlify/functions/entry 200'); const rootRouteIndex = redir.indexOf('/ /index.html 200'); const fourOhFourIndex = redir.indexOf('/404 /404.html 200'); diff --git a/packages/integrations/netlify/test/functions/redirects.test.js b/packages/integrations/netlify/test/functions/redirects.test.js index 8e3d46a68..855378ad4 100644 --- a/packages/integrations/netlify/test/functions/redirects.test.js +++ b/packages/integrations/netlify/test/functions/redirects.test.js @@ -1,31 +1,18 @@ import { expect } from 'chai'; -import netlifyAdapter from '../../dist/index.js'; -import { loadFixture, testIntegration } from './test-utils.js'; +import fs from 'fs/promises'; +import { cli } from './test-utils.js'; +import { fileURLToPath } from 'url'; -describe('SSG - Redirects', () => { - /** @type {import('../../../astro/test/test-utils').Fixture} */ - let fixture; +const root = new URL('../functions/fixtures/redirects/', import.meta.url).toString(); +describe('SSG - Redirects', () => { before(async () => { - fixture = await loadFixture({ - root: new URL('../functions/fixtures/redirects/', import.meta.url).toString(), - output: 'hybrid', - adapter: netlifyAdapter({ - dist: new URL('../functions/fixtures/redirects/dist/', import.meta.url), - }), - site: `http://example.com`, - integrations: [testIntegration()], - redirects: { - '/other': '/', - }, - }); - await fixture.build(); + await cli('build', '--root', fileURLToPath(root)); }); it('Creates a redirects file', async () => { - let redirects = await fixture.readFile('/_redirects'); + let redirects = await fs.readFile(new URL('./dist/_redirects', root), 'utf-8'); let parts = redirects.split(/\s+/); - console.log(parts); expect(parts).to.deep.equal([ '/other', '/', diff --git a/packages/integrations/netlify/test/functions/split-support.test.js b/packages/integrations/netlify/test/functions/split-support.test.js index 90427523c..6d3f9d7b3 100644 --- a/packages/integrations/netlify/test/functions/split-support.test.js +++ b/packages/integrations/netlify/test/functions/split-support.test.js @@ -1,63 +1,51 @@ -import { expect } from 'chai'; -import netlifyAdapter from '../../dist/index.js'; -import { loadFixture, testIntegration } from './test-utils.js'; +import { expect } from "chai"; +import fs from "node:fs"; +import { fileURLToPath } from "node:url"; +import { cli } from "./test-utils.js"; -describe('Split support', () => { - /** @type {import('./test-utils').Fixture} */ - let fixture; - let _entryPoints; +const root = new URL( + "../functions/fixtures/split-support/", + import.meta.url +).toString(); - before(async () => { - fixture = await loadFixture({ - root: new URL('./fixtures/split-support/', import.meta.url).toString(), - output: 'server', - adapter: netlifyAdapter({ - dist: new URL('./fixtures/split-support/dist/', import.meta.url), - functionPerRoute: true, - }), - site: `http://example.com`, - integrations: [ - testIntegration({ - setEntryPoints(ep) { - _entryPoints = ep; - }, - }), - ], - }); - await fixture.build(); - }); +describe("Split support", () => { + let _entryPoints; - it('outputs a correct redirect file', async () => { - const redir = await fixture.readFile('/_redirects'); - const lines = redir.split(/[\r\n]+/); - expect(lines.length).to.equal(3); + before(async () => { + await cli("build", "--root", fileURLToPath(root)); + }); - expect(lines[0].includes('/blog')).to.be.true; - expect(lines[0].includes('blog.astro')).to.be.true; - expect(lines[0].includes('200')).to.be.true; - expect(lines[1].includes('/')).to.be.true; - expect(lines[1].includes('index.astro')).to.be.true; - expect(lines[1].includes('200')).to.be.true; - }); + it("outputs a correct redirect file", async () => { + let redir = await fs.readFile(new URL("./dist/_redirects", root), "utf-8"); + const lines = redir.split(/[\r\n]+/); + expect(lines.length).to.equal(3); - describe('Should create multiple functions', () => { - it('and hit 200', async () => { - if (_entryPoints) { - for (const [routeData, filePath] of _entryPoints) { - if (routeData.route !== '/_image') { - const { handler } = await import(filePath.toString()); - const resp = await handler({ - httpMethod: 'GET', - headers: {}, - rawUrl: `http://example.com${routeData.route}`, - body: '{}', - }); - expect(resp.statusCode).to.equal(200); - } - } - } else { - expect(false).to.be.true; - } - }); - }); + expect(lines[0].includes("/blog")).to.be.true; + expect(lines[0].includes("blog.astro")).to.be.true; + expect(lines[0].includes("200")).to.be.true; + expect(lines[1].includes("/")).to.be.true; + expect(lines[1].includes("index.astro")).to.be.true; + expect(lines[1].includes("200")).to.be.true; + }); + + describe("Should create multiple functions", () => { + it("and hit 200", async () => { + if (_entryPoints) { + for (const [routeData, filePath] of _entryPoints) { + if (routeData.route !== "/_image") { + const { handler } = await import(filePath.toString()); + const resp = await handler({ + httpMethod: "GET", + headers: {}, + rawUrl: `http://example.com${routeData.route}`, + body: "{}", + }); + expect(resp.statusCode).to.equal(200); + } + } + } else { + expect(false).to.be.true; + } + }); + }); }); diff --git a/packages/integrations/netlify/test/functions/test-utils.js b/packages/integrations/netlify/test/functions/test-utils.js index bed187962..c977af42e 100644 --- a/packages/integrations/netlify/test/functions/test-utils.js +++ b/packages/integrations/netlify/test/functions/test-utils.js @@ -1,11 +1,11 @@ // @ts-check import { fileURLToPath } from 'node:url'; -export * from '../../../../astro/test/test-utils.js'; +export * from '../test-utils.js'; /** * - * @returns {import('../../../../astro/dist/types/@types/astro').AstroIntegration} + * @returns {import('astro').AstroIntegration} */ export function testIntegration({ setEntryPoints } = {}) { return { diff --git a/packages/integrations/netlify/test/hosted/hosted-astro-project/package.json b/packages/integrations/netlify/test/hosted/hosted-astro-project/package.json index 328f3048d..0445d216d 100644 --- a/packages/integrations/netlify/test/hosted/hosted-astro-project/package.json +++ b/packages/integrations/netlify/test/hosted/hosted-astro-project/package.json @@ -7,6 +7,6 @@ }, "dependencies": { "@astrojs/netlify": "workspace:*", - "astro": "workspace:*" + "astro": "^3.2.0" } } diff --git a/packages/integrations/netlify/test/static/fixtures/redirects/src/env.d.ts b/packages/integrations/netlify/test/static/fixtures/redirects/src/env.d.ts new file mode 100644 index 000000000..8c34fb45e --- /dev/null +++ b/packages/integrations/netlify/test/static/fixtures/redirects/src/env.d.ts @@ -0,0 +1 @@ +/// <reference types="astro/client" />
\ No newline at end of file diff --git a/packages/integrations/netlify/test/static/test-utils.js b/packages/integrations/netlify/test/static/test-utils.js index f57abab1d..44fcf84e0 100644 --- a/packages/integrations/netlify/test/static/test-utils.js +++ b/packages/integrations/netlify/test/static/test-utils.js @@ -1,11 +1,11 @@ // @ts-check import { fileURLToPath } from 'node:url'; -export * from '../../../../astro/test/test-utils.js'; +export * from '../test-utils.js'; /** * - * @returns {import('../../../../astro/dist/types/@types/astro').AstroIntegration} + * @returns {import('astro').AstroIntegration} */ export function testIntegration() { return { diff --git a/packages/integrations/netlify/test/test-utils.js b/packages/integrations/netlify/test/test-utils.js new file mode 100644 index 000000000..5ec8b49ba --- /dev/null +++ b/packages/integrations/netlify/test/test-utils.js @@ -0,0 +1,12 @@ +import { execa } from 'execa'; + +/** Returns a process running the Astro CLI. */ +export function cli(/** @type {string[]} */ ...args) { + const spawned = execa('npx', ['astro', ...args], { + env: { ASTRO_TELEMETRY_DISABLED: true }, + }); + + spawned.stdout.setEncoding('utf8'); + + return spawned; +}
\ No newline at end of file |