Skip to content

Commit d42999b

Browse files
Liang yung huangLiang yung huang
Liang yung huang
authored and
Liang yung huang
committed
lint and test case
1 parent 89ff039 commit d42999b

File tree

2 files changed

+32
-16
lines changed

2 files changed

+32
-16
lines changed

packages/app/src/__tests__/utils.test.ts

+31-16
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import {
77
formatDate,
88
formatNumber,
99
getMetricTableName,
10+
useQueryHistory
1011
} from '../utils';
11-
import * as utils from '../utils';
1212

1313
describe('utils', () => {
1414
it('12h utc', () => {
@@ -272,39 +272,54 @@ describe('formatNumber', () => {
272272
});
273273

274274
describe('useQueryHistory', () => {
275-
const mockSet = jest.fn();
276-
const initialHistory = ['service = test'];
275+
const mockGetItem = jest.fn();
276+
const mockSetItem = jest.fn();
277+
const mockRemoveItem = jest.fn();
277278

278279
beforeEach(() => {
279-
jest
280-
.spyOn(utils, 'useLocalStorage')
281-
.mockReturnValue([initialHistory, mockSet]);
280+
mockGetItem.mockClear();
281+
mockSetItem.mockClear();
282+
mockRemoveItem.mockClear();
283+
mockGetItem.mockReturnValue('["service = test3","service = test1"]');
284+
Object.defineProperty(window, "localStorage", {
285+
value: {
286+
getItem: (...args: string[]) => mockGetItem(...args),
287+
setItem: (...args: string[]) => mockSetItem(...args),
288+
removeItem: (...args: string[]) => mockRemoveItem(...args),
289+
},
290+
});
282291
});
283292

284293
afterEach(() => {
285294
jest.restoreAllMocks();
286295
});
287296

288297
it('adds new query', () => {
289-
const { result } = renderHook(() => utils.useQueryHistory('searchSQL'));
290-
298+
const { result } = renderHook(() => useQueryHistory('searchSQL'));
299+
const setQueryHistory = result.current[1];
291300
act(() => {
292-
const [, setQueryHistory] = result.current;
293301
setQueryHistory('service = test2');
294302
});
295303

296-
expect(mockSet).toHaveBeenCalledWith(['service = test2', 'service = test']);
304+
expect(mockSetItem).toHaveBeenCalledWith('QuerySearchHistory.searchSQL', '["service = test2","service = test3","service = test1"]');
297305
});
298306

299-
it('does not add empty or duplicate queries', () => {
300-
const { result } = renderHook(() => utils.useQueryHistory('searchSQL'));
307+
it('does not add duplicate query, but change the order to front', () => {
308+
const { result } = renderHook(() => useQueryHistory('searchSQL'));
309+
const setQueryHistory = result.current[1];
310+
act(() => {
311+
setQueryHistory('service = test1');
312+
});
313+
314+
expect(mockSetItem).toHaveBeenCalledWith('QuerySearchHistory.searchSQL', '["service = test1","service = test3"]');
315+
});
301316

317+
it('does not add empty query', () => {
318+
const { result } = renderHook(() => useQueryHistory('searchSQL'));
319+
const setQueryHistory = result.current[1];
302320
act(() => {
303-
const [, setQueryHistory] = result.current;
304321
setQueryHistory(' '); // empty after trim
305-
setQueryHistory('service = test'); // duplicate
306322
});
307-
308-
expect(mockSet).toHaveBeenCalledWith(['service = test']);
323+
expect(mockSetItem).not.toBeCalled();
309324
});
310325
});

packages/app/src/utils.ts

+1
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ export function useQueryHistory<T>(type: string | undefined) {
249249
}
250250
_setQueryHistory(newHistory.slice(0, QUERY_LOCAL_STORAGE.LIMIT));
251251
} catch (e) {
252+
// eslint-disable-next-line no-console
252253
console.log(`Failed to cache query history, error ${e.message}`);
253254
}
254255
};

0 commit comments

Comments
 (0)