Skip to content
This repository has been archived by the owner on Dec 30, 2022. It is now read-only.

Commit

Permalink
fix(SSR): clean SP before rendering agan (#238)
Browse files Browse the repository at this point in the history
  • Loading branch information
mthuret committed Aug 8, 2017
1 parent 7f8f3ae commit e765886
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ const createInstantSearch = function(algoliasearch) {
};

const findResultsState = function(App, props) {
searchParameters = [];
ReactDom.renderToString(<App {...props} />);
const sharedSearchParameters = searchParameters
.filter(searchParameter => !hasMultipleIndex(searchParameter.context))
Expand Down Expand Up @@ -66,8 +67,6 @@ const createInstantSearch = function(algoliasearch) {
return acc;
}, {});

searchParameters = [];

if (isEmpty(mergedSearchParameters)) {
const helper = algoliasearchHelper(client, sharedSearchParameters.index);
return helper.searchOnce(sharedSearchParameters);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,28 @@ describe('createInstantSearchServer', () => {
search: () => Promise.resolve({ results: [{ query: 'query' }] }),
};
const algoliaClientFactory = jest.fn(() => algoliaClient);
const getSearchParametersCall = jest.fn();
const {
InstantSearch: CustomInstantSearch,
findResultsState,
} = createInstantSearch(algoliaClientFactory);
const Connected = createConnector({
displayName: 'CoolConnector',
getProvidedProps: () => null,
getSearchParameters: (searchParameters, props, searchState) =>
isEmpty(searchState)
getSearchParameters: (searchParameters, props, searchState) => {
getSearchParametersCall();
return isEmpty(searchState)
? searchParameters.setIndex(searchParameters.index)
: searchParameters.setIndex(
searchState.index
? searchState.index
: searchState.indices[searchParameters.index].index
),
);
},
getMetadata: () => null,
getId: () => 'id',
})(() => null);

beforeEach(() => {
algoliaClient.addAlgoliaAgent.mockClear();
algoliaClientFactory.mockClear();
Expand All @@ -56,6 +60,21 @@ describe('createInstantSearchServer', () => {
});

describe('find results', () => {
it('searchParameters should be cleaned each time', () => {
const App = () =>
<CustomInstantSearch appId="app" apiKey="key" indexName="indexName">
<Connected />
</CustomInstantSearch>;

expect.assertions(1);
return findResultsState(App).then(() => {
getSearchParametersCall.mockClear();
findResultsState(App).then(() => {
expect(getSearchParametersCall).toHaveBeenCalledTimes(2);
});
});
});

it('without search state', () => {
const App = () =>
<CustomInstantSearch appId="app" apiKey="key" indexName="indexName">
Expand Down Expand Up @@ -125,6 +144,22 @@ describe('createInstantSearchServer', () => {
});

describe('find results', () => {
it('searchParameters should be cleaned each time', () => {
const App = () =>
<CustomInstantSearch appId="app" apiKey="key" indexName="indexName">
<Connected />
</CustomInstantSearch>;

expect.assertions(1);

return findResultsState(App).then(() => {
getSearchParametersCall.mockClear();
findResultsState(App).then(() => {
expect(getSearchParametersCall).toHaveBeenCalledTimes(2);
});
});
});

it('without search state', () => {
const App = () =>
<CustomInstantSearch appId="app" apiKey="key" indexName="index1">
Expand Down

0 comments on commit e765886

Please sign in to comment.