UNPKG

dojox

Version:

Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.

76 lines (73 loc) 2.26 kB
define([ 'intern!object', 'intern/chai!assert', '../priority', 'dojo/Deferred', 'dojo/promise/all', 'dojo/_base/declare', 'dojo/store/Memory', 'dojo/store/util/QueryResults' ], function (registerSuite, assert, priority, Deferred, all, declare, Memory, QueryResults) { var started = 0; function anAsyncMethod(query){ return function(){ started++; var results = this.inherited(arguments); var deferred = new Deferred(); setTimeout(function(){ deferred.resolve(results); }, 10); return query ? new QueryResults(deferred) : deferred; } } var AsyncMemory = declare(Memory, { get: anAsyncMethod(), put: anAsyncMethod(), add: anAsyncMethod(), query: anAsyncMethod(true) }); var data = [ {id: 1, name: 'one', prime: false, mappedTo: 'E', words: ['banana']}, {id: 2, name: 'two', even: true, prime: true, mappedTo: 'D', words: ['banana', 'orange']}, {id: 3, name: 'three', prime: true, mappedTo: 'C', words: ['apple', 'orange']}, {id: 4, name: 'four', even: true, prime: false, mappedTo: null}, {id: 5, name: 'five', prime: true, mappedTo: 'A'} ]; priorityStore = priority(new AsyncMemory({ data: data })); registerSuite({ name: "priority", order: function(){ var results = []; var operations = []; var order = []; var initialData = data.slice(0); operations.push(priorityStore.query({}, {priority: 10}).forEach(function(object){ // clear the data results.push(object); }).then(function(){ order.push('query'); assert.deepEqual(results, initialData); })); assert.strictEqual(started, 1); operations.push(priorityStore.get(1, {priority: 0}).then(function(object){ order.push('get'); assert.deepEqual(object, data[0]); })); assert.strictEqual(started, 1); operations.push(priorityStore.put({id: 6, name: 'six'}, {priority: 3}).then(function(object){ order.push('put'); })); assert.strictEqual(started, 2); operations.push(priorityStore.add({id: 7, name: 'seven'}, {priority: 1}).then(function(object){ order.push('add'); })); assert.strictEqual(started, 2); return all(operations).then(function(){ assert.strictEqual(started, 5); assert.deepEqual(order, ['query', 'put', 'add', 'get']); }) } }); });