function _loadLanding(params = {}) {
   store.dispatch(
     loadLanding({
       addonType: ADDON_TYPE_THEME,
       featured: createAddonsApiResult([
         { ...fakeAddon, name: 'Howdy', slug: 'howdy' },
         { ...fakeAddon, name: 'Howdy again', slug: 'howdy-again' },
       ]),
       highlyRated: createAddonsApiResult([
         { ...fakeAddon, name: 'High', slug: 'high' },
         { ...fakeAddon, name: 'High again', slug: 'high-again' },
       ]),
       trending: createAddonsApiResult([
         { ...fakeAddon, name: 'Pop', slug: 'pop' },
         { ...fakeAddon, name: 'Pop again', slug: 'pop-again' },
       ]),
       ...params,
     }),
   );
 }
Beispiel #2
0
      async (testConfig) => {
        const { addonType, pageSize } = testConfig;
        const baseArgs = { api: apiState };
        const baseFilters = {
          addonType: getAddonTypeFilter(addonType),
          page_size: pageSize,
        };

        const featured = createAddonsApiResult([
          {
            ...fakeAddon,
            slug: 'featured-addon',
          },
        ]);
        mockSearchApi
          .expects('search')
          .withArgs({
            ...baseArgs,
            filters: {
              ...baseFilters,
              featured: true,
              sort: SEARCH_SORT_RANDOM,
              page: '1',
            },
          })
          .returns(Promise.resolve(featured));

        const highlyRated = createAddonsApiResult([
          {
            ...fakeAddon,
            slug: 'highly-rated-addon',
          },
        ]);
        mockSearchApi
          .expects('search')
          .withArgs({
            ...baseArgs,
            filters: {
              ...baseFilters,
              sort: SEARCH_SORT_TOP_RATED,
              page: '1',
            },
          })
          .returns(Promise.resolve(highlyRated));

        const trending = createAddonsApiResult([
          {
            ...fakeAddon,
            slug: 'trending-addon',
          },
        ]);
        mockSearchApi
          .expects('search')
          .withArgs({
            ...baseArgs,
            filters: {
              ...baseFilters,
              sort: SEARCH_SORT_TRENDING,
              page: '1',
            },
          })
          .returns(Promise.resolve(trending));

        _getLanding({ addonType });

        await sagaTester.waitFor(LOAD_LANDING);
        mockSearchApi.verify();

        const calledActions = sagaTester.getCalledActions();
        expect(calledActions[1]).toEqual(
          loadLanding({
            addonType,
            featured,
            highlyRated,
            trending,
          }),
        );
      },
Beispiel #3
0
    it('does not add a falsy category to the filters', async () => {
      const addonType = ADDON_TYPE_EXTENSION;
      const baseArgs = { api: apiState };
      const baseFilters = {
        addonType,
        page_size: String(LANDING_PAGE_EXTENSION_COUNT),
      };

      const featured = createAddonsApiResult([
        { ...fakeAddon, slug: 'featured-addon' },
      ]);
      mockSearchApi
        .expects('search')
        .withArgs({
          ...baseArgs,
          filters: {
            ...baseFilters,
            featured: true,
            sort: SEARCH_SORT_RANDOM,
            page: '1',
          },
        })
        .returns(Promise.resolve(featured));

      const highlyRated = createAddonsApiResult([
        { ...fakeAddon, slug: 'highly-rated-addon' },
      ]);
      mockSearchApi
        .expects('search')
        .withArgs({
          ...baseArgs,
          filters: {
            ...baseFilters,
            sort: SEARCH_SORT_TOP_RATED,
            page: '1',
          },
        })
        .returns(Promise.resolve(highlyRated));

      const trending = createAddonsApiResult([
        { ...fakeAddon, slug: 'trending-addon' },
      ]);
      mockSearchApi
        .expects('search')
        .withArgs({
          ...baseArgs,
          filters: {
            ...baseFilters,
            sort: SEARCH_SORT_TRENDING,
            page: '1',
          },
        })
        .returns(Promise.resolve(trending));

      _getLanding({ addonType, category: undefined });

      await sagaTester.waitFor(LOAD_LANDING);
      mockSearchApi.verify();

      const calledActions = sagaTester.getCalledActions();
      expect(calledActions[1]).toEqual(
        loadLanding({
          addonType,
          featured,
          highlyRated,
          trending,
        }),
      );
    });