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

feat: Upgrade Client and Helper #1215

Merged
merged 5 commits into from
May 4, 2018
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/react-instantsearch/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
"test:size": "bundlesize"
},
"dependencies": {
"algoliasearch": "^3.24.0",
"algoliasearch-helper": "^2.21.0",
"algoliasearch": "^3.27.1",
"algoliasearch-helper": "^2.26.0",
"classnames": "^2.2.5",
"lodash": "^4.17.4",
"prop-types": "^15.5.10"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,7 @@ jest.mock('algoliasearch-helper/src/algoliasearch.helper.js', () => {
});

const client = algoliaClient('latency', '249078a3d4337a8231f1665ec5a44966');
client.addAlgoliaAgent = () => {};
client.search = jest.fn((queries, cb) => {
if (cb) {
setImmediate(() => {
// We do not care about the returned values because we also control how
// it will handle in the helper
cb(null, null);
});
return undefined;
}

return new Promise(resolve => {
// cf comment above
resolve(null);
});
});
client.search = jest.fn(() => Promise.resolve({ results: [{ hits: [] }] }));

describe('createInstantSearchManager', () => {
describe('with correct result from algolia', () => {
Expand Down Expand Up @@ -76,46 +61,46 @@ describe('createInstantSearchManager', () => {

expect(ism.store.getState().results).toBe(null);

return Promise.resolve().then(() => {
jest.runAllTimers();

const store = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 1',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 1',
page: 0,
index: 'second',
});
expect(store.error).toBe(null);

ism.widgetsManager.getWidgets()[0].getSearchParameters = params =>
params.setQuery('first query 2');
ism.widgetsManager.getWidgets()[1].getSearchParameters = params =>
params.setQuery('second query 2');

ism.widgetsManager.update();

return Promise.resolve().then(() => {
jest.runAllTimers();

const store1 = ism.store.getState();
return Promise.resolve()
.then(() => {})
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if “await await” is allowed? I think a comment here would be useful too

Copy link
Collaborator

@samouss samouss May 4, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree for the comment!

.then(() => {
const store = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 2',
query: 'first query 1',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 2',
query: 'second query 1',
page: 0,
index: 'second',
});
expect(store1.error).toBe(null);
expect(store.error).toBe(null);

ism.widgetsManager.getWidgets()[0].getSearchParameters = params =>
params.setQuery('first query 2');
ism.widgetsManager.getWidgets()[1].getSearchParameters = params =>
params.setQuery('second query 2');

ism.widgetsManager.update();

return Promise.resolve()
.then(() => {})
.then(() => {
const store1 = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 2',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 2',
page: 0,
index: 'second',
});
expect(store1.error).toBe(null);
});
});
});
});

it('updates the store and searches with duplicate Index & SortBy', () => {
Expand Down Expand Up @@ -174,22 +159,22 @@ describe('createInstantSearchManager', () => {

ism.widgetsManager.update();

return Promise.resolve().then(() => {
jest.runAllTimers();

expect(ism.store.getState().results).toEqual({
first: {
index: 'third',
query: 'query',
page: 0,
},
second: {
index: 'second',
query: 'query',
page: 0,
},
return Promise.resolve()
.then(() => {})
.then(() => {
expect(ism.store.getState().results).toEqual({
first: {
index: 'third',
query: 'query',
page: 0,
},
second: {
index: 'second',
query: 'query',
page: 0,
},
});
});
});
});
});

Expand Down Expand Up @@ -227,22 +212,25 @@ describe('createInstantSearchManager', () => {

expect(ism.store.getState().results).toBe(null);

jest.runAllTimers();

const store = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 1',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 1',
page: 0,
index: 'second',
return Promise.resolve().then(() => {
const store = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 1',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 1',
page: 0,
index: 'second',
});
expect(store.error).toBe(null);
});
expect(store.error).toBe(null);
});

it('updates the store and searches when switching from mono to multi index', () => {
expect.assertions(7);

const ism = createInstantSearchManager({
indexName: 'first',
initialState: {},
Expand Down Expand Up @@ -275,69 +263,71 @@ describe('createInstantSearchManager', () => {

expect(ism.store.getState().results).toBe(null);

jest.runAllTimers();

let store = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 1',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 1',
page: 0,
index: 'second',
});
expect(store.error).toBe(null);

ism.widgetsManager.getWidgets()[0].getSearchParameters = params =>
params.setQuery('first query 2');
ism.widgetsManager.getWidgets().pop();
ism.widgetsManager.getWidgets().pop();
ism.widgetsManager.getWidgets().pop();

ism.onExternalStateUpdate({});

jest.runAllTimers();

store = ism.store.getState();
expect(store.results).toEqual({
query: 'first query 2',
page: 0,
index: 'first',
});

ism.widgetsManager.registerWidget({
getSearchParameters: params => params.setQuery('second query 2'),
context: { multiIndexContext: { targetedIndex: 'second' } },
props: {},
});
ism.widgetsManager.registerWidget({
getSearchParameters: params => params.setPage(3),
context: { multiIndexContext: { targetedIndex: 'first' } },
props: {},
});
ism.widgetsManager.registerWidget({
getSearchParameters: params => params.setIndex('second'),
context: { multiIndexContext: { targetedIndex: 'second' } },
props: {},
});
return Promise.resolve()
.then(() => {
const store = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 1',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 1',
page: 0,
index: 'second',
});
expect(store.error).toBe(null);

ism.widgetsManager.getWidgets()[0].getSearchParameters = params =>
params.setQuery('first query 2');
ism.widgetsManager.getWidgets().pop();
ism.widgetsManager.getWidgets().pop();
ism.widgetsManager.getWidgets().pop();

ism.onExternalStateUpdate({});
})
.then(() => {})
.then(() => {
const store = ism.store.getState();
expect(store.results).toEqual({
query: 'first query 2',
page: 0,
index: 'first',
});

ism.onExternalStateUpdate({});
ism.widgetsManager.registerWidget({
getSearchParameters: params => params.setQuery('second query 2'),
context: { multiIndexContext: { targetedIndex: 'second' } },
props: {},
});
ism.widgetsManager.registerWidget({
getSearchParameters: params => params.setPage(3),
context: { multiIndexContext: { targetedIndex: 'first' } },
props: {},
});
ism.widgetsManager.registerWidget({
getSearchParameters: params => params.setIndex('second'),
context: { multiIndexContext: { targetedIndex: 'second' } },
props: {},
});

jest.runAllTimers();
ism.onExternalStateUpdate({});
})
.then(() => {})
.then(() => {
const store = ism.store.getState();

store = ism.store.getState();
expect(store.results.first).toEqual({
query: 'first query 2',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 2',
page: 0,
index: 'second',
});
expect(store.results.first).toEqual({
query: 'first query 2',
page: 3,
index: 'first',
});
expect(store.results.second).toEqual({
query: 'second query 2',
page: 0,
index: 'second',
});
});
});
});
});
Expand Down
Loading