define([ 'dojo/_base/lang', 'dojo/Deferred', 'dstore/Memory', 'dstore/QueryResults', './typesData' ], function (lang, Deferred, Memory, QueryResults, typesData) { // summary: // Returns a hash containing stores which generate errors on specific // methods, synchronously or asynchronously. var asyncFetchStore = new Memory(), asyncFetchTotalStore = new Memory(), asyncPutStore = new Memory({ data: lang.clone(typesData) }); asyncFetchStore.fetch = asyncFetchStore.fetchRange = function () { var dfd = new Deferred(); setTimeout(function () { dfd.reject('Error on async query'); }, 200); return new QueryResults(dfd.promise); }; asyncFetchTotalStore.fetch = asyncFetchTotalStore.fetchRange = function () { // dstore/QueryResults doesn't ensure the results return a promise; we have to ourselves var dfd = new Deferred(); dfd.resolve([]); var total = new Deferred(); total.reject('Error getting the total'); return new QueryResults(dfd.promise, { totalLength: total.promise }); }; asyncPutStore.put = function () { var dfd = new Deferred(); setTimeout(function () { dfd.reject('Error on async put'); }, 200); return dfd.promise; }; return { asyncFetch: asyncFetchStore, asyncFetchTotal: asyncFetchTotalStore, asyncPut: asyncPutStore }; });