New "browse" UI

Also, separated out browse, ?meta, and ?module request handlers.

Fixes #82
This commit is contained in:
Michael Jackson
2019-07-24 17:55:13 -07:00
parent ea35b3c4b0
commit 34baab07ab
57 changed files with 2431 additions and 686 deletions

View File

@ -2,7 +2,7 @@ import request from 'supertest';
import createServer from '../createServer.js';
describe('A request that targets a directory with a trailing slash', () => {
describe('A request to browse a directory', () => {
let server;
beforeEach(() => {
server = createServer();
@ -11,7 +11,7 @@ describe('A request that targets a directory with a trailing slash', () => {
describe('when the directory exists', () => {
it('returns an HTML page', done => {
request(server)
.get('/react@16.8.0/umd/')
.get('/browse/react@16.8.0/umd/')
.end((err, res) => {
expect(res.statusCode).toBe(200);
expect(res.headers['content-type']).toMatch(/\btext\/html\b/);
@ -21,12 +21,12 @@ describe('A request that targets a directory with a trailing slash', () => {
});
describe('when the directory does not exist', () => {
it('returns a 404 text error', done => {
it('returns a 404 HTML page', done => {
request(server)
.get('/react@16.8.0/not-here/')
.get('/browse/react@16.8.0/not-here/')
.end((err, res) => {
expect(res.statusCode).toBe(404);
expect(res.headers['content-type']).toMatch(/\btext\/plain\b/);
expect(res.headers['content-type']).toMatch(/\btext\/html\b/);
done();
});
});

View File

@ -0,0 +1,34 @@
import request from 'supertest';
import createServer from '../createServer.js';
describe('A request to browse a file', () => {
let server;
beforeEach(() => {
server = createServer();
});
describe('when the file exists', () => {
it('returns an HTML page', done => {
request(server)
.get('/browse/react@16.8.0/umd/react.production.min.js')
.end((err, res) => {
expect(res.statusCode).toBe(200);
expect(res.headers['content-type']).toMatch(/\btext\/html\b/);
done();
});
});
});
describe('when the file does not exist', () => {
it('returns a 404 HTML page', done => {
request(server)
.get('/browse/react@16.8.0/not-here.js')
.end((err, res) => {
expect(res.statusCode).toBe(404);
expect(res.headers['content-type']).toMatch(/\btext\/html\b/);
done();
});
});
});
});

View File

@ -27,4 +27,14 @@ describe('Legacy URLs', () => {
done();
});
});
it('redirect */ to /browse/*/', done => {
request(server)
.get('/react@16.8.0/umd/')
.end((err, res) => {
expect(res.statusCode).toBe(302);
expect(res.headers.location).toEqual('/browse/react@16.8.0/umd/');
done();
});
});
});