-
Notifications
You must be signed in to change notification settings - Fork 539
/
Copy pathhelper.searchOnce.js
85 lines (74 loc) · 2.23 KB
/
helper.searchOnce.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
'use strict';
jest.retryTimes(3, { logErrorsBeforeRetry: true });
var utils = require('../../test/integration-utils');
var setup = utils.setupSimple;
var createIndexName = utils.createIndexName;
var algoliasearchHelper = require('../../');
var indexName = createIndexName('helper_searchonce');
var dataset = [
{ objectID: '1', facet: ['f1', 'f2'] },
{ objectID: '2', facet: ['f1', 'f3'] },
{ objectID: '3', facet: ['f2', 'f3'] },
];
var config = {
attributesToIndex: ['facet'],
attributesForFaceting: ['facet'],
};
var client;
beforeAll(function () {
return setup(indexName, dataset, config).then(function (c) {
client = c;
});
});
test('[INT][SEARCHONCE] Should be able to search once with custom parameters without changing main search state', function (done) {
var helper = algoliasearchHelper(client, indexName);
var state0 = helper.state;
var calls = 1;
helper.on('error', function (event) {
done.fail(event.error);
});
helper.on('result', function (event) {
if (calls === 3) {
expect(event.results.hits.length).toBe(3);
done();
} else {
done.fail('Should not trigger the result event until the third call');
}
});
var state1 = state0.setFacets(['facet']).addFacetRefinement('facet', 'f1');
helper.searchOnce(state1).then(function (res) {
expect(helper.state).toBe(state0);
expect(res.state).toEqual(state1);
expect(res.content.hits.length).toBe(2);
expect(
res.content.hits.find(function (hit) {
return hit.objectID === '2';
})
).toBeTruthy();
expect(
res.content.hits.find(function (hit) {
return hit.objectID === '1';
})
).toBeTruthy();
calls++;
var state2 = state0.setFacets(['facet']).addFacetRefinement('facet', 'f2');
helper.searchOnce(state2, function (err, c, s) {
expect(err).toBe(null);
expect(helper.state).toBe(state0);
expect(s).toEqual(state2);
expect(c.hits.length).toBe(2);
expect(
c.hits.find(function (hit) {
return hit.objectID === '1';
})
).toBeTruthy();
expect(
c.hits.find(function (hit) {
return hit.objectID === '3';
})
).toBeTruthy();
calls++;
helper.search();
});
});
});