import { it, expect, describe, inject, beforeEachProviders } from '@angular/core/testing'; import { SearchResult, SearchResultCollection, CACHE, LocalStorageCache } from '../../dist/app/core'; import {provide} from '@angular/core'; const name = 'Drilling'; const mockResult: any = { columns: [ {'name': 'source', 'label': 'Source', 'type': 'text', 'visible': true}, {'name': 'state', 'label': 'State', 'type': 'text', 'visible': true} ], data: [ ['OCC', 'OK'] ] }; describe('Search Result Collection', () => { const savedResult = new SearchResult(mockResult, name); const newResult = new SearchResult(mockResult, name); beforeEachProviders(() => { return [ SearchResultCollection, LocalStorageCache, provide(CACHE, {useClass: LocalStorageCache}) ]; }); beforeEach(() => { const cache = new LocalStorageCache(); cache.clear(); const collection = new SearchResultCollection(cache); collection.addResult(savedResult, savedResult.name); }); it('should store a search result and retrieve it', inject([SearchResultCollection], (collection: SearchResultCollection) => { const ref = collection.addResult(newResult); const result = collection.get(ref.key); expect(result).toEqual(newResult); }) ); it('remove a stored result', inject([SearchResultCollection], (collection: SearchResultCollection) => { const ref = collection.addResult(newResult); const result = collection.get(ref.key); expect(result).toEqual(newResult); collection.removeResult(ref.key); expect(collection.get(ref.key)).toBeNull(); }) ); it('should populate with previously stored results', inject([SearchResultCollection], (collection: SearchResultCollection) => { expect(collection.results.length).toBe(1); const key = collection.results[0].key; const result = collection.get(key); expect(result).toEqual(savedResult); }) ); it('should remove all results when cleared', inject([SearchResultCollection], (collection: SearchResultCollection) => { const ref = collection.addResult(newResult); collection.clear(); const result = collection.get(ref.key); expect(collection.results.length).toBe(0); expect(result).toBeNull(); }) ); });