it('includes a telemetry client ID in the API request', async () => { const telemetryClientId = 'client-id'; const result = createDiscoResult({ heading: 'Discovery Addon', description: 'informative text', }); const addonResponse = createFetchDiscoveryResult([result]); mockApi .expects('getDiscoveryAddons') .withArgs({ api: apiState, taarParams: { platform: 'Darwin', 'telemetry-client-id': telemetryClientId, }, }) .returns(Promise.resolve(addonResponse)); const { results } = addonResponse; const expectedLoadAction = loadDiscoResults({ results }); _getDiscoResults({ taarParams: { platform: 'Darwin', 'telemetry-client-id': telemetryClientId, }, }); await sagaTester.waitFor(expectedLoadAction.type); mockApi.verify(); });
export function* fetchDiscoveryAddons({ payload: { errorHandlerId, taarParams }, }: GetDiscoResultsAction): Saga { const errorHandler = createErrorHandler(errorHandlerId); try { const state = yield select(getState); const { results }: ExternalDiscoResultsType = yield call( getDiscoveryAddons, { api: state.api, taarParams, }, ); const addons = createExternalAddonMap({ results }); yield put(loadAddonResults({ addons })); yield put(loadDiscoResults({ results })); } catch (error) { log.warn(`Failed to fetch discovery add-ons: ${error}`); yield put(errorHandler.createErrorAction(error)); } }
export function loadDiscoResultsIntoState( addonResults, { store = createStore().store } = {}, ) { const { results } = createFetchDiscoveryResult(addonResults); const addons = createExternalAddonMap({ results }); store.dispatch(loadAddonResults({ addons })); store.dispatch(loadDiscoResults({ results })); return store.getState(); }
it('fetches discovery addons from the API', async () => { const result1 = createDiscoResult({ heading: 'Discovery Addon 1', description: 'informative text', addon: { ...fakeDiscoAddon, guid: '@guid1', slug: 'discovery-addon-1', }, }); const result2 = createDiscoResult({ heading: 'Discovery Addon 2', description: 'informative text', addon: { ...fakeDiscoAddon, guid: '@guid2', slug: 'discovery-addon-2', }, }); const addonResponse = createFetchDiscoveryResult([result1, result2]); mockApi .expects('getDiscoveryAddons') .withArgs({ api: apiState, taarParams: { platform: 'Darwin' }, }) .returns(Promise.resolve(addonResponse)); const { results } = addonResponse; const expectedLoadAction = loadDiscoResults({ results }); _getDiscoResults(); const action = await sagaTester.waitFor(expectedLoadAction.type); mockApi.verify(); expect(action).toEqual(expectedLoadAction); const calledActions = sagaTester.getCalledActions(); const addons = createExternalAddonMap({ results }); expect(calledActions[1]).toEqual(loadAddonResults({ addons })); });