Commit 0e372f96 authored by Fatih Acet's avatar Fatih Acet

Merge branch 'winh-recent-searches-service-spec' into 'master'

Handle Promise rejections in RecentSearchesService spec

See merge request !11206
parents 348afcd5 999f71f3
/* eslint-disable promise/catch-or-return */
import RecentSearchesService from '~/filtered_search/services/recent_searches_service';
import RecentSearchesServiceError from '~/filtered_search/services/recent_searches_service_error';
import AccessorUtilities from '~/lib/utils/accessor';
describe('RecentSearchesService', () => {
......@@ -22,11 +21,9 @@ describe('RecentSearchesService', () => {
fetchItemsPromise
.then((items) => {
expect(items).toEqual([]);
done();
})
.catch((err) => {
done.fail('Shouldn\'t reject with empty localStorage key', err);
});
.then(done)
.catch(done.fail);
});
it('should reject when unable to parse', (done) => {
......@@ -34,19 +31,24 @@ describe('RecentSearchesService', () => {
const fetchItemsPromise = service.fetch();
fetchItemsPromise
.then(done.fail)
.catch((error) => {
expect(error).toEqual(jasmine.any(SyntaxError));
done();
});
})
.then(done)
.catch(done.fail);
});
it('should reject when service is unavailable', (done) => {
RecentSearchesService.isAvailable.and.returnValue(false);
service.fetch().catch((error) => {
service.fetch()
.then(done.fail)
.catch((error) => {
expect(error).toEqual(jasmine.any(Error));
done();
});
})
.then(done)
.catch(done.fail);
});
it('should return items from localStorage', (done) => {
......@@ -56,8 +58,9 @@ describe('RecentSearchesService', () => {
fetchItemsPromise
.then((items) => {
expect(items).toEqual(['foo', 'bar']);
done();
});
})
.then(done)
.catch(done.fail);
});
describe('if .isAvailable returns `false`', () => {
......@@ -65,12 +68,17 @@ describe('RecentSearchesService', () => {
RecentSearchesService.isAvailable.and.returnValue(false);
spyOn(window.localStorage, 'getItem');
RecentSearchesService.prototype.fetch();
});
it('should not call .getItem', () => {
it('should not call .getItem', (done) => {
RecentSearchesService.prototype.fetch()
.then(done.fail)
.catch((err) => {
expect(err).toEqual(new RecentSearchesServiceError());
expect(window.localStorage.getItem).not.toHaveBeenCalled();
})
.then(done)
.catch(done.fail);
});
});
});
......@@ -105,11 +113,11 @@ describe('RecentSearchesService', () => {
RecentSearchesService.isAvailable.and.returnValue(true);
spyOn(JSON, 'stringify').and.returnValue(searchesString);
RecentSearchesService.prototype.save.call(recentSearchesService);
});
it('should call .setItem', () => {
RecentSearchesService.prototype.save.call(recentSearchesService);
expect(window.localStorage.setItem).toHaveBeenCalledWith(localStorageKey, searchesString);
});
});
......@@ -117,11 +125,11 @@ describe('RecentSearchesService', () => {
describe('if .isAvailable returns `false`', () => {
beforeEach(() => {
RecentSearchesService.isAvailable.and.returnValue(false);
RecentSearchesService.prototype.save();
});
it('should not call .setItem', () => {
RecentSearchesService.prototype.save();
expect(window.localStorage.setItem).not.toHaveBeenCalled();
});
});
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment