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();
    });
Example #2
0
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));
  }
}
Example #3
0
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 }));
    });