mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-18 21:45:12 +00:00
Allow to have middleware for the path same with a HTML page
HTTP allows to change the type of the content to serve by Accept field in the request. The middleware for the path same with a HTML page will be inserted before the HTML renderer, and can take advantage of this feature, using expressjs's "accepts" method, for example.
This commit is contained in:
@@ -2,13 +2,35 @@ const assert = require('assert');
|
||||
const { create_routes } = require('../../dist/core.ts.js');
|
||||
|
||||
describe('create_routes', () => {
|
||||
it('sorts handlers correctly', () => {
|
||||
const routes = create_routes({
|
||||
files: ['foo.html', 'foo.js']
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
routes.map(r => r.handlers),
|
||||
[
|
||||
[
|
||||
{
|
||||
type: 'route',
|
||||
file: 'foo.js'
|
||||
},
|
||||
{
|
||||
type: 'page',
|
||||
file: 'foo.html'
|
||||
}
|
||||
]
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
it('sorts routes correctly', () => {
|
||||
const routes = create_routes({
|
||||
files: ['index.html', 'about.html', 'post/f[xx].html', '[wildcard].html', 'post/foo.html', 'post/[id].html', 'post/bar.html', 'post/[id].json.js']
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
routes.map(r => r.file),
|
||||
routes.map(r => r.handlers[0].file),
|
||||
[
|
||||
'index.html',
|
||||
'about.html',
|
||||
@@ -40,7 +62,7 @@ describe('create_routes', () => {
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
routes.map(r => r.file),
|
||||
routes.map(r => r.handlers[0].file),
|
||||
[
|
||||
'4xx.html',
|
||||
'5xx.html',
|
||||
@@ -76,7 +98,7 @@ describe('create_routes', () => {
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
routes.map(r => r.file),
|
||||
routes.map(r => r.handlers[0].file),
|
||||
[
|
||||
'4xx.html',
|
||||
'5xx.html',
|
||||
@@ -106,7 +128,7 @@ describe('create_routes', () => {
|
||||
for (let i = 0; i < routes.length; i += 1) {
|
||||
const route = routes[i];
|
||||
if (params = route.exec('/post/123')) {
|
||||
file = route.file;
|
||||
file = route.handlers[0].file;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -123,7 +145,7 @@ describe('create_routes', () => {
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
routes.map(r => r.file),
|
||||
routes.map(r => r.handlers[0].file),
|
||||
[
|
||||
'index.html',
|
||||
'e/f/g/h.html'
|
||||
@@ -140,12 +162,12 @@ describe('create_routes', () => {
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
a.map(r => r.file),
|
||||
a.map(r => r.handlers[0].file),
|
||||
['foo/[bar].html', '[baz]/qux.html']
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
b.map(r => r.file),
|
||||
b.map(r => r.handlers[0].file),
|
||||
['foo/[bar].html', '[baz]/qux.html']
|
||||
);
|
||||
});
|
||||
@@ -155,13 +177,7 @@ describe('create_routes', () => {
|
||||
create_routes({
|
||||
files: ['[foo].html', '[bar]/index.html']
|
||||
});
|
||||
}, /The \[foo\].html and \[bar\]\/index.html routes clash/);
|
||||
|
||||
assert.throws(() => {
|
||||
create_routes({
|
||||
files: ['foo.html', 'foo.js']
|
||||
});
|
||||
}, /The foo.html and foo.js routes clash/);
|
||||
}, /The \[foo\] and \[bar\]\/index routes clash/);
|
||||
});
|
||||
|
||||
it('matches nested routes', () => {
|
||||
@@ -184,7 +200,7 @@ describe('create_routes', () => {
|
||||
});
|
||||
|
||||
assert.deepEqual(
|
||||
routes.map(r => r.file),
|
||||
routes.map(r => r.handlers[0].file),
|
||||
['settings.html', 'settings/[submenu].html']
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user