const authCheck = res => { expect(res).to.be.html; expect(res.text).to.include('This page requires authentication to access'); expect(res.text).to.include(`Sign in to ${locale('site_name')}`); expect(res.text).to.include('A 403 error has occurred... :('); }
describe('GET Legacy ID', () => { let id, target, data; before('fetch list data', done => { db.select().from('legacy_ids').limit(1).then(legacy => { id = legacy[0].id; target = legacy[0].target; db.select().from('lists').where({ id: target }).limit(1).then(lists => { data = lists[0]; done(); }); }); }); it('returns the target list page', done => { const test = () => request().get(`/lists/${id}`); test().end((err, res) => { expect(res).to.have.status(200); expect(res).to.be.html; titleCheck(res, `${data.name} (${data.id}) - ${locale('site_name')} - ${locale('short_desc')}`); done(); }); }); });
describe('/helloworld', () => { describe('GET', () => { const test = () => request().get('/helloworld'); it('returns a Not Found status code', done => { test().end((err, res) => { expect(res).to.have.status(404); done(); }); }); it('has the correct page title', done => { test().end((err, res) => { expect(res).to.be.html; titleCheck(res, `Page not found - ${locale('site_name')} - ${locale('short_desc')}`); done(); }); }); it('renders the error content', done => { test().end((err, res) => { expect(res).to.be.html; expect(res.text).to.include('The page you were looking for could not be found.'); expect(res.text).to.include('A 404 error has occurred... :('); done(); }); }); }); });
it('renders the expected header content', done => { test().end((err, res) => { expect(res).to.be.html; // Confirm header expect(res.text).to.include('API Documentation'); expect(res.text).to.include(`${locale('site_name')} provides a single API endpoint`); // Confirm CTA to libs expect(res.text).to.include('<a class="button is-brand is-size-5" href="/api/docs/libs">API Libraries</a>'); // Confirm menu expect(res.text).to.include('<aside class="menu">'); expect(res.text).to.include('<p class="menu-label">'); expect(res.text).to.include('<ul class="menu-list">'); done(); }); });
const titleCheck = (res, expectedTitle) => { expect(res).to.be.html; // Generic expect(res.text).to.include(`<title>${expectedTitle}</title>`); expect(res.text).to.include(`<meta name="description" content="${locale('site_name')} - ${locale('full_desc')}">`); // OG expect(res.text).to.include(`<meta property="og:title" content="${expectedTitle}">`); expect(res.text).to.include(`<meta property="og:site_name" content="${locale('site_name')}">`); expect(res.text).to.include(`<meta property="og:description" content="${locale('full_desc')}">`); // Twitter expect(res.text).to.include(`<meta name="twitter:title" content="${expectedTitle}">`); expect(res.text).to.include(`<meta name="twitter:description" content="${locale('full_desc')}">`); }
describe('/lists/best-practices', () => { describe('GET', () => { const test = () => request().get('/lists/best-practices'); it('returns an OK status code', done => { test().end((err, res) => { expect(res).to.have.status(200); done(); }); }); it('has the correct page title', done => { test().end((err, res) => { expect(res).to.be.html; titleCheck(res, `Best Practices for Discord Bot Lists - ${locale('site_name')} - ${locale('short_desc')}`); done(); }); }); it('renders the expected content', done => { test().end((err, res) => { expect(res.text).to.include('<h1>Best Practices for Discord Bot Lists</h1>'); expect(res.text).to.include('<h2>Your bot list must:</h2>'); expect(res.text).to.include('<h2>Your bot list should:</h2>'); done(); }); }); }); });