Split up pretender a bit. It was getting unwieldly.
This commit is contained in:
parent
868079f2a8
commit
2006be41cf
|
@ -17,7 +17,6 @@ lib/es6_module_transpiler/support/es6-module-transpiler.js
|
||||||
public/javascripts/
|
public/javascripts/
|
||||||
spec/phantom_js/smoke_test.js
|
spec/phantom_js/smoke_test.js
|
||||||
vendor/
|
vendor/
|
||||||
test/javascripts/helpers/
|
|
||||||
test/javascripts/test_helper.js
|
test/javascripts/test_helper.js
|
||||||
test/javascripts/test_helper.js
|
test/javascripts/test_helper.js
|
||||||
test/javascripts/fixtures
|
test/javascripts/fixtures
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
import storePretender from 'helpers/store-pretender';
|
||||||
|
import fixturePretender from 'helpers/fixture-pretender';
|
||||||
|
|
||||||
function parsePostData(query) {
|
function parsePostData(query) {
|
||||||
const result = {};
|
const result = {};
|
||||||
query.split("&").forEach(function(part) {
|
query.split("&").forEach(function(part) {
|
||||||
|
@ -26,52 +29,16 @@ function response(code, obj) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const success = () => response({ success: true });
|
const success = () => response({ success: true });
|
||||||
|
|
||||||
const _widgets = [
|
|
||||||
{id: 123, name: 'Trout Lure'},
|
|
||||||
{id: 124, name: 'Evil Repellant'}
|
|
||||||
];
|
|
||||||
|
|
||||||
const _moreWidgets = [
|
|
||||||
{id: 223, name: 'Bass Lure'},
|
|
||||||
{id: 224, name: 'Good Repellant'}
|
|
||||||
];
|
|
||||||
|
|
||||||
const fruits = [{id: 1, name: 'apple', farmer_id: 1, color_ids: [1,2], category_id: 4},
|
|
||||||
{id: 2, name: 'banana', farmer_id: 1, color_ids: [3], category_id: 3},
|
|
||||||
{id: 3, name: 'grape', farmer_id: 2, color_ids: [2], category_id: 5}];
|
|
||||||
|
|
||||||
const farmers = [{id: 1, name: 'Old MacDonald'},
|
|
||||||
{id: 2, name: 'Luke Skywalker'}];
|
|
||||||
|
|
||||||
const colors = [{id: 1, name: 'Red'},
|
|
||||||
{id: 2, name: 'Green'},
|
|
||||||
{id: 3, name: 'Yellow'}];
|
|
||||||
|
|
||||||
const loggedIn = () => !!Discourse.User.current();
|
const loggedIn = () => !!Discourse.User.current();
|
||||||
|
|
||||||
|
|
||||||
|
const helpers = { response, success, parsePostData };
|
||||||
|
|
||||||
export default function() {
|
export default function() {
|
||||||
|
|
||||||
const server = new Pretender(function() {
|
const server = new Pretender(function() {
|
||||||
|
storePretender.call(this, helpers);
|
||||||
const fixturesByUrl = {};
|
const fixturesByUrl = fixturePretender.call(this, helpers);
|
||||||
|
|
||||||
// Load any fixtures automatically
|
|
||||||
const self = this;
|
|
||||||
Ember.keys(require._eak_seen).forEach(function(entry) {
|
|
||||||
if (/^fixtures/.test(entry)) {
|
|
||||||
const fixture = require(entry, null, null, true);
|
|
||||||
if (fixture && fixture.default) {
|
|
||||||
const obj = fixture.default;
|
|
||||||
Ember.keys(obj).forEach(function(url) {
|
|
||||||
fixturesByUrl[url] = obj[url];
|
|
||||||
self.get(url, function() {
|
|
||||||
return response(obj[url]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.get('/admin/plugins', () => response({ plugins: [] }));
|
this.get('/admin/plugins', () => response({ plugins: [] }));
|
||||||
|
|
||||||
|
@ -204,61 +171,6 @@ export default function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
this.get('/fruits/:id', function() {
|
|
||||||
const fruit = fruits[0];
|
|
||||||
return response({ __rest_serializer: "1", fruit, farmers, colors });
|
|
||||||
});
|
|
||||||
|
|
||||||
this.get('/fruits', function() {
|
|
||||||
return response({ __rest_serializer: "1", fruits, farmers, colors, extras: {hello: 'world'} });
|
|
||||||
});
|
|
||||||
|
|
||||||
this.get('/widgets/:widget_id', function(request) {
|
|
||||||
const w = _widgets.findBy('id', parseInt(request.params.widget_id));
|
|
||||||
if (w) {
|
|
||||||
return response({widget: w});
|
|
||||||
} else {
|
|
||||||
return response(404);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.post('/widgets', function(request) {
|
|
||||||
const widget = parsePostData(request.requestBody).widget;
|
|
||||||
widget.id = 100;
|
|
||||||
return response(200, {widget});
|
|
||||||
});
|
|
||||||
|
|
||||||
this.put('/widgets/:widget_id', function(request) {
|
|
||||||
const widget = parsePostData(request.requestBody).widget;
|
|
||||||
return response({ widget });
|
|
||||||
});
|
|
||||||
|
|
||||||
this.put('/cool_things/:cool_thing_id', function(request) {
|
|
||||||
const cool_thing = parsePostData(request.requestBody).cool_thing;
|
|
||||||
return response({ cool_thing });
|
|
||||||
});
|
|
||||||
|
|
||||||
this.get('/widgets', function(request) {
|
|
||||||
let result = _widgets;
|
|
||||||
|
|
||||||
const qp = request.queryParams;
|
|
||||||
if (qp) {
|
|
||||||
if (qp.name) { result = result.filterBy('name', qp.name); }
|
|
||||||
if (qp.id) { result = result.filterBy('id', parseInt(qp.id)); }
|
|
||||||
}
|
|
||||||
|
|
||||||
return response({ widgets: result,
|
|
||||||
total_rows_widgets: 4,
|
|
||||||
load_more_widgets: '/load-more-widgets',
|
|
||||||
refresh_widgets: '/widgets?refresh=true' });
|
|
||||||
});
|
|
||||||
|
|
||||||
this.get('/load-more-widgets', function() {
|
|
||||||
return response({ widgets: _moreWidgets, total_rows_widgets: 4, load_more_widgets: '/load-more-widgets' });
|
|
||||||
});
|
|
||||||
|
|
||||||
this.delete('/widgets/:widget_id', success);
|
|
||||||
|
|
||||||
this.post('/topics/timings', () => response(200, {}));
|
this.post('/topics/timings', () => response(200, {}));
|
||||||
|
|
||||||
const siteText = {id: 'site.test', value: 'Test McTest'};
|
const siteText = {id: 'site.test', value: 'Test McTest'};
|
||||||
|
@ -266,9 +178,9 @@ export default function() {
|
||||||
this.get('/admin/customize/site_texts', request => {
|
this.get('/admin/customize/site_texts', request => {
|
||||||
|
|
||||||
if (request.queryParams.overridden) {
|
if (request.queryParams.overridden) {
|
||||||
return response(200, {site_texts: [overridden] })
|
return response(200, {site_texts: [overridden] });
|
||||||
} else {
|
} else {
|
||||||
return response(200, {site_texts: [siteText, overridden] })
|
return response(200, {site_texts: [siteText, overridden] });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
export default function(helpers) {
|
||||||
|
const { response } = helpers;
|
||||||
|
const fixturesByUrl = {};
|
||||||
|
|
||||||
|
// Load any fixtures automatically
|
||||||
|
Ember.keys(require._eak_seen).forEach(entry => {
|
||||||
|
if (/^fixtures/.test(entry)) {
|
||||||
|
const fixture = require(entry, null, null, true);
|
||||||
|
if (fixture && fixture.default) {
|
||||||
|
const obj = fixture.default;
|
||||||
|
Ember.keys(obj).forEach(url => {
|
||||||
|
fixturesByUrl[url] = obj[url];
|
||||||
|
this.get(url, () => response(obj[url]));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return fixturesByUrl;
|
||||||
|
};
|
|
@ -0,0 +1,79 @@
|
||||||
|
const _widgets = [
|
||||||
|
{id: 123, name: 'Trout Lure'},
|
||||||
|
{id: 124, name: 'Evil Repellant'}
|
||||||
|
];
|
||||||
|
|
||||||
|
const _moreWidgets = [
|
||||||
|
{id: 223, name: 'Bass Lure'},
|
||||||
|
{id: 224, name: 'Good Repellant'}
|
||||||
|
];
|
||||||
|
|
||||||
|
const fruits = [{id: 1, name: 'apple', farmer_id: 1, color_ids: [1,2], category_id: 4},
|
||||||
|
{id: 2, name: 'banana', farmer_id: 1, color_ids: [3], category_id: 3},
|
||||||
|
{id: 3, name: 'grape', farmer_id: 2, color_ids: [2], category_id: 5}];
|
||||||
|
|
||||||
|
const farmers = [{id: 1, name: 'Old MacDonald'},
|
||||||
|
{id: 2, name: 'Luke Skywalker'}];
|
||||||
|
|
||||||
|
const colors = [{id: 1, name: 'Red'},
|
||||||
|
{id: 2, name: 'Green'},
|
||||||
|
{id: 3, name: 'Yellow'}];
|
||||||
|
|
||||||
|
export default function(helpers) {
|
||||||
|
const { response, success, parsePostData } = helpers;
|
||||||
|
|
||||||
|
this.get('/fruits/:id', function() {
|
||||||
|
const fruit = fruits[0];
|
||||||
|
return response({ __rest_serializer: "1", fruit, farmers, colors });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.get('/fruits', function() {
|
||||||
|
return response({ __rest_serializer: "1", fruits, farmers, colors, extras: {hello: 'world'} });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.get('/widgets/:widget_id', function(request) {
|
||||||
|
const w = _widgets.findBy('id', parseInt(request.params.widget_id));
|
||||||
|
if (w) {
|
||||||
|
return response({widget: w});
|
||||||
|
} else {
|
||||||
|
return response(404);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.post('/widgets', function(request) {
|
||||||
|
const widget = parsePostData(request.requestBody).widget;
|
||||||
|
widget.id = 100;
|
||||||
|
return response(200, {widget});
|
||||||
|
});
|
||||||
|
|
||||||
|
this.put('/widgets/:widget_id', function(request) {
|
||||||
|
const widget = parsePostData(request.requestBody).widget;
|
||||||
|
return response({ widget });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.put('/cool_things/:cool_thing_id', function(request) {
|
||||||
|
const cool_thing = parsePostData(request.requestBody).cool_thing;
|
||||||
|
return response({ cool_thing });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.get('/widgets', function(request) {
|
||||||
|
let result = _widgets;
|
||||||
|
|
||||||
|
const qp = request.queryParams;
|
||||||
|
if (qp) {
|
||||||
|
if (qp.name) { result = result.filterBy('name', qp.name); }
|
||||||
|
if (qp.id) { result = result.filterBy('id', parseInt(qp.id)); }
|
||||||
|
}
|
||||||
|
|
||||||
|
return response({ widgets: result,
|
||||||
|
total_rows_widgets: 4,
|
||||||
|
load_more_widgets: '/load-more-widgets',
|
||||||
|
refresh_widgets: '/widgets?refresh=true' });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.get('/load-more-widgets', function() {
|
||||||
|
return response({ widgets: _moreWidgets, total_rows_widgets: 4, load_more_widgets: '/load-more-widgets' });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.delete('/widgets/:widget_id', success);
|
||||||
|
};
|
Loading…
Reference in New Issue