module fb { export class MockBase { pendingRequests: { [str: string]: ng.IDeferred; }; q: ng.IQService; constructor(q: ng.IQService) { var self = this; self.pendingRequests = {}; self.q = q; } // Skapa en ny request createRequest(identifier: string): ng.IPromise { var self = this; if (self.pendingRequests[identifier]) { return self.pendingRequests[identifier].promise; } else { self.pendingRequests[identifier] = self.q.defer(); return self.pendingRequests[identifier].promise; } } // Hämta vilka requests som ligger och väntar på att resolveas eller rejectas getPendingRequests(): string[] { var self = this; return Object.keys(self.pendingRequests); } // Resolvea det promise som hade given identifier med given data resolve(identifier: any, returnValue: any) { var self = this; if (self.pendingRequests[identifier]) { self.pendingRequests[identifier].resolve(returnValue); delete self.pendingRequests[identifier]; } else { console.warn('Hittade inte anropet', identifier); } } // Rejecta det promise som använder given identifier med given data reject(identifier: any, returnValue: any) { var self = this; if (self.pendingRequests[identifier]) { self.pendingRequests[identifier].reject(returnValue); delete self.pendingRequests[identifier]; } } // Här kan man lägga till nya vanliga request-typer requestIdentifier(type: fb.RequestType, str: string): string { switch (type) { case fb.RequestType.NONE: return str; case fb.RequestType.GET: return 'GET' + str; case fb.RequestType.QUERY: return 'QUERY'; case fb.RequestType.ADD: return 'ADD'; case fb.RequestType.SAVE: return 'SAVE' + str; case fb.RequestType.REMOVE: return 'REMOVE' + str; case fb.RequestType.POST: return 'POST' + str; } } } export enum RequestType { NONE, GET, QUERY, ADD, SAVE, REMOVE , POST } }