mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 12:43:54 -06:00
Add tests for our store
This commit is contained in:
parent
ea1cd8dcd4
commit
ecb553af3f
@ -47,7 +47,7 @@ export default Ember.Object.extend({
|
|||||||
find(type, id) {
|
find(type, id) {
|
||||||
var self = this;
|
var self = this;
|
||||||
return Discourse.ajax(this.pathFor(type, id)).then(function(result) {
|
return Discourse.ajax(this.pathFor(type, id)).then(function(result) {
|
||||||
return self._hydrate(type, result[self.serverName(type)]);
|
return self._hydrate(type, result[Ember.String.underscore(type)]);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -67,7 +67,8 @@ export default Ember.Object.extend({
|
|||||||
|
|
||||||
destroyRecord(type, id) {
|
destroyRecord(type, id) {
|
||||||
return Discourse.ajax(this.pathFor(type, id), { method: 'DELETE' }).then(function(result) {
|
return Discourse.ajax(this.pathFor(type, id), { method: 'DELETE' }).then(function(result) {
|
||||||
delete _identityMap[type][id];
|
const forType = _identityMap[type];
|
||||||
|
if (forType) { delete forType[id]; }
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -19,6 +19,11 @@ function success() {
|
|||||||
return response({ success: true });
|
return response({ success: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const _widgets = [
|
||||||
|
{id: 123, name: 'Trout Lure'},
|
||||||
|
{id: 124, name: 'Evil Repellant'}
|
||||||
|
];
|
||||||
|
|
||||||
export default function() {
|
export default function() {
|
||||||
var server = new Pretender(function() {
|
var server = new Pretender(function() {
|
||||||
|
|
||||||
@ -84,6 +89,21 @@ export default function() {
|
|||||||
|
|
||||||
this.delete('/posts/:post_id', success);
|
this.delete('/posts/:post_id', success);
|
||||||
this.put('/posts/:post_id/recover', success);
|
this.put('/posts/:post_id/recover', success);
|
||||||
|
|
||||||
|
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.get('/widgets', function() {
|
||||||
|
return response({ widgets: _widgets });
|
||||||
|
});
|
||||||
|
|
||||||
|
this.delete('/widgets/:widget_id', success);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
19
test/javascripts/helpers/create-store.js.es6
Normal file
19
test/javascripts/helpers/create-store.js.es6
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import Store from "discourse/models/store";
|
||||||
|
import RestAdapter from 'discourse/adapters/rest';
|
||||||
|
|
||||||
|
let _restAdapter;
|
||||||
|
export default function() {
|
||||||
|
return Store.create({
|
||||||
|
container: {
|
||||||
|
lookup(type) {
|
||||||
|
if (type === "adapter:rest") {
|
||||||
|
_restAdapter = _restAdapter || RestAdapter.create({ container: this });
|
||||||
|
return (_restAdapter);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
lookupFactory: function() { }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
40
test/javascripts/models/store-test.js.es6
Normal file
40
test/javascripts/models/store-test.js.es6
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
module('store:main');
|
||||||
|
|
||||||
|
import createStore from 'helpers/create-store';
|
||||||
|
|
||||||
|
test('createRecord', function() {
|
||||||
|
const store = createStore();
|
||||||
|
const widget = store.createRecord('widget', {id: 111, name: 'hello'});
|
||||||
|
equal(widget.get('name'), 'hello');
|
||||||
|
equal(widget.get('id'), 111);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('find', function() {
|
||||||
|
const store = createStore();
|
||||||
|
store.find('widget', 123).then(function(w) {
|
||||||
|
equal(w.get('name'), 'Trout Lure');
|
||||||
|
equal(w.get('id'), 123);
|
||||||
|
|
||||||
|
// A second find by id returns the same object
|
||||||
|
store.find('widget', 123).then(function(w2) {
|
||||||
|
equal(w, w2);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('findAll', function() {
|
||||||
|
const store = createStore();
|
||||||
|
store.findAll('widget').then(function(result) {
|
||||||
|
equal(result.length, 2);
|
||||||
|
const w = result.findBy('id', 124);
|
||||||
|
equal(w.get('name'), 'Evil Repellant');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('destroyRecord', function() {
|
||||||
|
const store = createStore();
|
||||||
|
store.destroyRecord('widget', 124).then(function(result) {
|
||||||
|
ok(result);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user