41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
import AccessorUtilities from '~/lib/utils/accessor';
|
|
import { showAlertFromLocalStorage } from '~/runner/local_storage_alert/show_alert_from_local_storage';
|
|
import { LOCAL_STORAGE_ALERT_KEY } from '~/runner/local_storage_alert/constants';
|
|
import { useLocalStorageSpy } from 'helpers/local_storage_helper';
|
|
import { createAlert } from '~/flash';
|
|
|
|
jest.mock('~/flash');
|
|
|
|
describe('showAlertFromLocalStorage', () => {
|
|
useLocalStorageSpy();
|
|
|
|
beforeEach(() => {
|
|
jest.spyOn(AccessorUtilities, 'canUseLocalStorage').mockReturnValue(true);
|
|
});
|
|
|
|
it('retrieves message from local storage and displays it', async () => {
|
|
const mockAlert = { message: 'Message!' };
|
|
|
|
localStorage.getItem.mockReturnValueOnce(JSON.stringify(mockAlert));
|
|
|
|
await showAlertFromLocalStorage();
|
|
|
|
expect(createAlert).toHaveBeenCalledTimes(1);
|
|
expect(createAlert).toHaveBeenCalledWith(mockAlert);
|
|
|
|
expect(localStorage.removeItem).toHaveBeenCalledTimes(1);
|
|
expect(localStorage.removeItem).toHaveBeenCalledWith(LOCAL_STORAGE_ALERT_KEY);
|
|
});
|
|
|
|
it.each(['not a json string', null])('does not fail when stored message is %o', async (item) => {
|
|
localStorage.getItem.mockReturnValueOnce(item);
|
|
|
|
await showAlertFromLocalStorage();
|
|
|
|
expect(createAlert).not.toHaveBeenCalled();
|
|
|
|
expect(localStorage.removeItem).toHaveBeenCalledTimes(1);
|
|
expect(localStorage.removeItem).toHaveBeenCalledWith(LOCAL_STORAGE_ALERT_KEY);
|
|
});
|
|
});
|