diff options
Diffstat (limited to 'packages/integrations/vercel/test/static-assets.test.js')
-rw-r--r-- | packages/integrations/vercel/test/static-assets.test.js | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/packages/integrations/vercel/test/static-assets.test.js b/packages/integrations/vercel/test/static-assets.test.js new file mode 100644 index 000000000..37d3a0577 --- /dev/null +++ b/packages/integrations/vercel/test/static-assets.test.js @@ -0,0 +1,72 @@ +import assert from 'node:assert/strict'; +import { describe, it } from 'node:test'; +import { loadFixture } from './test-utils.js'; + +describe('Static Assets', () => { + /** @type {import('../../../astro/test/test-utils.js').Fixture} */ + let fixture; + + const VALID_CACHE_CONTROL = 'public, max-age=31536000, immutable'; + + async function build({ adapter, assets, output }) { + fixture = await loadFixture({ + root: './fixtures/static-assets/', + output, + adapter, + build: { + assets, + }, + }); + await fixture.build(); + } + + async function getConfig() { + const json = await fixture.readFile('../.vercel/output/config.json'); + const config = JSON.parse(json); + + return config; + } + + async function getAssets() { + return fixture.config.build.assets; + } + + async function checkValidCacheControl(assets) { + const config = await getConfig(); + const theAssets = assets ?? (await getAssets()); + + const route = config.routes.find((r) => r.src === `^/${theAssets}/(.*)$`); + assert.equal(route.headers['cache-control'], VALID_CACHE_CONTROL); + assert.equal(route.continue, true); + } + + describe('static adapter', () => { + it('has cache control', async () => { + const { default: vercel } = await import('@astrojs/vercel/static'); + await build({ adapter: vercel() }); + await checkValidCacheControl(); + }); + + it('has cache control other assets', async () => { + const { default: vercel } = await import('@astrojs/vercel/static'); + const assets = '_foo'; + await build({ adapter: vercel(), assets }); + await checkValidCacheControl(assets); + }); + }); + + describe('serverless adapter', () => { + it('has cache control', async () => { + const { default: vercel } = await import('@astrojs/vercel/serverless'); + await build({ output: 'server', adapter: vercel() }); + await checkValidCacheControl(); + }); + + it('has cache control other assets', async () => { + const { default: vercel } = await import('@astrojs/vercel/serverless'); + const assets = '_foo'; + await build({ output: 'server', adapter: vercel(), assets }); + await checkValidCacheControl(assets); + }); + }); +}); |