import { useStoreFactoryParams } from '../../src/useStore/'; import { Context, UseStoreFactoryChangeParamArguments } from '@vue-storefront/core'; describe('[commercetools-composables] useStore factoryParams', () => { it('loads stores data', async () => { const storesData = { stores: 'stores data' }; const api = { getStores: jest.fn().mockResolvedValue(storesData) }; const config = { store: 'default store' }; const $ct = { api, config }; const context = { $ct }; const expected = { ...storesData, _selectedStore: config.store }; expect(useStoreFactoryParams.load((context as unknown) as Context, {} as any)).resolves.toStrictEqual(expected); expect(api.getStores).toHaveBeenCalledWith({ customQuery: undefined }); }); it('changes selected store and reloads page', async () => { const STORES_ID = 'stores id'; Object.defineProperty(window, 'location', { writable: true, value: { reload: jest.fn() } }); const storeService = { changeCurrentStore: jest.fn() }; const config = { storeService }; const $ct = { config }; const context = { $ct }; const params = { store: { key: STORES_ID } }; expect(await useStoreFactoryParams.change((context as unknown) as Context, (params as unknown) as UseStoreFactoryChangeParamArguments)).toBe(null); expect(storeService.changeCurrentStore).toHaveBeenCalledWith(STORES_ID); expect(window.location.reload).toHaveBeenCalled(); }); });