summaryrefslogtreecommitdiff
path: root/test/astro-search.test.js
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@matthewphillips.info> 2021-04-05 14:18:09 -0400
committerGravatar GitHub <noreply@github.com> 2021-04-05 14:18:09 -0400
commitc9bc6ffef7be0e068acb1b36475c4ab3d12fd5d5 (patch)
treed444fa26d0ce47bb3cebb5e6264d67778a2e106d /test/astro-search.test.js
parentd9733e8d42662d8708b5fc3bcb5c6c4db75df043 (diff)
downloadastro-c9bc6ffef7be0e068acb1b36475c4ab3d12fd5d5.tar.gz
astro-c9bc6ffef7be0e068acb1b36475c4ab3d12fd5d5.tar.zst
astro-c9bc6ffef7be0e068acb1b36475c4ab3d12fd5d5.zip
Improve searching for pages (#60)
This improves the algorithm for searching for pages. It now works like: 1. If pathname ends with / 1. Look for PATHNAME/index.astro 1. Look for PATHNAME/index.md 1. else 1. Look for PATHNAME.astro 1. Look for PATHNAME.md 1. Look for PATHNAME/index.astro 1. 301 1. Look for PATHNAME/index.md 1. 301 1. 404
Diffstat (limited to 'test/astro-search.test.js')
-rw-r--r--test/astro-search.test.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/astro-search.test.js b/test/astro-search.test.js
new file mode 100644
index 000000000..415bc4432
--- /dev/null
+++ b/test/astro-search.test.js
@@ -0,0 +1,41 @@
+import { suite } from 'uvu';
+import * as assert from 'uvu/assert';
+import { setup } from './helpers.js';
+
+const Search = suite('Search paths');
+
+setup(Search, './fixtures/astro-basic');
+
+Search('Finds the root page', async ({ runtime }) => {
+ const result = await runtime.load('/');
+ assert.equal(result.statusCode, 200);
+});
+
+Search('Matches pathname to filename', async ({ runtime }) => {
+ const result = await runtime.load('/news');
+ assert.equal(result.statusCode, 200);
+});
+
+Search('A URL with a trailing slash can match a folder with an index.astro', async ({ runtime }) => {
+ const result = await runtime.load('/nested-astro/');
+ assert.equal(result.statusCode, 200);
+});
+
+Search('A URL with a trailing slash can match a folder with an index.md', async ({ runtime }) => {
+ const result = await runtime.load('/nested-md/');
+ assert.equal(result.statusCode, 200);
+});
+
+Search('A URL without a trailing slash can redirect to a folder with an index.astro', async ({ runtime }) => {
+ const result = await runtime.load('/nested-astro');
+ assert.equal(result.statusCode, 301);
+ assert.equal(result.location, '/nested-astro/');
+});
+
+Search('A URL without a trailing slash can redirect to a folder with an index.md', async ({ runtime }) => {
+ const result = await runtime.load('/nested-md');
+ assert.equal(result.statusCode, 301);
+ assert.equal(result.location, '/nested-md/');
+});
+
+Search.run();