summaryrefslogtreecommitdiff
path: root/packages/integrations/cloudflare/test
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/cloudflare/test')
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/astro.config.mjs11
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/package.json9
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/another.astro5
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/index.astro5
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[...rest].astro5
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[id].astro5
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/endpoint.ts1
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/index.astro1
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/b/index.html1
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/public/public.txt1
-rw-r--r--packages/integrations/cloudflare/test/fixtures/routesJson/src/staticOnly/pages/index.astro1
-rw-r--r--packages/integrations/cloudflare/test/prerender.test.js26
-rw-r--r--packages/integrations/cloudflare/test/routesJson.js78
13 files changed, 137 insertions, 12 deletions
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/astro.config.mjs b/packages/integrations/cloudflare/test/fixtures/routesJson/astro.config.mjs
new file mode 100644
index 000000000..66b50c098
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/astro.config.mjs
@@ -0,0 +1,11 @@
+import { defineConfig } from 'astro/config';
+import cloudflare from '@astrojs/cloudflare';
+
+export default defineConfig({
+ adapter: cloudflare({ mode: 'directory' }),
+ output: 'hybrid',
+ redirects: {
+ '/a/redirect': '/',
+ },
+ srcDir: process.env.SRC
+});
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/package.json b/packages/integrations/cloudflare/test/fixtures/routesJson/package.json
new file mode 100644
index 000000000..4ff746f02
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "@test/astro-cloudflare-routes-json",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "@astrojs/cloudflare": "workspace:*",
+ "astro": "workspace:*"
+ }
+}
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/another.astro b/packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/another.astro
new file mode 100644
index 000000000..9a2306b86
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/another.astro
@@ -0,0 +1,5 @@
+---
+export const prerender=false;
+---
+
+ok
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/index.astro b/packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/index.astro
new file mode 100644
index 000000000..9a2306b86
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/dynamicOnly/pages/index.astro
@@ -0,0 +1,5 @@
+---
+export const prerender=false;
+---
+
+ok
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[...rest].astro b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[...rest].astro
new file mode 100644
index 000000000..9a2306b86
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[...rest].astro
@@ -0,0 +1,5 @@
+---
+export const prerender=false;
+---
+
+ok
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[id].astro b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[id].astro
new file mode 100644
index 000000000..9a2306b86
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/[id].astro
@@ -0,0 +1,5 @@
+---
+export const prerender=false;
+---
+
+ok
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/endpoint.ts b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/endpoint.ts
new file mode 100644
index 000000000..d43d0cd2a
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/endpoint.ts
@@ -0,0 +1 @@
+export const prerender = false;
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/index.astro b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/index.astro
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/a/index.astro
@@ -0,0 +1 @@
+ok
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/b/index.html b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/b/index.html
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/pages/b/index.html
@@ -0,0 +1 @@
+ok
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/public/public.txt b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/public/public.txt
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/mixed/public/public.txt
@@ -0,0 +1 @@
+ok
diff --git a/packages/integrations/cloudflare/test/fixtures/routesJson/src/staticOnly/pages/index.astro b/packages/integrations/cloudflare/test/fixtures/routesJson/src/staticOnly/pages/index.astro
new file mode 100644
index 000000000..9766475a4
--- /dev/null
+++ b/packages/integrations/cloudflare/test/fixtures/routesJson/src/staticOnly/pages/index.astro
@@ -0,0 +1 @@
+ok
diff --git a/packages/integrations/cloudflare/test/prerender.test.js b/packages/integrations/cloudflare/test/prerender.test.js
index 847bd950a..fe0721f27 100644
--- a/packages/integrations/cloudflare/test/prerender.test.js
+++ b/packages/integrations/cloudflare/test/prerender.test.js
@@ -18,13 +18,14 @@ describe('Prerendering', () => {
fixture.clean();
});
- it('includes prerendered routes in the routes.json config', async () => {
- const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
- r.replace(/\\/g, '/')
- );
- const expectedExcludedRoutes = ['/_worker.js', '/one/index.html', '/one/'];
+ it('includes non prerendered routes in the routes.json config', async () => {
+ const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json'));
- expect(foundRoutes.every((element) => expectedExcludedRoutes.includes(element))).to.be.true;
+ expect(foundRoutes).to.deep.equal({
+ version: 1,
+ include: ['/'],
+ exclude: [],
+ });
});
});
@@ -45,12 +46,13 @@ describe('Hybrid rendering', () => {
delete process.env.PRERENDER;
});
- it('includes prerendered routes in the routes.json config', async () => {
- const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json')).exclude.map((r) =>
- r.replace(/\\/g, '/')
- );
- const expectedExcludedRoutes = ['/_worker.js', '/index.html', '/'];
+ it('includes non prerendered routes in the routes.json config', async () => {
+ const foundRoutes = JSON.parse(await fixture.readFile('/_routes.json'));
- expect(foundRoutes.every((element) => expectedExcludedRoutes.includes(element))).to.be.true;
+ expect(foundRoutes).to.deep.equal({
+ version: 1,
+ include: ['/one'],
+ exclude: [],
+ });
});
});
diff --git a/packages/integrations/cloudflare/test/routesJson.js b/packages/integrations/cloudflare/test/routesJson.js
new file mode 100644
index 000000000..927e4c38e
--- /dev/null
+++ b/packages/integrations/cloudflare/test/routesJson.js
@@ -0,0 +1,78 @@
+import { expect } from 'chai';
+import { loadFixture } from './test-utils.js';
+
+/** @type {import('./test-utils.js').Fixture} */
+describe('_routes.json generation', () => {
+ after(() => {
+ delete process.env.SRC;
+ });
+
+ describe('of both functions and static files', () => {
+ let fixture;
+
+ before(async () => {
+ process.env.SRC = './src/mixed';
+ fixture = await loadFixture({
+ root: './fixtures/routesJson/',
+ });
+ await fixture.build();
+ });
+
+ it('creates `include` for functions and `exclude` for static files where needed', async () => {
+ const _routesJson = await fixture.readFile('/_routes.json');
+ const routes = JSON.parse(_routesJson);
+
+ expect(routes).to.deep.equal({
+ version: 1,
+ include: ['/a/*'],
+ exclude: ['/a/', '/a/redirect', '/a/index.html'],
+ });
+ });
+ });
+
+ describe('of only functions', () => {
+ let fixture;
+
+ before(async () => {
+ process.env.SRC = './src/dynamicOnly';
+ fixture = await loadFixture({
+ root: './fixtures/routesJson/',
+ });
+ await fixture.build();
+ });
+
+ it('creates a wildcard `include` and `exclude` only for the redirect', async () => {
+ const _routesJson = await fixture.readFile('/_routes.json');
+ const routes = JSON.parse(_routesJson);
+
+ expect(routes).to.deep.equal({
+ version: 1,
+ include: ['/*'],
+ exclude: ['/a/redirect'],
+ });
+ });
+ });
+
+ describe('of only static files', () => {
+ let fixture;
+
+ before(async () => {
+ process.env.SRC = './src/staticOnly';
+ fixture = await loadFixture({
+ root: './fixtures/routesJson/',
+ });
+ await fixture.build();
+ });
+
+ it('create only one `include` and `exclude` that are supposed to match nothing', async () => {
+ const _routesJson = await fixture.readFile('/_routes.json');
+ const routes = JSON.parse(_routesJson);
+
+ expect(routes).to.deep.equal({
+ version: 1,
+ include: ['/'],
+ exclude: ['/'],
+ });
+ });
+ });
+});