2
1
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2023-12-13 21:00:40 +01:00

Update code to match eslint rules

no issue
- switch `jscs` and `jshint` inline config to `eslint` config
- fix eslint errors, predominantly in tests where the config now the main app config more closely
This commit is contained in:
Kevin Ansfield 2016-11-14 13:16:51 +00:00
parent 91dfd0cbf7
commit e74e2e039e
169 changed files with 469 additions and 529 deletions

View file

@ -1,6 +1,5 @@
/* global -moment */
/* jshint node: true */
/* jscs:disable */
/* eslint-env node */
/* eslint-disable no-var, one-var, object-shorthand, prefer-template */
var _ = require('lodash'),
fs = require('fs-extra'),
path = require('path'),
@ -63,11 +62,10 @@ module.exports = function(grunt) {
ember: {
command: function (mode) {
switch (mode) {
case 'prod':
return 'npm run build -- --environment=production --silent';
case 'dev':
return 'npm run build';
case 'prod':
return 'npm run build -- --environment=production --silent';
case 'dev':
return 'npm run build';
}
},
options: {
@ -164,9 +162,9 @@ module.exports = function(grunt) {
})
).then(function (results) {
var contributors = mergeContribs(results[1], results[2]),
contributorTemplate = '<article>\n <a href="<%= githubUrl %>" title="<%= name %>">\n' +
' <img src="{{gh-path "asset" "/img/contributors"}}/<%= name %>" alt="<%= name %>" />\n' +
' </a>\n</article>',
contributorTemplate = '<article>\n <a href="<%= githubUrl %>" title="<%= name %>">\n'
+ ' <img src="{{gh-path "asset" "/img/contributors"}}/<%= name %>" alt="<%= name %>" />\n'
+ ' </a>\n</article>',
downloadImagePromise = function (url, name) {
return new Promise(function (resolve, reject) {

View file

@ -119,9 +119,9 @@ export default BaseAdapter.extend({
// Iterate through the model's relationships and build a list
// of those that need to be pulled in via "include" from the API
model.eachRelationship(function (name, meta) {
if (meta.kind === 'hasMany' &&
Object.prototype.hasOwnProperty.call(meta.options, 'embedded') &&
meta.options.embedded === 'always') {
if (meta.kind === 'hasMany'
&& Object.prototype.hasOwnProperty.call(meta.options, 'embedded')
&& meta.options.embedded === 'always') {
ret.push(name);
}
});

View file

@ -16,6 +16,7 @@ export default Oauth2Authenticator.extend({
let serverTokenEndpoint = this.get('serverTokenEndpoint');
let scopesString = wrap(scope).join(' ');
// eslint-disable-next-line camelcase
data.grant_type = 'authorization_code';
if (!isEmpty(scopesString)) {

View file

@ -31,10 +31,10 @@ export default Authenticator.extend({
}),
makeRequest(url, data) {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
data.client_id = this.get('config.clientId');
data.client_secret = this.get('config.clientSecret');
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
let options = {
data,
@ -71,10 +71,10 @@ export default Authenticator.extend({
}
this.makeRequest(serverTokenEndpoint, data, headers).then((response) => {
run(() => {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
let expiresAt = this._absolutizeExpirationTime(response.expires_in);
this._scheduleAccessTokenRefresh(response.expires_in, expiresAt, response.refresh_token);
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
if (!isEmpty(expiresAt)) {
response = assign(response, {'expires_at': expiresAt});

View file

@ -6,7 +6,7 @@ import {isBlank} from 'ember-utils';
import run from 'ember-runloop';
import {isEmberArray} from 'ember-array/utils';
import { invoke, invokeAction } from 'ember-invoke-action';
import {invoke, invokeAction} from 'ember-invoke-action';
import {
isVersionMismatchError,
isRequestEntityTooLargeError,
@ -212,9 +212,8 @@ export default Component.extend({
fileSelected(fileList) {
// can't use array destructuring here as FileList is not a strict
// array and fails in Safari
// jscs:disable requireArrayDestructuring
// eslint-disable-next-line ember-suave/prefer-destructuring
let file = fileList[0];
// jscs:enable requireArrayDestructuring
let validationResult = this._validate(file);
this.set('file', file);

View file

@ -232,9 +232,8 @@ export default Component.extend({
fileSelected(fileList) {
// can't use array destructuring here as FileList is not a strict
// array and fails in Safari
// jscs:disable requireArrayDestructuring
// eslint-disable-next-line ember-suave/prefer-destructuring
let file = fileList[0];
// jscs:enable requireArrayDestructuring
let validationResult = this._validate(file);
this.set('file', file);

View file

@ -1,5 +1,5 @@
/* global key */
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Component from 'ember-component';
import RSVP from 'rsvp';
import computed from 'ember-computed';
@ -16,8 +16,7 @@ export function computedGroup(category) {
return this.get('content').filter((item) => {
let search = new RegExp(this.get('currentSearch'), 'ig');
return (item.category === category) &&
item.title.match(search);
return (item.category === category) && item.title.match(search);
});
});
}

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import {A as emberA, isEmberArray} from 'ember-array/utils';
import computed from 'ember-computed';
import {isBlank} from 'ember-utils';

View file

@ -1,4 +1,3 @@
/*jshint scripturl:true*/
import $ from 'jquery';
import Component from 'ember-component';
import {htmlSafe} from 'ember-string';

View file

@ -1,4 +1,4 @@
/*global device*/
/* global device */
import computed from 'ember-computed';
import GhostInput from 'ghost-admin/components/gh-input';

View file

@ -7,8 +7,8 @@ export default Controller.extend({
session: injectService(),
showNavMenu: computed('currentPath', 'session.isAuthenticated', function () {
return (this.get('currentPath') !== 'error404' || this.get('session.isAuthenticated')) &&
!this.get('currentPath').match(/(signin|signup|setup|reset)/);
return (this.get('currentPath') !== 'error404' || this.get('session.isAuthenticated'))
&& !this.get('currentPath').match(/(signin|signup|setup|reset)/);
}),
topNotificationCount: 0,

View file

@ -258,8 +258,8 @@ export default Controller.extend(SettingsMenuMixin, {
// Validate new Published date
if (!newPublishedAt.isValid()) {
errMessage = 'Published Date must be a valid date with format: ' +
'DD MMM YY @ HH:mm (e.g. 6 Dec 14 @ 15:00)';
errMessage = 'Published Date must be a valid date with format: '
+ 'DD MMM YY @ HH:mm (e.g. 6 Dec 14 @ 15:00)';
}
// Date is a valid date, so now make it UTC

View file

@ -166,16 +166,16 @@ export default Controller.extend(SettingsSaveMixin, {
let username = [];
if (newUrl.match(/(?:facebook\.com\/)(\S+)/)) {
[ , username ] = newUrl.match(/(?:facebook\.com\/)(\S+)/);
[, username] = newUrl.match(/(?:facebook\.com\/)(\S+)/);
} else {
[ , username ] = newUrl.match(/(?:https\:\/\/|http\:\/\/)?(?:www\.)?(?:\w+\.\w+\/+)?(\S+)/mi);
[, username] = newUrl.match(/(?:https\:\/\/|http\:\/\/)?(?:www\.)?(?:\w+\.\w+\/+)?(\S+)/mi);
}
// check if we have a /page/username or without
if (username.match(/^(?:\/)?(pages?\/\S+)/mi)) {
// we got a page url, now save the username without the / in the beginning
[ , username ] = username.match(/^(?:\/)?(pages?\/\S+)/mi);
[, username] = username.match(/^(?:\/)?(pages?\/\S+)/mi);
} else if (username.match(/^(http|www)|(\/)/) || !username.match(/^([a-z\d\.]{5,50})$/mi)) {
errMessage = !username.match(/^([a-z\d\.]{5,50})$/mi) ? 'Your Page name is not a valid Facebook Page name' : 'The URL must be in a format like https://www.facebook.com/yourPage';
@ -198,8 +198,8 @@ export default Controller.extend(SettingsSaveMixin, {
});
});
} else {
errMessage = 'The URL must be in a format like ' +
'https://www.facebook.com/yourPage';
errMessage = 'The URL must be in a format like '
+ 'https://www.facebook.com/yourPage';
this.get('model.errors').add('facebook', errMessage);
this.get('model.hasValidated').pushObject('facebook');
return;
@ -233,7 +233,7 @@ export default Controller.extend(SettingsSaveMixin, {
let username = [];
if (newUrl.match(/(?:twitter\.com\/)(\S+)/)) {
[ , username] = newUrl.match(/(?:twitter\.com\/)(\S+)/);
[, username] = newUrl.match(/(?:twitter\.com\/)(\S+)/);
} else {
[username] = newUrl.match(/([^/]+)\/?$/mi);
}
@ -261,8 +261,8 @@ export default Controller.extend(SettingsSaveMixin, {
});
});
} else {
errMessage = 'The URL must be in a format like ' +
'https://twitter.com/yourUsername';
errMessage = 'The URL must be in a format like '
+ 'https://twitter.com/yourUsername';
this.get('model.errors').add('twitter', errMessage);
this.get('model.hasValidated').pushObject('twitter');
return;

View file

@ -88,8 +88,8 @@ export default Controller.extend({
validationResult.forEach((error) => {
// Only one error type here so far, but one day the errors might be more detailed
switch (error.error) {
case 'email':
errors.add(property, `${error.user} is not a valid email.`);
case 'email':
errors.add(property, `${error.user} is not a valid email.`);
}
});

View file

@ -44,9 +44,9 @@ export default Controller.extend({
}),
deleteUserActionIsVisible: computed('currentUser', 'canAssignRoles', 'user', function () {
if ((this.get('canAssignRoles') && this.get('isNotOwnProfile') && !this.get('user.isOwner')) ||
(this.get('currentUser.isEditor') && (this.get('isNotOwnProfile') ||
this.get('user.isAuthor')))) {
if ((this.get('canAssignRoles') && this.get('isNotOwnProfile') && !this.get('user.isOwner'))
|| (this.get('currentUser.isEditor') && (this.get('isNotOwnProfile')
|| this.get('user.isAuthor')))) {
return true;
}
}),
@ -235,16 +235,16 @@ export default Controller.extend({
let username = [];
if (newUrl.match(/(?:facebook\.com\/)(\S+)/)) {
[ , username ] = newUrl.match(/(?:facebook\.com\/)(\S+)/);
[, username] = newUrl.match(/(?:facebook\.com\/)(\S+)/);
} else {
[ , username ] = newUrl.match(/(?:https\:\/\/|http\:\/\/)?(?:www\.)?(?:\w+\.\w+\/+)?(\S+)/mi);
[, username] = newUrl.match(/(?:https\:\/\/|http\:\/\/)?(?:www\.)?(?:\w+\.\w+\/+)?(\S+)/mi);
}
// check if we have a /page/username or without
if (username.match(/^(?:\/)?(pages?\/\S+)/mi)) {
// we got a page url, now save the username without the / in the beginning
[ , username ] = username.match(/^(?:\/)?(pages?\/\S+)/mi);
[, username] = username.match(/^(?:\/)?(pages?\/\S+)/mi);
} else if (username.match(/^(http|www)|(\/)/) || !username.match(/^([a-z\d\.]{5,50})$/mi)) {
errMessage = !username.match(/^([a-z\d\.]{5,50})$/mi) ? 'Your Username is not a valid Facebook Username' : 'The URL must be in a format like https://www.facebook.com/yourUsername';
@ -268,8 +268,8 @@ export default Controller.extend({
});
});
} else {
errMessage = 'The URL must be in a format like ' +
'https://www.facebook.com/yourUsername';
errMessage = 'The URL must be in a format like '
+ 'https://www.facebook.com/yourUsername';
this.get('user.errors').add('facebook', errMessage);
this.get('user.hasValidated').pushObject('facebook');
return;
@ -304,7 +304,7 @@ export default Controller.extend({
let username = [];
if (newUrl.match(/(?:twitter\.com\/)(\S+)/)) {
[ , username] = newUrl.match(/(?:twitter\.com\/)(\S+)/);
[, username] = newUrl.match(/(?:twitter\.com\/)(\S+)/);
} else {
[username] = newUrl.match(/([^/]+)\/?$/mi);
}
@ -333,8 +333,8 @@ export default Controller.extend({
});
});
} else {
errMessage = 'The URL must be in a format like ' +
'https://twitter.com/yourUsername';
errMessage = 'The URL must be in a format like '
+ 'https://twitter.com/yourUsername';
this.get('user.errors').add('twitter', errMessage);
this.get('user.hasValidated').pushObject('twitter');
return;

View file

@ -17,9 +17,9 @@ export default helper(function (params) {
'<pre class="iframe-embed-placeholder">Embedded iFrame</pre>');
// sanitize HTML
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-disable camelcase */
escapedhtml = html_sanitize(escapedhtml, cajaSanitizers.url, cajaSanitizers.id);
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-enable camelcase */
return htmlSafe(escapedhtml);
});

View file

@ -1,8 +1,9 @@
/* global Showdown, html_sanitize*/
/* global Showdown, html_sanitize */
import {helper} from 'ember-helper';
import {htmlSafe} from 'ember-string';
import cajaSanitizers from 'ghost-admin/utils/caja-sanitizers';
// eslint-disable-next-line new-cap
let showdown = new Showdown.converter({extensions: ['ghostimagepreview', 'ghostgfm', 'footnotes', 'highlight']});
export function formatMarkdown(params) {
@ -23,9 +24,8 @@ export function formatMarkdown(params) {
'<pre class="iframe-embed-placeholder">Embedded iFrame</pre>');
// sanitize html
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-disable-next-line camelcase */
escapedhtml = html_sanitize(escapedhtml, cajaSanitizers.url, cajaSanitizers.id);
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
return htmlSafe(escapedhtml);
}

View file

@ -5,7 +5,7 @@ export function timeToSchedule(params) {
return;
}
let [ , blogTimezone] = params;
let [, blogTimezone] = params;
let [time] = params;
if (blogTimezone.get('isFulfilled')) {

View file

@ -24,21 +24,21 @@ export default helper(function (params) {
}
switch (path.toString()) {
case 'blog':
base = paths.blogRoot;
break;
case 'admin':
base = paths.adminRoot;
break;
case 'asset':
base = paths.assetRoot;
break;
case 'api':
base = paths.apiRoot;
break;
default:
base = paths.blogRoot;
break;
case 'blog':
base = paths.blogRoot;
break;
case 'admin':
base = paths.adminRoot;
break;
case 'asset':
base = paths.assetRoot;
break;
case 'api':
base = paths.apiRoot;
break;
default:
base = paths.blogRoot;
break;
}
// handle leading and trailing slashes

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Mirage from 'ember-cli-mirage';
import {isBlank} from 'ember-utils';
import $ from 'jquery';
@ -31,10 +31,9 @@ export default function mockAuthentication(server) {
});
server.post('/authentication/passwordreset', function (db, request) {
// jscs:disable requireObjectDestructuring
let {passwordreset} = JSON.parse(request.requestBody);
// eslint-disable-next-line ember-suave/prefer-destructuring
let email = passwordreset[0].email;
// jscs:enable requireObjectDestructuring
if (email === 'unknown@example.com') {
return new Mirage.Response(404, {}, {

View file

@ -33,7 +33,7 @@ export default function mockInvites(server) {
db.invites.remove(oldInvite.id);
}
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
attrs.token = `${db.invites.length}-token`;
attrs.expires = moment.utc().add(1, 'day').unix();
attrs.created_at = moment.utc().format();
@ -41,7 +41,7 @@ export default function mockInvites(server) {
attrs.updated_at = moment.utc().format();
attrs.updated_by = 1;
attrs.status = 'sent';
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
let invite = db.invites.insert(attrs);

View file

@ -1,7 +1,7 @@
export default function mockRoles(server) {
server.get('/roles/', function (db, request) {
if (request.queryParams.permissions === 'assign') {
let roles = db.roles.find([1,2,3]);
let roles = db.roles.find([1, 2, 3]);
return {roles};
}

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Mirage from 'ember-cli-mirage';
import {paginatedResponse} from '../utils';
@ -48,7 +48,7 @@ export default function mockSubscribers(server) {
return new Mirage.Response(204, {}, {});
});
server.post('/subscribers/csv/', function (/*db, request*/) {
server.post('/subscribers/csv/', function () {
// NB: we get a raw FormData object with no way to inspect it in Chrome
// until version 50 adds the additional read methods
// https://developer.mozilla.org/en-US/docs/Web/API/FormData#Browser_compatibility

View file

@ -3,7 +3,7 @@ import Mirage from 'ember-cli-mirage';
let themeCount = 1;
export default function mockThemes(server) {
server.post('/themes/upload/', function (db/*, request*/) {
server.post('/themes/upload/', function (db) {
let [availableThemes] = db.settings.where({key: 'availableThemes'});
// pretender/mirage doesn't currently process FormData so we can't use
// any info passed in through the request

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Mirage from 'ember-cli-mirage';
import {isBlank} from 'ember-utils';
import {assign} from 'ember-platform';

View file

@ -1,4 +1,3 @@
/* jscs:disable */
import Mirage from 'ember-cli-mirage';
export default Mirage.Factory.extend({

View file

@ -1,4 +1,3 @@
/* jscs:disable */
import Mirage from 'ember-cli-mirage';
export default Mirage.Factory.extend({

View file

@ -1,4 +1,3 @@
/* jscs:disable */
import Mirage, {faker} from 'ember-cli-mirage';
export default Mirage.Factory.extend({

View file

@ -1,4 +1,3 @@
/* jscs:disable */
import Mirage from 'ember-cli-mirage';
export default Mirage.Factory.extend({

View file

@ -1,4 +1,3 @@
/* jscs:disable */
import Mirage from 'ember-cli-mirage';
export default Mirage.Factory.extend({

View file

@ -6,8 +6,7 @@ let randomDate = function randomDate(start = moment().subtract(30, 'days').toDat
let statuses = ['pending', 'subscribed'];
// jscs:disable requireBlocksOnNewline
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-disable camelcase, brace-style */
export default Mirage.Factory.extend({
uuid(i) { return `subscriber-${i}`; },
name() { return `${faker.name.firstName()} ${faker.name.lastName()}`; },

View file

@ -1,4 +1,3 @@
/* jscs:disable */
import Mirage from 'ember-cli-mirage';
export default Mirage.Factory.extend({
@ -19,5 +18,5 @@ export default Mirage.Factory.extend({
return {
posts: 1
};
},
}
});

View file

@ -1,4 +1,3 @@
/* jscs:disable */
import Mirage from 'ember-cli-mirage';
export default Mirage.Factory.extend({

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
export default [
{
id: 1,

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
export default [
{
created_at: '2015-09-11T09:44:30.805Z',

View file

@ -172,8 +172,8 @@ export default Mixin.create({
// if the two "scratch" properties (title and content) match the model, then
// it's ok to set hasDirtyAttributes to false
if (model.get('titleScratch') === model.get('title') &&
JSON.stringify(model.get('scratch')) === JSON.stringify(model.get('mobiledoc'))) {
if (model.get('titleScratch') === model.get('title')
&& JSON.stringify(model.get('scratch')) === JSON.stringify(model.get('mobiledoc'))) {
this.set('hasDirtyAttributes', false);
}
},
@ -241,11 +241,11 @@ export default Mixin.create({
// used on window.onbeforeunload
unloadDirtyMessage() {
return '==============================\n\n' +
'Hey there! It looks like you\'re in the middle of writing' +
' something and you haven\'t saved all of your content.' +
'\n\nSave before you go!\n\n' +
'==============================';
return '==============================\n\n'
+ 'Hey there! It looks like you\'re in the middle of writing'
+ ' something and you haven\'t saved all of your content.'
+ '\n\nSave before you go!\n\n'
+ '==============================';
},
// TODO: This has to be moved to the I18n localization file.
@ -318,7 +318,7 @@ export default Mixin.create({
let errorMessage;
function isString(str) {
/*global toString*/
/* global toString */
return toString.call(str) === '[object String]';
}

View file

@ -59,14 +59,14 @@ export default Mixin.create(styleBody, ShortcutsRoute, {
}, 100);
}
fromNewToEdit = this.get('routeName') === 'editor.new' &&
transition.targetName === 'editor.edit' &&
transition.intent.contexts &&
transition.intent.contexts[0] &&
transition.intent.contexts[0].id === model.get('id');
fromNewToEdit = this.get('routeName') === 'editor.new'
&& transition.targetName === 'editor.edit'
&& transition.intent.contexts
&& transition.intent.contexts[0]
&& transition.intent.contexts[0].id === model.get('id');
deletedWithoutChanges = state.isDeleted &&
(state.isSaving || !state.hasDirtyAttributes);
deletedWithoutChanges = state.isDeleted
&& (state.isSaving || !state.hasDirtyAttributes);
if (!fromNewToEdit && !deletedWithoutChanges && controllerIsDirty) {
transition.abort();

View file

@ -1,11 +1,11 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Ember from 'ember';
import computed, {equal, filterBy} from 'ember-computed';
import injectService from 'ember-service/inject';
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo, hasMany } from 'ember-data/relationships';
import {belongsTo, hasMany} from 'ember-data/relationships';
import ValidationEngine from 'ghost-admin/mixins/validation-engine';

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import computed from 'ember-computed';
import Model from 'ember-data/model';
import attr from 'ember-data/attr';

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import ValidationEngine from 'ghost-admin/mixins/validation-engine';

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import {equal} from 'ember-computed';
import observer from 'ember-metal/observer';
import injectService from 'ember-service/inject';

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import {hasMany} from 'ember-data/relationships';

View file

@ -161,44 +161,44 @@ export default Route.extend(ApplicationRouteMixin, ShortcutsRoute, {
error(error, transition) {
if (error && isEmberArray(error.errors)) {
switch (error.errors[0].errorType) {
case 'NotFoundError': {
if (transition) {
transition.abort();
}
case 'NotFoundError':
if (transition) {
transition.abort();
}
let routeInfo = transition.handlerInfos[transition.handlerInfos.length - 1];
let router = this.get('router');
let params = [];
let routeInfo = transition.handlerInfos[transition.handlerInfos.length - 1];
let router = this.get('router');
let params = [];
for (let key of Object.keys(routeInfo.params)) {
params.push(routeInfo.params[key]);
}
for (let key of Object.keys(routeInfo.params)) {
params.push(routeInfo.params[key]);
}
return this.transitionTo('error404', router.generate(routeInfo.name, ...params).replace('/ghost/', '').replace(/^\//g, ''));
}
case 'VersionMismatchError': {
if (transition) {
transition.abort();
}
return this.transitionTo('error404', router.generate(routeInfo.name, ...params).replace('/ghost/', '').replace(/^\//g, ''));
this.get('upgradeStatus').requireUpgrade();
return false;
}
case 'Maintenance': {
if (transition) {
transition.abort();
}
case 'VersionMismatchError':
if (transition) {
transition.abort();
}
this.get('upgradeStatus').requireUpgrade();
this.get('upgradeStatus').maintenanceAlert();
return false;
}
default: {
this.get('notifications').showAPIError(error);
// don't show the 500 page if we weren't navigating
if (!transition) {
return false;
case 'Maintenance':
if (transition) {
transition.abort();
}
this.get('upgradeStatus').maintenanceAlert();
return false;
default:
this.get('notifications').showAPIError(error);
// don't show the 500 page if we weren't navigating
if (!transition) {
return false;
}
}
}
}
}

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
import base from 'ghost-admin/mixins/editor-base-route';
@ -12,13 +12,13 @@ export default AuthenticatedRoute.extend(base, {
},
model(params) {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
let query = {
id: params.post_id,
status: 'all',
staticPages: 'all'
};
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
return this.store.query('post', query).then((records) => {
let post = records.get('firstObject');

View file

@ -17,8 +17,8 @@ export default AuthenticatedRoute.extend(ShortcutsRoute, PaginationMixin, {
return this.get('session.user').then((user) => {
if (user.get('isAuthor')) {
paginationSettings.filter = paginationSettings.filter ?
`${paginationSettings.filter}+author:${user.get('slug')}` : `author:${user.get('slug')}`;
paginationSettings.filter = paginationSettings.filter
? `${paginationSettings.filter}+author:${user.get('slug')}` : `author:${user.get('slug')}`;
}
return this.loadFirstPage().then(() => {

View file

@ -3,14 +3,14 @@ import ShortcutsRoute from 'ghost-admin/mixins/shortcuts-route';
export default AuthenticatedRoute.extend(ShortcutsRoute, {
model(params) {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
let post = this.store.peekRecord('post', params.post_id);
let query = {
id: params.post_id,
status: 'all',
staticPages: 'all'
};
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
if (post) {
return post;

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
export default AuthenticatedRoute.extend({

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
import CurrentUserSettings from 'ghost-admin/mixins/current-user-settings';
import styleBody from 'ghost-admin/mixins/style-body';

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Ember from 'ember';
import ApplicationSerializer from 'ghost-admin/serializers/application';
import EmbeddedRecordsMixin from 'ember-data/serializers/embedded-records-mixin';

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import Ember from 'ember';
import ApplicationSerializer from 'ghost-admin/serializers/application';

View file

@ -218,15 +218,15 @@ let ajaxService = AjaxService.extend({
return isVersionMismatchError(status, payload);
},
isServerUnreachableError(status/*, headers, payload */) {
isServerUnreachableError(status) {
return isServerUnreachableError(status);
},
isRequestEntityTooLargeError(status/*, headers, payload */) {
isRequestEntityTooLargeError(status) {
return isRequestEntityTooLargeError(status);
},
isUnsupportedMediaTypeError(status/*, headers, payload */) {
isUnsupportedMediaTypeError(status) {
return isUnsupportedMediaTypeError(status);
},

View file

@ -25,7 +25,7 @@ export default Service.extend(_ProxyMixin, {
let timezonesUrl = this.get('ghostPaths.url').api('configuration', 'timezones');
return this.get('ajax').request(timezonesUrl).then((configTimezones) => {
let [ timezonesObj ] = configTimezones.configuration;
let [timezonesObj] = configTimezones.configuration;
timezonesObj = timezonesObj.timezones;

View file

@ -4,8 +4,7 @@ import Evented from 'ember-evented';
import BodyEventListener from 'ghost-admin/mixins/body-event-listener';
export default Service.extend(Evented, BodyEventListener, {
bodyClick(event) {
/*jshint unused:false */
bodyClick() {
this.closeDropdowns();
},

View file

@ -71,7 +71,7 @@ export default Service.extend({
// we'll always have an errors object unless we hit a
// validation error
if (!error) {
throw new EmberError(`Validation of the feature service settings model failed when updating labs.`);
throw new EmberError('Validation of the feature service settings model failed when updating labs.');
}
this.get('notifications').showAPIError(error);

View file

@ -2,7 +2,7 @@ import AdaptiveStore from 'ember-simple-auth/session-stores/adaptive';
import ghostPaths from 'ghost-admin/utils/ghost-paths';
const paths = ghostPaths();
const keyName = `ghost${(paths.subdir.indexOf('/') === 0 ? `-${paths.subdir.substr(1)}` : ``) }:session`;
const keyName = `ghost${(paths.subdir.indexOf('/') === 0 ? `-${paths.subdir.substr(1)}` : '') }:session`;
export default AdaptiveStore.extend({
localStorageKey: keyName,

View file

@ -3,7 +3,7 @@ import Transform from 'ember-data/transform';
export default Transform.extend({
deserialize(serialized) {
if (serialized) {
let [ , user ] = serialized.match(/(\S+)/);
let [, user] = serialized.match(/(\S+)/);
return `https://www.facebook.com/${user}`;
}
@ -12,7 +12,7 @@ export default Transform.extend({
serialize(deserialized) {
if (deserialized) {
let [ , user] = deserialized.match(/(?:https:\/\/)(?:www\.)(?:facebook\.com)\/(?:#!\/)?(\w+\/?\S+)/mi);
let [, user] = deserialized.match(/(?:https:\/\/)(?:www\.)(?:facebook\.com)\/(?:#!\/)?(\w+\/?\S+)/mi);
return user;
}

View file

@ -1,4 +1,4 @@
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import {A as emberA, isEmberArray} from 'ember-array/utils';
import Transform from 'ember-data/transform';
import SlackObject from 'ghost-admin/models/slack-integration';

View file

@ -3,7 +3,7 @@ import Transform from 'ember-data/transform';
export default Transform.extend({
deserialize(serialized) {
if (serialized) {
let [ , user ] = serialized.match(/@?([^\/]*)/);
let [, user] = serialized.match(/@?([^\/]*)/);
return `https://twitter.com/${user}`;
}
@ -12,7 +12,7 @@ export default Transform.extend({
serialize(deserialized) {
if (deserialized) {
let [ , user] = deserialized.match(/(?:https:\/\/)(?:twitter\.com)\/(?:#!\/)?@?([^\/]*)/);
let [, user] = deserialized.match(/(?:https:\/\/)(?:twitter\.com)\/(?:#!\/)?@?([^\/]*)/);
return `@${user}`;
}

View file

@ -1,17 +1,16 @@
/* global moment */
// jscs: disable disallowSpacesInsideParentheses
const parseDateFormats = ['DD MMM YY @ HH:mm', 'DD MMM YY HH:mm',
'D MMM YY @ HH:mm', 'D MMM YY HH:mm',
'DD MMM YYYY @ HH:mm', 'DD MMM YYYY HH:mm',
'D MMM YYYY @ HH:mm', 'D MMM YYYY HH:mm',
'DD/MM/YY @ HH:mm', 'DD/MM/YY HH:mm',
'DD/MM/YYYY @ HH:mm', 'DD/MM/YYYY HH:mm',
'DD-MM-YY @ HH:mm', 'DD-MM-YY HH:mm',
'DD-MM-YYYY @ HH:mm', 'DD-MM-YYYY HH:mm',
'YYYY-MM-DD @ HH:mm', 'YYYY-MM-DD HH:mm',
'DD MMM @ HH:mm', 'DD MMM HH:mm',
'D MMM @ HH:mm', 'D MMM HH:mm'];
const parseDateFormats = [
'DD MMM YY @ HH:mm', 'DD MMM YY HH:mm',
'D MMM YY @ HH:mm', 'D MMM YY HH:mm',
'DD MMM YYYY @ HH:mm', 'DD MMM YYYY HH:mm',
'D MMM YYYY @ HH:mm', 'D MMM YYYY HH:mm',
'DD/MM/YY @ HH:mm', 'DD/MM/YY HH:mm',
'DD/MM/YYYY @ HH:mm', 'DD/MM/YYYY HH:mm',
'DD-MM-YY @ HH:mm', 'DD-MM-YY HH:mm',
'DD-MM-YYYY @ HH:mm', 'DD-MM-YYYY HH:mm',
'YYYY-MM-DD @ HH:mm', 'YYYY-MM-DD HH:mm',
'DD MMM @ HH:mm', 'DD MMM HH:mm',
'D MMM @ HH:mm', 'D MMM HH:mm'
];
const displayDateFormat = 'DD MMM YY @ HH:mm';

View file

@ -3,6 +3,9 @@
const {toString} = Object.prototype;
export default function (value) {
return typeof value === 'number' ||
value && typeof value === 'object' && toString.call(value) === '[object Number]' || false;
return typeof value === 'number'
|| value
&& typeof value === 'object'
&& toString.call(value) === '[object Number]'
|| false;
}

View file

@ -1,7 +1,9 @@
import {capitalize} from 'ember-string';
const lowerWords = ['of', 'a', 'the', 'and', 'an', 'or', 'nor', 'but', 'is', 'if',
'then', 'else', 'when', 'at', 'from', 'by', 'on', 'off', 'for',
'in', 'out', 'over', 'to', 'into', 'with'];
const lowerWords = [
'of', 'a', 'the', 'and', 'an', 'or', 'nor', 'but', 'is', 'if',
'then', 'else', 'when', 'at', 'from', 'by', 'on', 'off', 'for',
'in', 'out', 'over', 'to', 'into', 'with'
];
export default function (input) {
let words = input.split(' ').map((word, index) => {

View file

@ -1,4 +1,4 @@
// jscs: disable
/* eslint-disable */
export default function (s) {
// replaces previous XRegExp("[^\\s\\d\\p{L}]", 'g') that was causing

View file

@ -18,9 +18,9 @@ export default BaseValidator.create({
url(model) {
let url = model.get('url');
let hasValidated = model.get('hasValidated');
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
let validatorOptions = {require_protocol: true};
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
let urlRegex = new RegExp(/^(\/|#|[a-zA-Z0-9\-]+:)/);
if (validator.empty(url)) {

View file

@ -12,8 +12,7 @@ export default BaseValidator.create({
if (!validator.empty(url) && !url.match(urlRegex)) {
model.get('errors').add(
'url',
'The URL must be in a format like ' +
'https://hooks.slack.com/services/<your personal key>'
'The URL must be in a format like https://hooks.slack.com/services/<your personal key>'
);
this.invalidate();

View file

@ -55,18 +55,16 @@ export default BaseValidator.create({
website(model) {
let website = model.get('website');
// eslint-disable-next-line camelcase
let isInvalidWebsite = !validator.isURL(website, {require_protocol: false})
|| !validator.isLength(website, 0, 2000);
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
if (this.isActive(model)) {
if (!validator.empty(website) &&
(!validator.isURL(website, {require_protocol: false}) ||
!validator.isLength(website, 0, 2000))) {
if (!validator.empty(website) && isInvalidWebsite) {
model.get('errors').add('website', 'Website is not a valid url');
this.invalidate();
}
}
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
},
roles(model) {

View file

@ -1,5 +1,4 @@
/* jshint node: true */
/* jscs:disable */
/* eslint-env node */
module.exports = function (environment) {
var ENV = {
@ -38,7 +37,7 @@ module.exports = function (environment) {
},
torii: {
}
};

View file

@ -1,4 +1,4 @@
/*jshint node:true*/
/* eslint-env node */
module.exports = {
'framework': 'mocha',
'test_page': 'tests/index.html?hidepassed',

View file

@ -5,12 +5,12 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import $ from 'jquery';
import run from 'ember-runloop';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { authenticateSession, currentSession, invalidateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {authenticateSession, invalidateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import Mirage from 'ember-cli-mirage';
import windowProxy from 'ghost-admin/utils/window-proxy';
import ghostPaths from 'ghost-admin/utils/ghost-paths';
@ -38,7 +38,7 @@ describe('Acceptance: Authentication', function () {
server.loadFixtures();
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
});
afterEach(function () {
@ -47,7 +47,7 @@ describe('Acceptance: Authentication', function () {
it('invalidates session on 401 API response', function () {
// return a 401 when attempting to retrieve users
server.get('/users/', (db, request) => {
server.get('/users/', () => {
return new Mirage.Response(401, {}, {
errors: [
{message: 'Access denied.', errorType: 'UnauthorizedError'}
@ -106,7 +106,7 @@ describe('Acceptance: Authentication', function () {
it('displays re-auth modal attempting to save with invalid session', function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
// simulate an invalid session when saving the edited post
server.put('/posts/:id/', (db, request) => {
@ -162,20 +162,20 @@ describe('Acceptance: Authentication', function () {
it('adds auth headers to jquery ajax', function (done) {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.post('/uploads', (db, request) => {
return request;
});
server.loadFixtures();
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-disable camelcase */
authenticateSession(application, {
access_token: 'test_token',
expires_in: 3600,
token_type: 'Bearer'
});
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-enable camelcase */
// necessary to visit a page to fully boot the app in testing
visit('/').andThen(() => {

View file

@ -5,10 +5,10 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import Mirage from 'ember-cli-mirage';
import sinon from 'sinon';
@ -36,7 +36,7 @@ describe('Acceptance: Editor', function() {
it('does not redirect to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
server.create('post');
authenticateSession(application);
@ -49,7 +49,7 @@ describe('Acceptance: Editor', function() {
it('does not redirect to team page when authenticated as editor', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
server.create('post');
authenticateSession(application);
@ -62,7 +62,7 @@ describe('Acceptance: Editor', function() {
it('displays 404 when post does not exist', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/editor/1');
@ -77,7 +77,7 @@ describe('Acceptance: Editor', function() {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();
@ -85,7 +85,7 @@ describe('Acceptance: Editor', function() {
});
it('renders the editor correctly, PSM Publish Date and Save Button', function () {
let posts = server.createList('post', 2);
server.createList('post', 2);
let plusTenMinPacific = moment().tz('Pacific/Kwajalein').add(10, 'minutes').format('DD MMM YY @ HH:mm').toString();
let plusTwoMinPacific = moment().tz('Pacific/Kwajalein').add(2, 'minutes').format('DD MMM YY @ HH:mm').toString();
@ -392,7 +392,7 @@ describe('Acceptance: Editor', function() {
});
it('handles title validation errors correctly', function () {
let post = server.createList('post', 1);
server.createList('post', 1);
// post id 1 is a draft, checking for draft behaviour now
visit('/editor/1');
@ -421,11 +421,11 @@ describe('Acceptance: Editor', function() {
});
it('renders first countdown notification before scheduled time', function () {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
let clock = sinon.useFakeTimers(moment().valueOf());
let post = server.create('post', {published_at: moment.utc().add(4, 'minutes'), status: 'scheduled'});
let compareDate = moment().tz('Etc/UTC').add(4, 'minutes').format('DD MMM YY @ HH:mm').toString();
let settings = server.create('setting', {activeTimezone: 'Europe/Dublin'});
server.create('post', {published_at: moment.utc().add(4, 'minutes'), status: 'scheduled'});
server.create('setting', {activeTimezone: 'Europe/Dublin'});
visit('/editor/1');
@ -451,11 +451,10 @@ describe('Acceptance: Editor', function() {
});
it('only shows option to unschedule post 2 minutes before scheduled time', function () {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
let clock = sinon.useFakeTimers(moment().valueOf());
let post = server.create('post', {published_at: moment.utc().add(2, 'minutes'), status: 'scheduled'});
let compareDate = moment().tz('Europe/Dublin').add(2, 'minutes').format('DD MMM YY @ HH:mm').toString();
let settings = server.create('setting', {activeTimezone: 'Europe/Dublin'});
server.create('post', {published_at: moment.utc().add(2, 'minutes'), status: 'scheduled'});
server.create('setting', {activeTimezone: 'Europe/Dublin'});
visit('/editor/1');
@ -475,11 +474,10 @@ describe('Acceptance: Editor', function() {
});
it.skip('lets user unschedule the post shortly before scheduled date', function () {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
let clock = sinon.useFakeTimers(moment().valueOf());
let post = server.create('post', {published_at: moment.utc().add(1, 'minute'), status: 'scheduled'});
let compareDate = moment().tz('Europe/Dublin').add(1, 'minute').format('DD MMM YY @ HH:mm').toString();
let settings = server.create('setting', {activeTimezone: 'Europe/Dublin'});
server.create('post', {published_at: moment.utc().add(1, 'minute'), status: 'scheduled'});
server.create('setting', {activeTimezone: 'Europe/Dublin'});
visit('/editor/1');

View file

@ -5,10 +5,10 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
const originalAgent = window.navigator.userAgent;
@ -47,7 +47,7 @@ describe('Acceptance: Ghost Desktop', function() {
describe('update alerts for broken versions', function () {
beforeEach(function() {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();

View file

@ -5,7 +5,7 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';

View file

@ -1,16 +1,16 @@
/* jshint expr:true */
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import {
describe,
it,
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import { errorOverride, errorReset } from 'ghost-admin/tests/helpers/adapter-error';
import {authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import {errorOverride, errorReset} from 'ghost-admin/tests/helpers/adapter-error';
import Mirage from 'ember-cli-mirage';
describe('Acceptance: Posts - Post', function() {
@ -27,7 +27,7 @@ describe('Acceptance: Posts - Post', function() {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
// load the settings fixtures
// TODO: this should always be run for acceptance tests

View file

@ -5,11 +5,10 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import run from 'ember-runloop';
import {expect} from 'chai';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
describe('Acceptance: Settings - Apps', function () {
let application;
@ -33,7 +32,7 @@ describe('Acceptance: Settings - Apps', function () {
it('redirects to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/apps');
@ -45,7 +44,7 @@ describe('Acceptance: Settings - Apps', function () {
it('redirects to team page when authenticated as editor', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/apps');
@ -58,7 +57,7 @@ describe('Acceptance: Settings - Apps', function () {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();

View file

@ -5,11 +5,11 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import $ from 'jquery';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
describe('Acceptance: Settings - Code-Injection', function() {
let application;
@ -33,7 +33,7 @@ describe('Acceptance: Settings - Code-Injection', function() {
it('redirects to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/code-injection');
@ -45,7 +45,7 @@ describe('Acceptance: Settings - Code-Injection', function() {
it('redirects to team page when authenticated as editor', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/code-injection');
@ -58,7 +58,7 @@ describe('Acceptance: Settings - Code-Injection', function() {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();

View file

@ -5,12 +5,11 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import $ from 'jquery';
import run from 'ember-runloop';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import Mirage from 'ember-cli-mirage';
import mockThemes from 'ghost-admin/mirage/config/themes';
@ -36,7 +35,7 @@ describe('Acceptance: Settings - General', function () {
it('redirects to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/general');
@ -48,7 +47,7 @@ describe('Acceptance: Settings - General', function () {
it('redirects to team page when authenticated as editor', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/general');
@ -61,7 +60,7 @@ describe('Acceptance: Settings - General', function () {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();

View file

@ -5,11 +5,11 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import $ from 'jquery';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
describe('Acceptance: Settings - Labs', function() {
let application;
@ -33,7 +33,7 @@ describe('Acceptance: Settings - Labs', function() {
it('redirects to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/labs');
@ -45,7 +45,7 @@ describe('Acceptance: Settings - Labs', function() {
it('redirects to team page when authenticated as editor', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/labs');
@ -58,7 +58,7 @@ describe('Acceptance: Settings - Labs', function() {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();

View file

@ -1,15 +1,15 @@
/* jshint expr:true */
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import {
describe,
it,
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
describe('Acceptance: Settings - Navigation', function () {
let application;
@ -33,7 +33,7 @@ describe('Acceptance: Settings - Navigation', function () {
it('redirects to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/navigation');
@ -46,7 +46,7 @@ describe('Acceptance: Settings - Navigation', function () {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
// load the settings fixtures
// TODO: this should always be run for acceptance tests

View file

@ -5,12 +5,11 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import run from 'ember-runloop';
import {expect} from 'chai';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import Mirage from 'ember-cli-mirage';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
describe('Acceptance: Settings - Apps - Slack', function () {
let application;
@ -34,7 +33,7 @@ describe('Acceptance: Settings - Apps - Slack', function () {
it('redirects to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/apps/slack');
@ -46,7 +45,7 @@ describe('Acceptance: Settings - Apps - Slack', function () {
it('redirects to team page when authenticated as editor', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/apps/slack');
@ -59,7 +58,7 @@ describe('Acceptance: Settings - Apps - Slack', function () {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();
@ -93,7 +92,7 @@ describe('Acceptance: Settings - Apps - Slack', function () {
});
andThen(() => {
server.put('/settings/', function (db, request) {
server.put('/settings/', function () {
return new Mirage.Response(402, {}, {
errors: [
{

View file

@ -1,18 +1,18 @@
/* jshint expr:true */
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
import {
describe,
it,
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import $ from 'jquery';
import run from 'ember-runloop';
import startApp from '../../helpers/start-app';
import destroyApp from '../../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import { errorOverride, errorReset } from 'ghost-admin/tests/helpers/adapter-error';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import {errorOverride, errorReset} from 'ghost-admin/tests/helpers/adapter-error';
import Mirage from 'ember-cli-mirage';
// Grabbed from keymaster's testing code because Ember's `keyEvent` helper
@ -64,7 +64,7 @@ describe('Acceptance: Settings - Tags', function () {
it('redirects to team page when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
visit('/settings/navigation');
@ -77,7 +77,7 @@ describe('Acceptance: Settings - Tags', function () {
describe('when logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
// load the settings fixtures
// TODO: this should always be run for acceptance tests

View file

@ -1,18 +1,16 @@
/* jshint expr:true */
import Ember from 'ember';
import {
describe,
it,
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { invalidateSession, authenticateSession } from '../helpers/ember-simple-auth';
import { enableGhostOAuth } from '../helpers/configuration';
import {invalidateSession, authenticateSession} from '../helpers/ember-simple-auth';
import {enableGhostOAuth} from '../helpers/configuration';
import Mirage from 'ember-cli-mirage';
import $ from 'jquery';
import {
stubSuccessfulOAuthConnect,
stubFailedOAuthConnect
@ -31,7 +29,7 @@ describe('Acceptance: Setup', function () {
it('redirects if already authenticated', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
@ -296,7 +294,7 @@ describe('Acceptance: Setup', function () {
}
// TODO: duplicated from mirage/config/invites - extract method?
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
params.token = `${db.invites.length}-token`;
params.expires = moment.utc().add(1, 'day').unix();
params.created_at = moment.utc().format();
@ -304,7 +302,7 @@ describe('Acceptance: Setup', function () {
params.updated_at = moment.utc().format();
params.updated_by = 1;
params.status = 'sent';
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
// valid
invite = db.invites.insert(params);

View file

@ -5,12 +5,12 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import $ from 'jquery';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { invalidateSession, authenticateSession } from '../helpers/ember-simple-auth';
import { enableGhostOAuth } from '../helpers/configuration';
import {invalidateSession, authenticateSession} from '../helpers/ember-simple-auth';
import {enableGhostOAuth} from '../helpers/configuration';
import Mirage from 'ember-cli-mirage';
import {
stubSuccessfulOAuthConnect,
@ -30,7 +30,7 @@ describe('Acceptance: Signin', function() {
it('redirects if already authenticated', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
authenticateSession(application);
@ -43,10 +43,10 @@ describe('Acceptance: Signin', function() {
describe('when attempting to signin', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
server.post('/authentication/token', function (db, request) {
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-disable camelcase */
let {
grant_type: grantType,
username,
@ -73,7 +73,7 @@ describe('Acceptance: Signin', function() {
}]
});
}
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers
/* eslint-enable camelcase */
});
});

View file

@ -5,11 +5,10 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import $ from 'jquery';
import { enableGhostOAuth } from '../helpers/configuration';
import {enableGhostOAuth} from '../helpers/configuration';
import {
stubSuccessfulOAuthConnect,
stubFailedOAuthConnect
@ -29,7 +28,7 @@ describe('Acceptance: Signup', function() {
});
it('can signup successfully', function() {
server.get('/authentication/invitation', function (db, request) {
server.get('/authentication/invitation', function () {
return {
invitation: [{valid: true}]
};
@ -151,12 +150,12 @@ describe('Acceptance: Signup', function() {
let user = server.create('user', {name: 'Test Invite Creator'});
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
server.create('invite', {
email: 'kevin+test2@ghost.org',
created_by: user.id
});
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
});
it('can sign up sucessfully', function () {

View file

@ -5,10 +5,10 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {invalidateSession, authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
describe('Acceptance: Subscribers', function() {
let application;
@ -32,7 +32,7 @@ describe('Acceptance: Subscribers', function() {
it('redirects editors to posts', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
authenticateSession(application);
visit('/subscribers');
@ -46,7 +46,7 @@ describe('Acceptance: Subscribers', function() {
it('redirects authors to posts', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
authenticateSession(application);
visit('/subscribers');
@ -61,7 +61,7 @@ describe('Acceptance: Subscribers', function() {
describe('an admin', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();

View file

@ -5,14 +5,13 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { invalidateSession, authenticateSession } from '../helpers/ember-simple-auth';
import { errorOverride, errorReset } from '../helpers/adapter-error';
import { enableGhostOAuth } from '../helpers/configuration';
import {invalidateSession, authenticateSession} from '../helpers/ember-simple-auth';
import {errorOverride, errorReset} from '../helpers/adapter-error';
import {enableGhostOAuth} from '../helpers/configuration';
import Mirage from 'ember-cli-mirage';
import $ from 'jquery';
describe('Acceptance: Team', function () {
let application;
@ -36,7 +35,7 @@ describe('Acceptance: Team', function () {
it('redirects correctly when authenticated as author', function () {
let role = server.create('role', {name: 'Author'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {slug: 'no-access'});
@ -50,7 +49,7 @@ describe('Acceptance: Team', function () {
it('redirects correctly when authenticated as editor', function () {
let role = server.create('role', {name: 'Editor'});
let user = server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {roles: [role], slug: 'test-user'});
server.create('user', {slug: 'no-access'});
@ -75,7 +74,7 @@ describe('Acceptance: Team', function () {
});
it('it renders and navigates correctly', function () {
let user1 = server.create('user');
server.create('user');
let user2 = server.create('user');
visit('/team');
@ -115,8 +114,6 @@ describe('Acceptance: Team', function () {
});
it('can manage invites', function () {
let emailInputField = '.fullscreen-modal input[name="email"]';
visit('/team');
andThen(() => {
@ -354,11 +351,10 @@ describe('Acceptance: Team', function () {
});
it('can delete users', function () {
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
let user1 = server.create('user');
let user2 = server.create('user');
let post1 = server.create('post', {author_id: user2.id});
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
// eslint-disable-next-line camelcase
server.create('post', {author_id: user2.id});
visit('/team');
click(`a.user-list-item:contains("${user1.name}")`);
@ -691,11 +687,10 @@ describe('Acceptance: Team', function () {
expect(lastRequest.url, 'password request URL')
.to.match(/\/users\/password/);
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
// eslint-disable-next-line camelcase
expect(params.password[0].user_id).to.equal(user.id.toString());
expect(params.password[0].newPassword).to.equal('password');
expect(params.password[0].ne2Password).to.equal('password');
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
// clears the fields
expect(
@ -814,12 +809,12 @@ describe('Acceptance: Team', function () {
});
describe('when logged in as author', function () {
let author, authorRole, adminRole;
let adminRole, authorRole;
beforeEach(function () {
adminRole = server.create('role', {name: 'Administrator'});
authorRole = server.create('role', {name: 'Author'});
author = server.create('user', {roles: [authorRole]});
server.create('user', {roles: [authorRole]});
server.loadFixtures();
@ -836,8 +831,8 @@ describe('Acceptance: Team', function () {
});
it('can access the team page', function () {
let user1 = server.create('user', {roles: [adminRole]});
let invite1 = server.create('invite', {roles: [authorRole]});
server.create('user', {roles: [adminRole]});
server.create('invite', {roles: [authorRole]});
errorOverride();

View file

@ -5,10 +5,10 @@ import {
beforeEach,
afterEach
} from 'mocha';
import { expect } from 'chai';
import {expect} from 'chai';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';
import { invalidateSession, authenticateSession } from 'ghost-admin/tests/helpers/ember-simple-auth';
import {authenticateSession} from 'ghost-admin/tests/helpers/ember-simple-auth';
import Mirage from 'ember-cli-mirage';
let versionMismatchResponse = function () {
@ -34,7 +34,7 @@ describe('Acceptance: Version Mismatch', function() {
describe('logged in', function () {
beforeEach(function () {
let role = server.create('role', {name: 'Administrator'});
let user = server.create('user', {roles: [role]});
server.create('user', {roles: [role]});
server.loadFixtures();

View file

@ -7,8 +7,7 @@ import Test from 'ember-test';
// ember-cli-shims doesn't export Logger
const {Logger} = Ember;
let originalException;
let originalLoggerError;
let originalException, originalLoggerError;
export function errorOverride() {
originalException = Test.adapter.exception;

View file

@ -16,6 +16,7 @@ export function createFile(content = ['test'], options = {}) {
export function fileUpload($element, content, options) {
let file = createFile(content, options);
// eslint-disable-next-line new-cap
let event = $.Event('change', {
testingFiles: [file]
});

View file

@ -1,5 +1,5 @@
/* jscs:disable */
import { module } from 'qunit';
import {module} from 'qunit';
import RSVP from 'rsvp';
import startApp from '../helpers/start-app';
import destroyApp from '../helpers/destroy-app';

View file

@ -14,13 +14,13 @@ const stubSuccessfulOAuthConnect = function stubSuccessfulOAuthConnect(applicati
provider.open = function () {
return RSVP.Promise.resolve({
/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-disable camelcase */
authorizationCode: generateCode(),
client_id: 'ghost-admin',
client_secret: generateSecret(),
provider: 'ghost-oauth2',
redirectUrl: 'http://localhost:2368/ghost/'
/* jscs:enable requireCamelCaseOrUpperCaseIdentifiers */
/* eslint-enable camelcase */
});
};
};

View file

@ -2,6 +2,7 @@ import {assign} from 'ember-platform';
import run from 'ember-runloop';
import Application from '../../app';
import config from '../../config/environment';
// eslint-disable-next-line no-unused-vars
import fileUpload from './file-upload';
export default function startApp(attrs) {

View file

@ -1,5 +1,5 @@
/* jshint expr:true */
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeModule,
it

View file

@ -1,5 +1,5 @@
/* jshint expr:true */
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeModule,
it

View file

@ -1,5 +1,5 @@
/* jshint expr:true */
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeComponent,
it

View file

@ -1,11 +1,10 @@
/* jshint expr:true */
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeComponent,
it
} from 'ember-mocha';
import hbs from 'htmlbars-inline-precompile';
import run from 'ember-runloop';
import Service from 'ember-service';
import {A as emberA} from 'ember-array/utils';

View file

@ -1,5 +1,5 @@
/* jshint expr:true */
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeComponent,
it

View file

@ -1,24 +0,0 @@
/* jshint expr:true */
import { expect } from 'chai';
import {
describeComponent,
it
} from 'ember-mocha';
import hbs from 'htmlbars-inline-precompile';
import run from 'ember-runloop';
describeComponent(
'gh-datetime-input',
'Integration: Component: gh-datetime-input',
{
integration: true
},
function () {
it('renders', function () {
// renders the component on the page
// this.render(hbs`{{gh-datetime-input}}`);
//
// expect(this.$('.ember-text-field gh-input')).to.have.length(1);
});
}
);

View file

@ -1,11 +1,10 @@
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeComponent,
it
} from 'ember-mocha';
import hbs from 'htmlbars-inline-precompile';
import Service from 'ember-service';
import wait from 'ember-test-helpers/wait';
const featureStub = Service.extend({
testFlag: true
@ -18,8 +17,6 @@ describeComponent(
integration: true
},
function() {
let server;
beforeEach(function () {
this.register('service:feature', featureStub);
this.inject.service('feature', {as: 'feature'});

View file

@ -1,5 +1,5 @@
/* jshint expr:true */
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeComponent,
it
@ -15,7 +15,7 @@ import Service from 'ember-service';
import {UnsupportedMediaTypeError} from 'ghost-admin/services/ajax';
const notificationsStub = Service.extend({
showAPIError(error, options) {
showAPIError() {
// noop - to be stubbed
}
});
@ -316,7 +316,7 @@ describeComponent(
// after 75ms we should have had one progress event
run.later(this, function () {
expect(this.$('.progress .bar').length).to.equal(1);
let [_, percentageWidth] = this.$('.progress .bar').attr('style').match(/width: (\d+)%?/);
let [, percentageWidth] = this.$('.progress .bar').attr('style').match(/width: (\d+)%?/);
expect(percentageWidth).to.be.above(0);
expect(percentageWidth).to.be.below(100);
}, 75);
@ -326,6 +326,7 @@ describeComponent(
this.render(hbs`{{gh-file-uploader}}`);
run(() => {
// eslint-disable-next-line new-cap
let dragover = $.Event('dragover', {
dataTransfer: {
files: []
@ -345,6 +346,7 @@ describeComponent(
it('triggers file upload on file drop', function (done) {
let uploadSuccess = sinon.spy();
// eslint-disable-next-line new-cap
let drop = $.Event('drop', {
dataTransfer: {
files: [createFile(['test'], {name: 'test.csv'})]

View file

@ -1,6 +1,6 @@
/* jshint expr:true */
import sinon from 'sinon';
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeComponent,
it
@ -23,7 +23,7 @@ const configStub = Service.extend({
});
const notificationsStub = Service.extend({
showAPIError(error, options) {
showAPIError(/* error, options */) {
// noop - to be stubbed
}
});
@ -386,7 +386,7 @@ describeComponent(
// after 75ms we should have had one progress event
run.later(this, function () {
expect(this.$('.progress .bar').length).to.equal(1);
let [_, percentageWidth] = this.$('.progress .bar').attr('style').match(/width: (\d+)%?/);
let [, percentageWidth] = this.$('.progress .bar').attr('style').match(/width: (\d+)%?/);
expect(percentageWidth).to.be.above(0);
expect(percentageWidth).to.be.below(100);
}, 75);
@ -398,6 +398,7 @@ describeComponent(
this.render(hbs`{{gh-image-uploader image=image update=(action update)}}`);
run(() => {
// eslint-disable-next-line new-cap
let dragover = $.Event('dragover', {
dataTransfer: {
files: []
@ -417,6 +418,7 @@ describeComponent(
it('triggers file upload on file drop', function (done) {
let uploadSuccess = sinon.spy();
// eslint-disable-next-line new-cap
let drop = $.Event('drop', {
dataTransfer: {
files: [createFile(['test'], {name: 'test.png'})]
@ -568,6 +570,7 @@ describeComponent(
this.$('input[type="text"]').val('saved url');
this.$('input[type="text"]').change();
this.$('input[type="text"]').trigger(
// eslint-disable-next-line new-cap
$.Event('keyup', {keyCode: keyCodes.enter, which: keyCodes.enter})
);

View file

@ -1,5 +1,5 @@
/* jshint expr:true */
import { expect } from 'chai';
import {expect} from 'chai';
import {
describeComponent,
it

Some files were not shown because too many files have changed in this diff Show more