Ghost/ghost/admin/mirage/config/users.js
Kevin Ansfield 6a3cfc2ca8 Use token input to allow selection of multiple authors in PSM
requires https://github.com/TryGhost/Ghost/pull/9426
- fixed default token component display in {{gh-token-input}}
    - if no `tokenComponent` is passed to `{{gh-token-input}}` then it should default to the ember-drag-drop `draggable-object` component but instead it didn't output anything
    - put `draggable-object` in quotes because `{{component}}` needs a component name rather than an object
    - rename `option` attribute to `content` to match the default `{{draggable-object}}` interface
- add embedded `authors` attr to the Post model
    - ensure authors is populated when starting new post
    - add validation for empty authors list
- swap author dropdown for a token input in PSM
- show all post authors in posts list
- update tests for `authors`
  - always provide through an authors array
  - fix mirage serialisation for paginated responses (embedded records were not being serialised)
- unify tags and author inputs design
  - remove highlight of primary tags
  - highlight internal tags
  - remove unnecessary/redundant title attributes on tags
  - use SVG icon for "remove option" button in token inputs
2018-03-27 18:50:52 +01:00

73 lines
2.4 KiB
JavaScript

import {Response} from 'ember-cli-mirage';
import {paginateModelCollection} from '../utils';
export default function mockUsers(server) {
// /users/me = Always return the user with ID=1
server.get('/users/me/', function ({users}) {
let user = users.find(1);
if (user) {
return user;
} else {
return new Response(404, {}, {errors: [
{message: 'Not found', errorType: 'NotFoundError'}
]});
}
});
server.get('/users/', function ({users}, {queryParams}) {
let page = +queryParams.page || 1;
// NOTE: this is naive and only set up to work with queries that are
// actually used - if you use a different filter in the app, add it here!
let collection = users.where(function (user) {
let statusMatch = true;
if (queryParams.filter === 'status:-inactive') {
statusMatch = user.status !== 'inactive';
} else if (queryParams.filter === 'status:inactive') {
statusMatch = user.status === 'inactive';
} else if (queryParams.status && queryParams.status !== 'all') {
statusMatch = user.status === queryParams.status;
}
return statusMatch;
});
return paginateModelCollection('users', collection, page, queryParams.limit);
});
server.get('/users/slug/:slug/', function ({users}, {params, queryParams}) {
let user = users.findBy({slug: params.slug});
user.postCount = queryParams.include.match(/count\.posts/);
return user;
});
server.get('/users/:id', function ({users}, {params, queryParams}) {
let user = users.find(params.id);
user.postCount = queryParams.include.match(/count\.posts/);
return user;
});
server.put('/users/:id/', function ({users}, {params}) {
let {id} = params;
if (id === 'password') {
return {
password: [{message: 'Password changed successfully.'}]
};
} else {
let attrs = this.normalizedRequestAttrs();
// TODO: why is our custom serializer causing .update to throw
// children.update is not a function?
// https://github.com/samselikoff/ember-cli-mirage/issues/964
delete attrs.roles;
return users.find(id).update(attrs);
}
});
server.del('/users/:id/');
}