diff --git a/app.js b/app.js index c42e1a0..ef26723 100644 --- a/app.js +++ b/app.js @@ -25,7 +25,7 @@ var pkg = require('./package.json'); module.exports = initApp; // Initialise the application -function initApp (config, callback) { +function initApp(config, callback) { config = defaultConfig(config); var webserviceUrl = config.webservice; @@ -58,7 +58,7 @@ function initApp (config, callback) { contentHelperName: 'content', layoutsDir: __dirname + '/view/layout', partialsDir: __dirname + '/view/partial', - defaultLayout: __dirname + '/view/layout/default', + defaultLayout: __dirname + '/view/layout/default' })); app.express.set('view engine', 'html'); @@ -79,7 +79,7 @@ function initApp (config, callback) { siteMessage: config.siteMessage }); - app.express.use(function (req, res, next) { + app.express.use(function(req, res, next) { res.locals.isHomePage = (req.path === '/'); res.locals.host = req.host; next(); @@ -100,11 +100,11 @@ function initApp (config, callback) { } // Error handling - app.express.get('*', function (req, res) { + app.express.get('*', function(req, res) { res.status(404); res.render('404'); }); - app.express.use(function (err, req, res, next) { + app.express.use(function(err, req, res, next) { /* jshint unused: false */ if (err.code === 'ECONNREFUSED') { err = new Error('Could not connect to pa11y-webservice'); @@ -117,7 +117,7 @@ function initApp (config, callback) { res.render('500'); }); - app.server.listen(config.port, function (err) { + app.server.listen(config.port, function(err) { var address = app.server.address(); app.address = 'http://' + address.address + ':' + address.port; callback(err, app); @@ -126,7 +126,7 @@ function initApp (config, callback) { } // Get default configurations -function defaultConfig (config) { +function defaultConfig(config) { if (typeof config.noindex !== 'boolean') { config.noindex = true; } diff --git a/data/standards.js b/data/standards.js index 45d1f2a..d8984f0 100644 --- a/data/standards.js +++ b/data/standards.js @@ -1,24 +1,24 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . -/* jshint maxlen: false */ +// jscs:disable maximumLineLength 'use strict'; module.exports = getStandards; -function getStandards () { +function getStandards() { return [ { title: 'Section508', @@ -656,10 +656,12 @@ function getStandards () { { name: 'WCAG2AA.Principle1.Guideline1_1.1_1_1.H30.2', description: 'Img element is the only content of the link, but is missing alt text. The alt text should describe the purpose of the link.' - }, { + }, + { name: 'WCAG2AA.Principle1.Guideline1_1.1_1_1.H37', description: 'Img element missing an alt attribute. Use the alt attribute to specify a short text alternative.' - }, { + }, + { name: 'WCAG2AA.Principle1.Guideline1_1.1_1_1.H67.1', description: 'Img element with empty alt text must have absent or empty title attribute.' }, diff --git a/index.js b/index.js index 7e7d335..4397d31 100644 --- a/index.js +++ b/index.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -18,19 +18,19 @@ var chalk = require('chalk'); var config = require('./config/' + (process.env.NODE_ENV || 'development') + '.json'); -process.on( 'SIGINT', function() { - console.log( '\nGracefully shutting down from SIGINT (Ctrl-C)' ); - process.exit( ); +process.on('SIGINT', function() { + console.log('\nGracefully shutting down from SIGINT (Ctrl-C)'); + process.exit(); }); -require('./app')(config, function (err, app) { +require('./app')(config, function(err, app) { console.log(''); console.log(chalk.underline.magenta('pa11y-dashboard started')); console.log(chalk.grey('mode: %s'), process.env.NODE_ENV); console.log(chalk.grey('uri: %s'), app.address); - app.on('route-error', function (err) { + app.on('route-error', function(err) { var stack = (err.stack ? err.stack.split('\n') : [err.message]); var msg = chalk.red(stack.shift()); console.error(''); @@ -40,7 +40,7 @@ require('./app')(config, function (err, app) { // Start the webservice if required if (typeof config.webservice === 'object') { - require('pa11y-webservice')(config.webservice, function (err, webservice) { + require('pa11y-webservice')(config.webservice, function(err, webservice) { console.log(''); console.log(chalk.underline.cyan('pa11y-webservice started')); console.log(chalk.grey('mode: %s'), process.env.NODE_ENV); diff --git a/route/index.js b/route/index.js index 520d7d7..0749fd9 100644 --- a/route/index.js +++ b/route/index.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -20,9 +20,9 @@ var presentTask = require('../view/presenter/task'); module.exports = route; // Route definition -function route (app) { - app.express.get('/', function (req, res, next) { - app.webservice.tasks.get({lastres: true}, function (err, tasks) { +function route(app) { + app.express.get('/', function(req, res, next) { + app.webservice.tasks.get({lastres: true}, function(err, tasks) { if (err) { return next(err); } diff --git a/route/new.js b/route/new.js index 97a7cda..8feee25 100644 --- a/route/new.js +++ b/route/new.js @@ -20,10 +20,10 @@ var getStandards = require('../data/standards'); module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.get('/new', function (req, res) { - var standards = getStandards().map(function (standard) { + app.express.get('/new', function(req, res) { + var standards = getStandards().map(function(standard) { if (standard.title === 'WCAG2AA') { standard.selected = true; } @@ -35,7 +35,7 @@ function route (app) { }); }); - app.express.post('/new', function (req, res) { + app.express.post('/new', function(req, res) { var newTask = { name: req.body.name, url: req.body.url, @@ -45,13 +45,13 @@ function route (app) { username: req.body.username, password: req.body.password }; - app.webservice.tasks.create(newTask, function (err, task) { + app.webservice.tasks.create(newTask, function(err, task) { if (err) { - var standards = getStandards().map(function (standard) { + var standards = getStandards().map(function(standard) { if (standard.title === newTask.standard) { standard.selected = true; } - standard.rules = standard.rules.map(function (rule) { + standard.rules = standard.rules.map(function(rule) { if (newTask.ignore.indexOf(rule.name) !== -1) { rule.ignored = true; } diff --git a/route/result/download.js b/route/result/download.js index 8975ab8..052931d 100644 --- a/route/result/download.js +++ b/route/result/download.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -20,67 +20,67 @@ var moment = require('moment'); module.exports = route; // Route definition -function route (app) { +function route(app) { - function getTaskAndResult (req, res, next) { - app.webservice.task(req.params.id).get({}, function (err, task) { - if (err) { - return next('route'); - } - app.webservice - .task(req.params.id) - .result(req.params.rid) - .get({full: true}, function (err, result) { - if (err) { - return next('route'); - } - res.locals.task = task; - res.locals.result = result; - next(); - }); - }); - } + function getTaskAndResult(req, res, next) { + app.webservice.task(req.params.id).get({}, function(err, task) { + if (err) { + return next('route'); + } + app.webservice + .task(req.params.id) + .result(req.params.rid) + .get({full: true}, function(err, result) { + if (err) { + return next('route'); + } + res.locals.task = task; + res.locals.result = result; + next(); + }); + }); + } - function getDownloadFileName (task, result, extension) { - return [ - 'pa11y', - '--', - task.url - .replace(/^https?:\/\//i, '') - .replace(/\/$/, '') - .replace(/[^a-z0-9\.\-\_]+/gi, '-'), - '--', - task.standard.toLowerCase(), - '--', - moment(result.date).format('YYYY-MM-DD'), - '.', - extension - ].join(''); - } + function getDownloadFileName(task, result, extension) { + return [ + 'pa11y', + '--', + task.url + .replace(/^https?:\/\//i, '') + .replace(/\/$/, '') + .replace(/[^a-z0-9\.\-\_]+/gi, '-'), + '--', + task.standard.toLowerCase(), + '--', + moment(result.date).format('YYYY-MM-DD'), + '.', + extension + ].join(''); + } - app.express.get('/:id/:rid.csv', getTaskAndResult, function (req, res) { - var task = res.locals.task; - var result = res.locals.result; - var rows = ['"code","message","type"']; - result.results.forEach(function (msg) { - rows.push([ - JSON.stringify(msg.code), - JSON.stringify(msg.message), - JSON.stringify(msg.type) - ].join(',')); - }); - res.attachment(getDownloadFileName(task, result, 'csv')); - res.send(rows.join('\n')); - }); + app.express.get('/:id/:rid.csv', getTaskAndResult, function(req, res) { + var task = res.locals.task; + var result = res.locals.result; + var rows = ['"code","message","type"']; + result.results.forEach(function(msg) { + rows.push([ + JSON.stringify(msg.code), + JSON.stringify(msg.message), + JSON.stringify(msg.type) + ].join(',')); + }); + res.attachment(getDownloadFileName(task, result, 'csv')); + res.send(rows.join('\n')); + }); - app.express.get('/:id/:rid.json', getTaskAndResult, function (req, res) { - var task = res.locals.task; - var result = res.locals.result; - res.attachment(getDownloadFileName(task, result, 'json')); - delete task.id; - delete result.id; - result.task = task; - res.send(result); - }); + app.express.get('/:id/:rid.json', getTaskAndResult, function(req, res) { + var task = res.locals.task; + var result = res.locals.result; + res.attachment(getDownloadFileName(task, result, 'json')); + delete task.id; + delete result.id; + result.task = task; + res.send(result); + }); } diff --git a/route/result/index.js b/route/result/index.js index 7d704c2..f9cbc53 100644 --- a/route/result/index.js +++ b/route/result/index.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -21,27 +21,27 @@ var presentResult = require('../../view/presenter/result'); module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.get('/:id/:rid', function (req, res, next) { - app.webservice.task(req.params.id).get({}, function (err, task) { - if (err) { - return next(); - } - app.webservice - .task(req.params.id) - .result(req.params.rid) - .get({full: true}, function (err, result) { - if (err) { - return next(); - } - res.render('result', { - task: presentTask(task), - mainResult: presentResult(result), - isResultPage: true - }); - }); - }); - }); + app.express.get('/:id/:rid', function(req, res, next) { + app.webservice.task(req.params.id).get({}, function(err, task) { + if (err) { + return next(); + } + app.webservice + .task(req.params.id) + .result(req.params.rid) + .get({full: true}, function(err, result) { + if (err) { + return next(); + } + res.render('result', { + task: presentTask(task), + mainResult: presentResult(result), + isResultPage: true + }); + }); + }); + }); } diff --git a/route/task/delete.js b/route/task/delete.js index 6ef8422..92aea64 100644 --- a/route/task/delete.js +++ b/route/task/delete.js @@ -20,10 +20,10 @@ var presentTask = require('../../view/presenter/task'); module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.get('/:id/delete', function (req, res, next) { - app.webservice.task(req.params.id).get({}, function (err, task) { + app.express.get('/:id/delete', function(req, res, next) { + app.webservice.task(req.params.id).get({}, function(err, task) { if (err) { return next(); } @@ -34,8 +34,8 @@ function route (app) { }); }); - app.express.post('/:id/delete', function (req, res, next) { - app.webservice.task(req.params.id).remove(function (err) { + app.express.post('/:id/delete', function(req, res, next) { + app.webservice.task(req.params.id).remove(function(err) { if (err) { return next(); } diff --git a/route/task/edit.js b/route/task/edit.js index c880bf6..23b0e33 100644 --- a/route/task/edit.js +++ b/route/task/edit.js @@ -21,18 +21,18 @@ var getStandards = require('../../data/standards'); module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.get('/:id/edit', function (req, res, next) { - app.webservice.task(req.params.id).get({}, function (err, task) { + app.express.get('/:id/edit', function(req, res, next) { + app.webservice.task(req.params.id).get({}, function(err, task) { if (err) { return next(); } - var standards = getStandards().map(function (standard) { + var standards = getStandards().map(function(standard) { if (standard.title === task.standard) { standard.selected = true; } - standard.rules = standard.rules.map(function (rule) { + standard.rules = standard.rules.map(function(rule) { if (task.ignore.indexOf(rule.name) !== -1) { rule.ignored = true; } @@ -49,24 +49,24 @@ function route (app) { }); }); - app.express.post('/:id/edit', function (req, res, next) { - app.webservice.task(req.params.id).get({}, function (err, task) { + app.express.post('/:id/edit', function(req, res, next) { + app.webservice.task(req.params.id).get({}, function(err, task) { if (err) { return next(); } req.body.ignore = req.body.ignore || []; - app.webservice.task(req.params.id).edit(req.body, function (err) { + app.webservice.task(req.params.id).edit(req.body, function(err) { if (err) { task.name = req.body.name; task.ignore = req.body.ignore; task.timeout = req.body.timeout; task.username = req.body.username; task.password = req.body.password; - var standards = getStandards().map(function (standard) { + var standards = getStandards().map(function(standard) { if (standard.title === task.standard) { standard.selected = true; } - standard.rules = standard.rules.map(function (rule) { + standard.rules = standard.rules.map(function(rule) { if (task.ignore.indexOf(rule.name) !== -1) { rule.ignored = true; } diff --git a/route/task/ignore.js b/route/task/ignore.js index 084ef59..3b2c398 100644 --- a/route/task/ignore.js +++ b/route/task/ignore.js @@ -3,10 +3,10 @@ module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.post('/:id/ignore', function (req, res, next) { - app.webservice.task(req.params.id).get({}, function (err, task) { + app.express.post('/:id/ignore', function(req, res, next) { + app.webservice.task(req.params.id).get({}, function(err, task) { if (err) { return next(); } @@ -17,7 +17,7 @@ function route (app) { if (typeof req.body.rule === 'string') { edit.ignore.push(req.body.rule); } - app.webservice.task(req.params.id).edit(edit, function () { + app.webservice.task(req.params.id).edit(edit, function() { res.redirect('/' + req.params.id + '?rule-ignored'); }); }); diff --git a/route/task/index.js b/route/task/index.js index 2900c5d..ee0e4cd 100644 --- a/route/task/index.js +++ b/route/task/index.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -22,14 +22,14 @@ var presentResultList = require('../../view/presenter/result-list'); module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.get('/:id', function (req, res, next) { - app.webservice.task(req.params.id).get({lastres: true}, function (err, task) { + app.express.get('/:id', function(req, res, next) { + app.webservice.task(req.params.id).get({lastres: true}, function(err, task) { if (err) { return next(); } - app.webservice.task(req.params.id).results({}, function (err, results) { + app.webservice.task(req.params.id).results({}, function(err, results) { if (err) { return next(err); } diff --git a/route/task/run.js b/route/task/run.js index 5b82341..5648d8c 100644 --- a/route/task/run.js +++ b/route/task/run.js @@ -18,10 +18,10 @@ module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.get('/:id/run', function (req, res, next) { - app.webservice.task(req.params.id).run(function (err) { + app.express.get('/:id/run', function(req, res, next) { + app.webservice.task(req.params.id).run(function(err) { if (err) { return next(); } diff --git a/route/task/unignore.js b/route/task/unignore.js index 1ed6b81..eca0a2d 100644 --- a/route/task/unignore.js +++ b/route/task/unignore.js @@ -3,10 +3,10 @@ module.exports = route; // Route definition -function route (app) { +function route(app) { - app.express.post('/:id/unignore', function (req, res, next) { - app.webservice.task(req.params.id).get({}, function (err, task) { + app.express.post('/:id/unignore', function(req, res, next) { + app.webservice.task(req.params.id).get({}, function(err, task) { if (err) { return next(); } @@ -18,7 +18,7 @@ function route (app) { if (typeof req.body.rule === 'string' && indexOfRule !== -1) { edit.ignore.splice(indexOfRule, 1); } - app.webservice.task(req.params.id).edit(edit, function () { + app.webservice.task(req.params.id).edit(edit, function() { res.redirect('/' + req.params.id + '?rule-unignored'); }); }); diff --git a/test/integration/helper/navigate.js b/test/integration/helper/navigate.js index 118a30a..885d074 100644 --- a/test/integration/helper/navigate.js +++ b/test/integration/helper/navigate.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -21,8 +21,8 @@ var request = require('request'); module.exports = createNavigator; // Create a navigate function -function createNavigator (baseUrl, store) { - return function (opts, callback) { +function createNavigator(baseUrl, store) { + return function(opts, callback) { store.body = null; store.dom = null; @@ -38,7 +38,7 @@ function createNavigator (baseUrl, store) { json: true, qs: opts.query, followAllRedirects: true - }, function (err, res, body) { + }, function(err, res, body) { store.body = body; store.request = res.request; @@ -52,7 +52,7 @@ function createNavigator (baseUrl, store) { } else { jsdom.env( store.body, - function (err, window) { + function(err, window) { store.window = window; store.dom = window.document; callback(); diff --git a/test/integration/helper/webservice.js b/test/integration/helper/webservice.js index 94c4903..d09eaf4 100644 --- a/test/integration/helper/webservice.js +++ b/test/integration/helper/webservice.js @@ -20,7 +20,7 @@ var createClient = require('pa11y-webservice-client-node'); module.exports = createWebserviceClient; // Create a webservice client -function createWebserviceClient (config) { +function createWebserviceClient(config) { var webserviceUrl = config.webservice; if (typeof webserviceUrl === 'object') { webserviceUrl = 'http://' + webserviceUrl.host + ':' + webserviceUrl.port + '/'; diff --git a/test/integration/route/index.js b/test/integration/route/index.js index bda0ff9..62db2ac 100644 --- a/test/integration/route/index.js +++ b/test/integration/route/index.js @@ -17,9 +17,9 @@ var assert = require('proclaim'); -describe('GET /', function () { +describe('GET /', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/' @@ -27,17 +27,17 @@ describe('GET /', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should display an "Add new URL" button', function () { + it('should display an "Add new URL" button', function() { var elem = this.last.dom.querySelectorAll('[data-test=add-task]'); assert.strictEqual(elem.length, 1); assert.strictEqual(elem[0].getAttribute('href'), '/new'); }); - it('should display all of the expected tasks', function () { + it('should display all of the expected tasks', function() { var tasks = this.last.dom.querySelectorAll('[data-test=task]'); assert.strictEqual(tasks.length, 3); assert.match(tasks[0].textContent, /npg home\s+\(wcag2aa\)/i); @@ -45,47 +45,47 @@ describe('GET /', function () { assert.match(tasks[2].textContent, /nature news\s+\(section508\)/i); }); - it('should have links to each task', function () { + it('should have links to each task', function() { var tasks = this.last.dom.querySelectorAll('[data-test=task]'); assert.strictEqual(tasks[0].querySelectorAll('[href="/abc000000000000000000001"]').length, 1); assert.strictEqual(tasks[1].querySelectorAll('[href="/abc000000000000000000002"]').length, 1); assert.strictEqual(tasks[2].querySelectorAll('[href="/abc000000000000000000003"]').length, 1); }); - it('should display an "Edit" button for each task', function () { + it('should display an "Edit" button for each task', function() { var tasks = this.last.dom.querySelectorAll('[data-test=task]'); assert.strictEqual(tasks[0].querySelectorAll('[href="/abc000000000000000000001/edit"]').length, 1); assert.strictEqual(tasks[1].querySelectorAll('[href="/abc000000000000000000002/edit"]').length, 1); assert.strictEqual(tasks[2].querySelectorAll('[href="/abc000000000000000000003/edit"]').length, 1); }); - it('should display a "Delete" button for each task', function () { + it('should display a "Delete" button for each task', function() { var tasks = this.last.dom.querySelectorAll('[data-test=task]'); assert.strictEqual(tasks[0].querySelectorAll('[href="/abc000000000000000000001/delete"]').length, 1); assert.strictEqual(tasks[1].querySelectorAll('[href="/abc000000000000000000002/delete"]').length, 1); assert.strictEqual(tasks[2].querySelectorAll('[href="/abc000000000000000000003/delete"]').length, 1); }); - it('should display a "Run" button for each task', function () { + it('should display a "Run" button for each task', function() { var tasks = this.last.dom.querySelectorAll('[data-test=task]'); assert.strictEqual(tasks[0].querySelectorAll('[href="/abc000000000000000000001/run"]').length, 1); assert.strictEqual(tasks[1].querySelectorAll('[href="/abc000000000000000000002/run"]').length, 1); assert.strictEqual(tasks[2].querySelectorAll('[href="/abc000000000000000000003/run"]').length, 1); }); - it('should display the task result counts if the task has been run', function () { + it('should display the task result counts if the task has been run', function() { var tasks = this.last.dom.querySelectorAll('[data-test=task]'); assert.match(tasks[0].textContent, /1\s*errors/i); assert.match(tasks[0].textContent, /2\s*warnings/i); assert.match(tasks[0].textContent, /3\s*notices/i); }); - it('should display a message indicating that there are no results if the task has not been run', function () { + it('should display a message indicating that there are no results if the task has not been run', function() { var tasks = this.last.dom.querySelectorAll('[data-test=task]'); assert.match(tasks[2].textContent, /no results/i); }); - it('should not display an alert message', function () { + it('should not display an alert message', function() { assert.strictEqual(this.last.dom.querySelectorAll('[data-test=alert]').length, 0); }); diff --git a/test/integration/route/new.js b/test/integration/route/new.js index dbb9088..a30162c 100644 --- a/test/integration/route/new.js +++ b/test/integration/route/new.js @@ -17,9 +17,9 @@ var assert = require('proclaim'); -describe('GET /new', function () { +describe('GET /new', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/new' @@ -27,62 +27,62 @@ describe('GET /new', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should not display an error message', function () { + it('should not display an error message', function() { assert.strictEqual(this.last.dom.querySelectorAll('[data-test=error]').length, 0); }); - it('should have an "Add new URL" form', function () { + it('should have an "Add new URL" form', function() { var form = this.last.dom.querySelectorAll('[data-test=new-url-form]')[0]; assert.isDefined(form); assert.strictEqual(form.getAttribute('action'), '/new'); assert.strictEqual(form.getAttribute('method'), 'post'); }); - describe('"Add New URL" form', function () { + describe('"Add New URL" form', function() { - beforeEach(function () { + beforeEach(function() { this.form = this.last.dom.querySelectorAll('[data-test=new-url-form]')[0]; }); - it('should have a "name" field', function () { + it('should have a "name" field', function() { var field = this.form.querySelectorAll('input[name=name]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'text'); assert.strictEqual(field.getAttribute('value'), ''); }); - it('should have a "url" field', function () { + it('should have a "url" field', function() { var field = this.form.querySelectorAll('input[name=url]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'url'); assert.strictEqual(field.getAttribute('value'), ''); }); - it('should have a "username" field', function () { + it('should have a "username" field', function() { var field = this.form.querySelectorAll('input[name=username]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'text'); assert.strictEqual(field.getAttribute('value'), ''); }); - it('should have a "password" field', function () { + it('should have a "password" field', function() { var field = this.form.querySelectorAll('input[name=password]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'text'); assert.strictEqual(field.getAttribute('value'), ''); }); - it('should have a "standard" field', function () { + it('should have a "standard" field', function() { var field = this.form.querySelectorAll('select[name=standard]')[0]; assert.isDefined(field); assert.strictEqual(field.querySelectorAll('option').length, 4); }); - it('should have "ignore" fields', function () { + it('should have "ignore" fields', function() { var fields = this.form.querySelectorAll('input[name="ignore[]"]'); assert.isDefined(fields); assert.notStrictEqual(fields.length, 0); @@ -92,11 +92,11 @@ describe('GET /new', function () { }); -describe('POST /new', function () { +describe('POST /new', function() { - describe('with invalid query', function () { + describe('with invalid query', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'POST', endpoint: '/new', @@ -108,19 +108,19 @@ describe('POST /new', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should display an error message', function () { + it('should display an error message', function() { assert.strictEqual(this.last.dom.querySelectorAll('[data-test=error]').length, 1); }); }); - describe('with valid query', function () { + describe('with valid query', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'POST', endpoint: '/new', @@ -133,26 +133,26 @@ describe('POST /new', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should create the task', function (done) { - this.webservice.tasks.get({}, function (err, tasks) { + it('should create the task', function(done) { + this.webservice.tasks.get({}, function(err, tasks) { assert.strictEqual(tasks.length, 4); done(); }); }); - it('should redirect me to the new URL page', function () { + it('should redirect me to the new URL page', function() { assert.match(this.last.request.uri.pathname, /^\/[a-z0-9]{24}$/i); }); - it('should not display an error message', function () { + it('should not display an error message', function() { assert.strictEqual(this.last.dom.querySelectorAll('[data-test=error]').length, 0); }); - it('should display a success message', function () { + it('should display a success message', function() { var alert = this.last.dom.querySelectorAll('[data-test=alert]')[0]; assert.isDefined(alert); assert.match(alert.textContent, /url has been added/i); diff --git a/test/integration/route/result/download.js b/test/integration/route/result/download.js index 0a6a37b..d2564fa 100644 --- a/test/integration/route/result/download.js +++ b/test/integration/route/result/download.js @@ -17,9 +17,9 @@ var assert = require('proclaim'); -describe('GET //.csv', function () { +describe('GET //.csv', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000001/def000000000000000000001.csv', @@ -28,19 +28,19 @@ describe('GET //.csv', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should output CSV results', function () { + it('should output CSV results', function() { assert.match(this.last.body, /^"code","message","type"/); }); }); -describe('GET //.json', function () { +describe('GET //.json', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000001/def000000000000000000001.json', @@ -49,11 +49,11 @@ describe('GET //.json', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should output JSON results', function () { + it('should output JSON results', function() { var json = this.last.body; assert.strictEqual(json.task.name, 'NPG Home'); assert.strictEqual(json.task.url, 'nature.com'); diff --git a/test/integration/route/result/index.js b/test/integration/route/result/index.js index a605dc1..531d881 100644 --- a/test/integration/route/result/index.js +++ b/test/integration/route/result/index.js @@ -17,9 +17,9 @@ var assert = require('proclaim'); -describe('GET //', function () { +describe('GET //', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000001/def000000000000000000001' @@ -27,39 +27,39 @@ describe('GET //', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should display a "Download CSV" button', function () { + it('should display a "Download CSV" button', function() { var elem = this.last.dom.querySelectorAll('[data-test=download-csv]'); assert.strictEqual(elem.length, 1); assert.strictEqual(elem[0].getAttribute('href'), '/abc000000000000000000001/def000000000000000000001.csv'); }); - it('should display a "Download JSON" button', function () { + it('should display a "Download JSON" button', function() { var elem = this.last.dom.querySelectorAll('[data-test=download-json]'); assert.strictEqual(elem.length, 1); assert.strictEqual(elem[0].getAttribute('href'), '/abc000000000000000000001/def000000000000000000001.json'); }); - it('should display a link back to the task', function () { + it('should display a link back to the task', function() { assert.isDefined(this.last.dom.querySelectorAll('[href="/abc000000000000000000001"]')[0]); }); - it('should display errors', function () { + it('should display errors', function() { var elem = this.last.dom.querySelectorAll('[data-test=task-errors]')[0]; assert.isDefined(elem); assert.match(elem.textContent, /errors \( 1 \)/i); }); - it('should display warnings', function () { + it('should display warnings', function() { var elem = this.last.dom.querySelectorAll('[data-test=task-warnings]')[0]; assert.isDefined(elem); assert.match(elem.textContent, /warnings \( 2 \)/i); }); - it('should display notices', function () { + it('should display notices', function() { var elem = this.last.dom.querySelectorAll('[data-test=task-notices]')[0]; assert.isDefined(elem); assert.match(elem.textContent, /notices \( 3 \)/i); diff --git a/test/integration/route/task/delete.js b/test/integration/route/task/delete.js index fcb3f9f..e4b5e3d 100644 --- a/test/integration/route/task/delete.js +++ b/test/integration/route/task/delete.js @@ -17,9 +17,9 @@ var assert = require('proclaim'); -describe('GET //delete', function () { +describe('GET //delete', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000001/delete' @@ -27,26 +27,26 @@ describe('GET //delete', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should have a "Delete URL" form', function () { + it('should have a "Delete URL" form', function() { var form = this.last.dom.querySelectorAll('[data-test=delete-url-form]')[0]; assert.isDefined(form); assert.strictEqual(form.getAttribute('action'), '/abc000000000000000000001/delete'); assert.strictEqual(form.getAttribute('method'), 'post'); }); - it('should display a link back to the task page', function () { + it('should display a link back to the task page', function() { assert.greaterThan(this.last.dom.querySelectorAll('[href="/abc000000000000000000001"]').length, 0); }); }); -describe('POST //delete', function () { +describe('POST //delete', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'POST', endpoint: '/abc000000000000000000001/delete' @@ -54,22 +54,22 @@ describe('POST //delete', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should delete the task', function (done) { - this.webservice.task('abc000000000000000000001').get({}, function (err) { + it('should delete the task', function(done) { + this.webservice.task('abc000000000000000000001').get({}, function(err) { assert.strictEqual(err.message, 'Error 404'); done(); }); }); - it('should redirect me to the home page', function () { + it('should redirect me to the home page', function() { assert.strictEqual(this.last.request.uri.pathname, '/'); }); - it('should display a success message', function () { + it('should display a success message', function() { var alert = this.last.dom.querySelectorAll('[data-test=alert]')[0]; assert.isDefined(alert); assert.match(alert.textContent, /been deleted/i); diff --git a/test/integration/route/task/edit.js b/test/integration/route/task/edit.js index 169db33..78d2af6 100644 --- a/test/integration/route/task/edit.js +++ b/test/integration/route/task/edit.js @@ -17,9 +17,9 @@ var assert = require('proclaim'); -describe('GET //edit', function () { +describe('GET //edit', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000001/edit' @@ -27,35 +27,35 @@ describe('GET //edit', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should have an "Edit URL" form', function () { + it('should have an "Edit URL" form', function() { var form = this.last.dom.querySelectorAll('[data-test=edit-url-form]')[0]; assert.isDefined(form); assert.strictEqual(form.getAttribute('action'), '/abc000000000000000000001/edit'); assert.strictEqual(form.getAttribute('method'), 'post'); }); - it('should display a link back to the task page', function () { + it('should display a link back to the task page', function() { assert.greaterThan(this.last.dom.querySelectorAll('[href="/abc000000000000000000001"]').length, 0); }); - describe('"Edit URL" form', function () { + describe('"Edit URL" form', function() { - beforeEach(function () { + beforeEach(function() { this.form = this.last.dom.querySelectorAll('[data-test=edit-url-form]')[0]; }); - it('should have a "name" field', function () { + it('should have a "name" field', function() { var field = this.form.querySelectorAll('input[name=name]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'text'); assert.strictEqual(field.getAttribute('value'), 'NPG Home'); }); - it('should have a disabled "url" field', function () { + it('should have a disabled "url" field', function() { var field = this.form.querySelectorAll('input[name=url]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'url'); @@ -63,27 +63,27 @@ describe('GET //edit', function () { assert.isDefined(field.getAttribute('disabled')); }); - it('should have a disabled "standard" field', function () { + it('should have a disabled "standard" field', function() { var field = this.form.querySelectorAll('select[name=standard]')[0]; assert.isDefined(field); assert.isDefined(field.getAttribute('disabled')); }); - it('should have a "username" field', function () { + it('should have a "username" field', function() { var field = this.form.querySelectorAll('input[name=username]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'text'); assert.strictEqual(field.getAttribute('value'), 'user'); }); - it('should have a "password" field', function () { + it('should have a "password" field', function() { var field = this.form.querySelectorAll('input[name=password]')[0]; assert.isDefined(field); assert.strictEqual(field.getAttribute('type'), 'text'); assert.strictEqual(field.getAttribute('value'), 'access'); }); - it('should have "ignore" fields', function () { + it('should have "ignore" fields', function() { var fields = this.form.querySelectorAll('input[name="ignore[]"]'); assert.isDefined(fields); assert.notStrictEqual(fields.length, 0); @@ -93,9 +93,9 @@ describe('GET //edit', function () { }); -describe('POST //edit', function () { +describe('POST //edit', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'POST', endpoint: '/abc000000000000000000001/edit', @@ -109,12 +109,12 @@ describe('POST //edit', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should edit the task', function (done) { - this.webservice.task('abc000000000000000000001').get({}, function (err, task) { + it('should edit the task', function(done) { + this.webservice.task('abc000000000000000000001').get({}, function(err, task) { assert.strictEqual(task.name, 'foo'); assert.strictEqual(task.username, 'newuser'); assert.strictEqual(task.password, 'secure'); @@ -123,7 +123,7 @@ describe('POST //edit', function () { }); }); - it('should display a success message', function () { + it('should display a success message', function() { var alert = this.last.dom.querySelectorAll('[data-test=alert]')[0]; assert.isDefined(alert); assert.match(alert.textContent, /been saved/i); diff --git a/test/integration/route/task/index.js b/test/integration/route/task/index.js index 39a1fde..187d47f 100644 --- a/test/integration/route/task/index.js +++ b/test/integration/route/task/index.js @@ -17,11 +17,11 @@ var assert = require('proclaim'); -describe('GET /', function () { +describe('GET /', function() { - describe('when task has results', function () { + describe('when task has results', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000001' @@ -29,48 +29,48 @@ describe('GET /', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should display an "Edit" button', function () { + it('should display an "Edit" button', function() { assert.strictEqual(this.last.dom.querySelectorAll('[href="/abc000000000000000000001/edit"]').length, 1); }); - it('should display a "Delete" button', function () { + it('should display a "Delete" button', function() { assert.strictEqual(this.last.dom.querySelectorAll('[href="/abc000000000000000000001/delete"]').length, 1); }); - it('should display a "Run" button', function () { + it('should display a "Run" button', function() { assert.strictEqual(this.last.dom.querySelectorAll('[href="/abc000000000000000000001/run"]').length, 1); }); - it('should display a "Download CSV" button for the latest result', function () { + it('should display a "Download CSV" button for the latest result', function() { assert.strictEqual(this.last.dom.querySelectorAll('[href="/abc000000000000000000001/def000000000000000000001.csv"]').length, 1); }); - it('should display a "Download JSON" button for the latest result', function () { + it('should display a "Download JSON" button for the latest result', function() { assert.strictEqual(this.last.dom.querySelectorAll('[href="/abc000000000000000000001/def000000000000000000001.json"]').length, 1); }); - it('should display links to all results', function () { + it('should display links to all results', function() { assert.isDefined(this.last.dom.querySelectorAll('[href="/abc000000000000000000001/def000000000000000000001"]')[0]); assert.isDefined(this.last.dom.querySelectorAll('[href="/abc000000000000000000001/def000000000000000000003"]')[0]); }); - it('should display errors', function () { + it('should display errors', function() { var elem = this.last.dom.querySelectorAll('[data-test=task-errors]')[0]; assert.isDefined(elem); assert.match(elem.textContent, /errors \( 1 \)/i); }); - it('should display warnings', function () { + it('should display warnings', function() { var elem = this.last.dom.querySelectorAll('[data-test=task-warnings]')[0]; assert.isDefined(elem); assert.match(elem.textContent, /warnings \( 2 \)/i); }); - it('should display notices', function () { + it('should display notices', function() { var elem = this.last.dom.querySelectorAll('[data-test=task-notices]')[0]; assert.isDefined(elem); assert.match(elem.textContent, /notices \( 3 \)/i); @@ -78,9 +78,9 @@ describe('GET /', function () { }); - describe('when task has no results', function () { + describe('when task has no results', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000003' @@ -88,17 +88,17 @@ describe('GET /', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should display a "Run" button', function () { + it('should display a "Run" button', function() { var elem = this.last.dom.querySelectorAll('[data-test=run-task]'); assert.strictEqual(elem.length, 1); assert.strictEqual(elem[0].getAttribute('href'), '/abc000000000000000000003/run'); }); - it('should display a message indicating that there are no results', function () { + it('should display a message indicating that there are no results', function() { var alert = this.last.dom.querySelectorAll('[data-test=alert]')[0]; assert.isDefined(alert); assert.match(alert.textContent, /there are no results to show/i); diff --git a/test/integration/route/task/run.js b/test/integration/route/task/run.js index 12d4d9f..bb5c22e 100644 --- a/test/integration/route/task/run.js +++ b/test/integration/route/task/run.js @@ -17,9 +17,9 @@ var assert = require('proclaim'); -describe('GET //run', function () { +describe('GET //run', function() { - beforeEach(function (done) { + beforeEach(function(done) { var req = { method: 'GET', endpoint: '/abc000000000000000000001/run' @@ -27,15 +27,15 @@ describe('GET //run', function () { this.navigate(req, done); }); - it('should send a 200 status', function () { + it('should send a 200 status', function() { assert.strictEqual(this.last.status, 200); }); - it('should redirect me to the task page', function () { + it('should redirect me to the task page', function() { assert.strictEqual(this.last.request.uri.pathname, '/abc000000000000000000001'); }); - it('should display a success message', function () { + it('should display a success message', function() { var alert = this.last.dom.querySelectorAll('[data-test=alert]')[0]; assert.isDefined(alert); assert.match(alert.textContent, /new results are being generated/i); diff --git a/test/integration/setup.js b/test/integration/setup.js index 9904a6c..dc7c48c 100644 --- a/test/integration/setup.js +++ b/test/integration/setup.js @@ -22,24 +22,24 @@ var loadFixtures = require('pa11y-webservice/data/fixture/load'); var request = require('request'); // Run before all tests -before(function (done) { +before(function(done) { this.baseUrl = 'http://localhost:' + config.port; this.last = {}; this.navigate = createNavigator(this.baseUrl, this.last); this.webservice = createWebserviceClient(config); - assertTestAppIsRunning(this.baseUrl, function () { + assertTestAppIsRunning(this.baseUrl, function() { loadFixtures('test', config.webservice, done); }); }); // Run after each test -afterEach(function (done) { +afterEach(function(done) { loadFixtures('test', config.webservice, done); }); // Check that the test application is running, and exit if not -function assertTestAppIsRunning (url, done) { - request(url, function (err) { +function assertTestAppIsRunning(url, done) { + request(url, function(err) { if (err) { console.error('Error: Test app not started; run with `NODE_ENV=test node index.js`'); process.exit(1); diff --git a/view/helper/date.js b/view/helper/date.js index 72c6990..a27c25f 100644 --- a/view/helper/date.js +++ b/view/helper/date.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -19,20 +19,20 @@ var moment = require('moment'); module.exports = helper; -function helper (register) { +function helper(register) { // Format a date with Moment - register('date-format', function (context, block) { + register('date-format', function(context, block) { var format = block.hash.format || 'YYYY-MM-DD HH:mm:ss'; return moment(context).format(format); }); // Get a relative date - register('date-relative', function (context) { + register('date-relative', function(context) { return moment(context).fromNow(); }); - register('date-timestamp', function (context) { + register('date-timestamp', function(context) { return moment(context).valueOf(); }); diff --git a/view/helper/string.js b/view/helper/string.js index 0f7f1d1..ddfa658 100644 --- a/view/helper/string.js +++ b/view/helper/string.js @@ -2,10 +2,10 @@ module.exports = helper; -function helper (register) { +function helper(register) { // Convert a string to lower-case - register('lowercase', function (context) { + register('lowercase', function(context) { return context.toLowerCase(); }); diff --git a/view/helper/url.js b/view/helper/url.js index 698e308..72b9ce9 100644 --- a/view/helper/url.js +++ b/view/helper/url.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -17,10 +17,10 @@ module.exports = helper; -function helper (register) { +function helper(register) { // Simplify url by removing (eg http://, https://, trailing slashes) from url - register('simplify-url', function (context) { + register('simplify-url', function(context) { return context.replace(/^https?:\/\//i, '').replace(/\/$/, '').toLowerCase(); }); diff --git a/view/presenter/ignore.js b/view/presenter/ignore.js index ccf32be..44e7fca 100644 --- a/view/presenter/ignore.js +++ b/view/presenter/ignore.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -20,21 +20,21 @@ var rules = createStandardDescriptionMap(standardsArray); module.exports = presentIgnoreRules; -function presentIgnoreRules (ignore) { - return ignore.map(function (name) { - return { - name: name, - description: rules[name] - }; - }); +function presentIgnoreRules(ignore) { + return ignore.map(function(name) { + return { + name: name, + description: rules[name] + }; + }); } -function createStandardDescriptionMap (standards) { - var map = {}; - standards.forEach(function (standard) { - standard.rules.forEach(function (rule) { - map[rule.name] = rule.description; - }); - }); - return map; +function createStandardDescriptionMap(standards) { + var map = {}; + standards.forEach(function(standard) { + standard.rules.forEach(function(rule) { + map[rule.name] = rule.description; + }); + }); + return map; } diff --git a/view/presenter/result-list.js b/view/presenter/result-list.js index ef29f00..f27c908 100644 --- a/view/presenter/result-list.js +++ b/view/presenter/result-list.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -20,13 +20,13 @@ var moment = require('moment'); module.exports = presentResultList; -function presentResultList (results) { - var resultsByDay = _.groupBy(results, function (result) { - return moment(result.date).format('YYYY-MM-DD'); - }); - var uniqueDayResults = []; - _.keys(resultsByDay).forEach(function (day) { - uniqueDayResults.push(resultsByDay[day][0]); - }); - return uniqueDayResults; +function presentResultList(results) { + var resultsByDay = _.groupBy(results, function(result) { + return moment(result.date).format('YYYY-MM-DD'); + }); + var uniqueDayResults = []; + _.keys(resultsByDay).forEach(function(day) { + uniqueDayResults.push(resultsByDay[day][0]); + }); + return uniqueDayResults; } diff --git a/view/presenter/result.js b/view/presenter/result.js index 2e61d3c..f4067a7 100644 --- a/view/presenter/result.js +++ b/view/presenter/result.js @@ -1,15 +1,15 @@ // This file is part of pa11y-dashboard. -// +// // pa11y-dashboard is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// +// // pa11y-dashboard is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with pa11y-dashboard. If not, see . @@ -20,33 +20,33 @@ var presentIgnoreRules = require('./ignore'); module.exports = presentResult; -function presentResult (result) { +function presentResult(result) { - // Add additional info - result.href = '/' + result.task + '/' + result.id; - result.hrefCsv = '/' + result.task + '/' + result.id + '.csv'; - result.hrefJson = '/' + result.task + '/' + result.id + '.json'; + // Add additional info + result.href = '/' + result.task + '/' + result.id; + result.hrefCsv = '/' + result.task + '/' + result.id + '.csv'; + result.hrefJson = '/' + result.task + '/' + result.id + '.json'; - // Parse date - result.date = new Date(result.date); + // Parse date + result.date = new Date(result.date); - // Enhance the ignored rules - result.ignore = presentIgnoreRules(result.ignore); + // Enhance the ignored rules + result.ignore = presentIgnoreRules(result.ignore); - // Split out message types - if (result.results) { - var groupedByType = _.groupBy(result.results, 'type'); - ['error', 'warning', 'notice'].forEach(function (type) { - var pluralType = type + 's'; - var results = groupedByType[type] || []; - var groupedByCode = _.groupBy(results, 'code'); - result[pluralType] = _.keys(groupedByCode).map(function (group) { - var firstMessage = groupedByCode[group][0]; - firstMessage.count = groupedByCode[group].length; - return firstMessage; - }); - }); - } + // Split out message types + if (result.results) { + var groupedByType = _.groupBy(result.results, 'type'); + ['error', 'warning', 'notice'].forEach(function(type) { + var pluralType = type + 's'; + var results = groupedByType[type] || []; + var groupedByCode = _.groupBy(results, 'code'); + result[pluralType] = _.keys(groupedByCode).map(function(group) { + var firstMessage = groupedByCode[group][0]; + firstMessage.count = groupedByCode[group].length; + return firstMessage; + }); + }); + } - return result; + return result; } diff --git a/view/presenter/task.js b/view/presenter/task.js index 76e216e..70e5a89 100644 --- a/view/presenter/task.js +++ b/view/presenter/task.js @@ -20,25 +20,25 @@ var presentResult = require('./result'); module.exports = presentTask; -function presentTask (task) { +function presentTask(task) { - // Add additional info - task.href = '/' + task.id; - task.hrefDelete = '/' + task.id + '/delete'; - task.hrefRun = '/' + task.id + '/run'; - task.hrefJson = '/' + task.id + '.json'; - task.hrefEdit = '/' + task.id + '/edit'; - task.hrefIgnore = '/' + task.id + '/ignore'; - task.hrefUnignore = '/' + task.id + '/unignore'; + // Add additional info + task.href = '/' + task.id; + task.hrefDelete = '/' + task.id + '/delete'; + task.hrefRun = '/' + task.id + '/run'; + task.hrefJson = '/' + task.id + '.json'; + task.hrefEdit = '/' + task.id + '/edit'; + task.hrefIgnore = '/' + task.id + '/ignore'; + task.hrefUnignore = '/' + task.id + '/unignore'; - // Enhance the ignored rules - task.ignore = presentIgnoreRules(task.ignore); + // Enhance the ignored rules + task.ignore = presentIgnoreRules(task.ignore); - // Present the last result if present - if (task.last_result) { - task.lastResult = presentResult(task.last_result); - delete task.last_result; - } + // Present the last result if present + if (task.last_result) { + task.lastResult = presentResult(task.last_result); + delete task.last_result; + } - return task; + return task; }