// Stubbed versions of angular services using native promises, for use in unit tests export const $q: QService = { when: (value?) => { return value ? Promise.resolve(value) : Promise.resolve(); }, reject: (reason?: any) => { return Promise.reject(reason); }, defer: () => { return new DeferredStub(); }, all: (promises: Promisify): Promise => Promise.all(Object.keys(promises) .map(key => promises[key].then(value => ({ [key]: value })))) .then(keyvalues => Object.assign({}, ...keyvalues)) } class DeferredStub implements Deferred { resolve: (value?: T | PromiseLike) => void; reject: (reason?: any) => void promise: Promise = new Promise((resolve, reject) => { this.resolve = resolve; this.reject = reject; }); } export const $timeout: TimeoutService = (fn: () => T | PromiseLike, delay?: number) => { return new Promise(resolve => setTimeout(() => resolve(fn()), delay)); }