0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-24 23:48:13 -05:00

Added initial members model and associated mirage setup

no issue
- mirage is now enabled by default in development with logging (can be turned off once we're no longer relying on mocked members endpoints)
This commit is contained in:
Kevin Ansfield 2019-01-22 17:18:44 +00:00
parent d6d98ba5ca
commit 1680508a0a
8 changed files with 55 additions and 2 deletions

View file

@ -0,0 +1,8 @@
import DS from 'ember-data';
import attr from 'ember-data/attr';
export default DS.Model.extend({
name: attr('string'),
email: attr('string'),
createdAt: attr('moment-utc')
});

View file

@ -1,3 +1,7 @@
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
export default AuthenticatedRoute.extend({});
export default AuthenticatedRoute.extend({
model() {
return this.store.findAll('member');
}
});

View file

@ -47,7 +47,7 @@ module.exports = function (environment) {
// Enable mirage here in order to mock API endpoints during development
ENV['ember-cli-mirage'] = {
enabled: false
enabled: true
};
}

View file

@ -3,6 +3,7 @@ import mockAuthentication from './config/authentication';
import mockConfiguration from './config/configuration';
import mockIntegrations from './config/integrations';
import mockInvites from './config/invites';
import mockMembers from './config/members';
import mockPosts from './config/posts';
import mockRoles from './config/roles';
import mockSettings from './config/settings';
@ -20,12 +21,16 @@ export default function () {
// this.urlPrefix = ''; // make this `http://localhost:8080`, for example, if your API is on a different server
this.namespace = '/ghost/api/v2/admin'; // make this `api`, for example, if your API is namespaced
this.timing = 400; // delay for each request, automatically set to 0 during testing
this.logging = true;
// Mock endpoints here to override real API requests during development, eg...
// this.put('/posts/:id/', versionMismatchResponse);
// mockTags(this);
// this.loadFixtures('settings');
this.createList('member', 200);
mockMembers(this);
// keep this line, it allows all other API requests to hit the real server
this.passthrough();
@ -47,6 +52,7 @@ export function testConfig() {
mockConfiguration(this);
mockIntegrations(this);
mockInvites(this);
mockMembers(this);
mockPosts(this);
mockRoles(this);
mockSettings(this);

View file

@ -0,0 +1,5 @@
import {paginatedResponse} from '../utils';
export default function mockMembers(server) {
server.get('/members/', paginatedResponse('members'));
}

View file

@ -0,0 +1,12 @@
import moment from 'moment';
import {Factory, faker} from 'ember-cli-mirage';
let randomDate = function randomDate(start = moment().subtract(30, 'days').toDate(), end = new Date()) {
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
};
export default Factory.extend({
name() { return `${faker.name.firstName()} ${faker.name.lastName()}`; },
email: faker.internet.email,
createdAt() { return randomDate(); }
});

View file

@ -0,0 +1,4 @@
import {Model} from 'ember-cli-mirage';
export default Model.extend({
});

View file

@ -0,0 +1,14 @@
import {describe, it} from 'mocha';
import {expect} from 'chai';
import {setupTest} from 'ember-mocha';
describe('Unit: Model: member', function () {
setupTest();
// Replace this with your real tests.
it('exists', function () {
let store = this.owner.lookup('service:store');
let model = store.createRecord('member', {});
expect(model).to.be.ok;
});
});