|
7 | 7 | formatDate,
|
8 | 8 | formatNumber,
|
9 | 9 | getMetricTableName,
|
| 10 | + useQueryHistory |
10 | 11 | } from '../utils';
|
11 |
| -import * as utils from '../utils'; |
12 | 12 |
|
13 | 13 | describe('utils', () => {
|
14 | 14 | it('12h utc', () => {
|
@@ -272,39 +272,54 @@ describe('formatNumber', () => {
|
272 | 272 | });
|
273 | 273 |
|
274 | 274 | 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(); |
277 | 278 |
|
278 | 279 | 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 | + }); |
282 | 291 | });
|
283 | 292 |
|
284 | 293 | afterEach(() => {
|
285 | 294 | jest.restoreAllMocks();
|
286 | 295 | });
|
287 | 296 |
|
288 | 297 | it('adds new query', () => {
|
289 |
| - const { result } = renderHook(() => utils.useQueryHistory('searchSQL')); |
290 |
| - |
| 298 | + const { result } = renderHook(() => useQueryHistory('searchSQL')); |
| 299 | + const setQueryHistory = result.current[1]; |
291 | 300 | act(() => {
|
292 |
| - const [, setQueryHistory] = result.current; |
293 | 301 | setQueryHistory('service = test2');
|
294 | 302 | });
|
295 | 303 |
|
296 |
| - expect(mockSet).toHaveBeenCalledWith(['service = test2', 'service = test']); |
| 304 | + expect(mockSetItem).toHaveBeenCalledWith('QuerySearchHistory.searchSQL', '["service = test2","service = test3","service = test1"]'); |
297 | 305 | });
|
298 | 306 |
|
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 | + }); |
301 | 316 |
|
| 317 | + it('does not add empty query', () => { |
| 318 | + const { result } = renderHook(() => useQueryHistory('searchSQL')); |
| 319 | + const setQueryHistory = result.current[1]; |
302 | 320 | act(() => {
|
303 |
| - const [, setQueryHistory] = result.current; |
304 | 321 | setQueryHistory(' '); // empty after trim
|
305 |
| - setQueryHistory('service = test'); // duplicate |
306 | 322 | });
|
307 |
| - |
308 |
| - expect(mockSet).toHaveBeenCalledWith(['service = test']); |
| 323 | + expect(mockSetItem).not.toBeCalled(); |
309 | 324 | });
|
310 | 325 | });
|
0 commit comments