vue-instantsearch 4.17.3 → 4.17.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
2
2
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
3
3
 
4
+
4
5
  - [Vue InstantSearch](#vue-instantsearch)
5
6
  - [Documentation](#documentation)
6
7
  - [Installation](#installation)
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "autocomplete"
17
17
  ],
18
18
  "license": "MIT",
19
- "version": "4.17.3",
19
+ "version": "4.17.5",
20
20
  "files": [
21
21
  "vue2",
22
22
  "vue3",
@@ -36,8 +36,8 @@
36
36
  "watch:es": "yarn --silent build --watch"
37
37
  },
38
38
  "dependencies": {
39
- "instantsearch-ui-components": "0.6.0",
40
- "instantsearch.js": "4.71.1",
39
+ "instantsearch-ui-components": "0.7.0",
40
+ "instantsearch.js": "4.72.1",
41
41
  "mitt": "^2.1.0"
42
42
  },
43
43
  "peerDependencies": {
@@ -62,7 +62,7 @@
62
62
  "@vue/test-utils": "1.3.0",
63
63
  "@vue/test-utils2": "npm:@vue/test-utils@2.0.0-rc.11",
64
64
  "algoliasearch": "4.23.2",
65
- "algoliasearch-helper": "3.21.0",
65
+ "algoliasearch-helper": "3.22.1",
66
66
  "instantsearch.css": "8.2.1",
67
67
  "rollup": "1.32.1",
68
68
  "rollup-plugin-babel": "4.4.0",
@@ -89,5 +89,5 @@
89
89
  "vuex": "3.5.1",
90
90
  "vuex4": "npm:vuex@4.0.0"
91
91
  },
92
- "gitHead": "443c2f875bd5ddd5cc94285b49c1e8c05df5e0f6"
92
+ "gitHead": "035e7a8634884096e71dfbd001c485b79f9bbf88"
93
93
  }
@@ -28,6 +28,7 @@ import {
28
28
  AisNumericMenu,
29
29
  AisPoweredBy,
30
30
  AisMenuSelect,
31
+ AisDynamicWidgets,
31
32
  } from '../instantsearch';
32
33
  import { renderCompat } from '../util/vue-compat';
33
34
 
@@ -554,6 +555,32 @@ const testSetups = {
554
555
 
555
556
  await nextTick();
556
557
  },
558
+ createDynamicWidgetsWidgetTests({ instantSearchOptions, widgetParams }) {
559
+ mountApp(
560
+ {
561
+ render: renderCompat((h) =>
562
+ h(AisInstantSearch, { props: instantSearchOptions }, [
563
+ h(
564
+ AisDynamicWidgets,
565
+ { props: widgetParams },
566
+ h(AisRefinementList, { props: { attribute: 'brand' } }),
567
+ h(AisMenu, { props: { attribute: 'category' } }),
568
+ h(AisHierarchicalMenu, {
569
+ props: {
570
+ attributes: [
571
+ 'hierarchicalCategories.lvl0',
572
+ 'hierarchicalCategories.lvl1',
573
+ ],
574
+ },
575
+ })
576
+ ),
577
+ h(GlobalErrorSwallower),
578
+ ])
579
+ ),
580
+ },
581
+ document.body.appendChild(document.createElement('div'))
582
+ );
583
+ },
557
584
  };
558
585
 
559
586
  const testOptions = {
@@ -591,6 +618,7 @@ const testOptions = {
591
618
  skippedTests: { 'LookingSimilar widget common tests': true },
592
619
  },
593
620
  createPoweredByWidgetTests: undefined,
621
+ createDynamicWidgetsWidgetTests: undefined,
594
622
  };
595
623
 
596
624
  describe('Common widget tests (Vue InstantSearch)', () => {
@@ -26,233 +26,6 @@ const defaultProps = {
26
26
  attribute: 'price',
27
27
  };
28
28
 
29
- it('accepts an attribute prop', () => {
30
- __setState({
31
- ...defaultState,
32
- });
33
-
34
- const wrapper = mount(RangeInput, {
35
- propsData: {
36
- ...defaultProps,
37
- },
38
- });
39
-
40
- expect(wrapper.vm.widgetParams.attribute).toBe('price');
41
- });
42
-
43
- it('accepts a min prop', () => {
44
- __setState({
45
- ...defaultState,
46
- });
47
-
48
- const wrapper = mount(RangeInput, {
49
- propsData: {
50
- ...defaultProps,
51
- min: 10,
52
- },
53
- });
54
-
55
- expect(wrapper.vm.widgetParams.min).toBe(10);
56
- });
57
-
58
- it('accepts a max prop', () => {
59
- __setState({
60
- ...defaultState,
61
- });
62
-
63
- const wrapper = mount(RangeInput, {
64
- propsData: {
65
- ...defaultProps,
66
- max: 500,
67
- },
68
- });
69
-
70
- expect(wrapper.vm.widgetParams.max).toBe(500);
71
- });
72
-
73
- it('accepts a precision prop', () => {
74
- __setState({
75
- ...defaultState,
76
- });
77
-
78
- const wrapper = mount(RangeInput, {
79
- propsData: {
80
- ...defaultProps,
81
- precision: 3,
82
- },
83
- });
84
-
85
- expect(wrapper.vm.widgetParams.precision).toBe(3);
86
- });
87
-
88
- describe('rendering', () => {
89
- it('displays correctly with default', () => {
90
- __setState({
91
- ...defaultState,
92
- });
93
-
94
- const wrapper = mount(RangeInput, {
95
- propsData: defaultProps,
96
- });
97
-
98
- expect(wrapper.html()).toMatchSnapshot();
99
- });
100
-
101
- it('displays correctly with a min', () => {
102
- __setState({
103
- ...defaultState,
104
- range: {
105
- ...defaultRange,
106
- min: 100,
107
- },
108
- });
109
-
110
- const wrapper = mount(RangeInput, {
111
- propsData: {
112
- ...defaultProps,
113
- },
114
- });
115
-
116
- expect(wrapper.html()).toMatchSnapshot();
117
- });
118
-
119
- it('displays correctly with a max', () => {
120
- __setState({
121
- ...defaultState,
122
- range: {
123
- ...defaultRange,
124
- max: 100,
125
- },
126
- });
127
-
128
- const wrapper = mount(RangeInput, {
129
- propsData: {
130
- ...defaultProps,
131
- },
132
- });
133
-
134
- expect(wrapper.html()).toMatchSnapshot();
135
- });
136
-
137
- it('displays correctly with a min and a max', () => {
138
- __setState({
139
- ...defaultState,
140
- range: {
141
- min: 10,
142
- max: 37,
143
- },
144
- });
145
-
146
- const wrapper = mount(RangeInput, {
147
- propsData: {
148
- ...defaultProps,
149
- },
150
- });
151
-
152
- expect(wrapper.html()).toMatchSnapshot();
153
- });
154
-
155
- it('displays correctly with a min refinement', () => {
156
- __setState({
157
- ...defaultState,
158
- start: [10, 500],
159
- });
160
-
161
- const wrapper = mount(RangeInput, {
162
- propsData: {
163
- ...defaultProps,
164
- },
165
- });
166
-
167
- expect(wrapper.find('.ais-RangeInput-input--min').element.value).toBe('10');
168
- });
169
-
170
- it('displays correctly with a min refinement equal -Infinity', () => {
171
- __setState({
172
- ...defaultState,
173
- start: [-Infinity, 500],
174
- });
175
-
176
- const wrapper = mount(RangeInput, {
177
- propsData: {
178
- ...defaultProps,
179
- },
180
- });
181
-
182
- expect(wrapper.find('.ais-RangeInput-input--min').element.value).toBe('');
183
- });
184
-
185
- it('displays correctly with a min refinement equal to min range', () => {
186
- __setState({
187
- ...defaultState,
188
- start: [10, 500],
189
- range: {
190
- ...defaultRange,
191
- min: 10,
192
- },
193
- });
194
-
195
- const wrapper = mount(RangeInput, {
196
- propsData: {
197
- ...defaultProps,
198
- },
199
- });
200
-
201
- expect(wrapper.find('.ais-RangeInput-input--min').element.value).toBe('');
202
- });
203
-
204
- it('displays correctly with a max refinement', () => {
205
- __setState({
206
- ...defaultState,
207
- start: [10, 500],
208
- });
209
-
210
- const wrapper = mount(RangeInput, {
211
- propsData: {
212
- ...defaultProps,
213
- },
214
- });
215
-
216
- expect(wrapper.find('.ais-RangeInput-input--max').element.value).toBe(
217
- '500'
218
- );
219
- });
220
-
221
- it('displays correctly with a max refinement equal Infinity', () => {
222
- __setState({
223
- ...defaultState,
224
- start: [10, Infinity],
225
- });
226
-
227
- const wrapper = mount(RangeInput, {
228
- propsData: {
229
- ...defaultProps,
230
- },
231
- });
232
-
233
- expect(wrapper.find('.ais-RangeInput-input--max').element.value).toBe('');
234
- });
235
-
236
- it('displays correctly with a max refinement equal to max range', () => {
237
- __setState({
238
- ...defaultState,
239
- start: [10, 500],
240
- range: {
241
- ...defaultRange,
242
- max: 500,
243
- },
244
- });
245
-
246
- const wrapper = mount(RangeInput, {
247
- propsData: {
248
- ...defaultProps,
249
- },
250
- });
251
-
252
- expect(wrapper.find('.ais-RangeInput-input--max').element.value).toBe('');
253
- });
254
- });
255
-
256
29
  it('exposes send-event method for insights middleware', async () => {
257
30
  const sendEvent = jest.fn();
258
31
  __setState({
@@ -279,93 +52,3 @@ it('exposes send-event method for insights middleware', async () => {
279
52
  await wrapper.find('button').trigger('click');
280
53
  expect(sendEvent).toHaveBeenCalledTimes(1);
281
54
  });
282
-
283
- describe('refinement', () => {
284
- it('uses the value of the inputs when the form is submited', async () => {
285
- const refine = jest.fn();
286
-
287
- __setState({
288
- ...defaultState,
289
- refine,
290
- });
291
-
292
- const wrapper = mount(RangeInput, {
293
- propsData: {
294
- attribute: 'price',
295
- },
296
- });
297
-
298
- const minInput = wrapper.find('.ais-RangeInput-input--min');
299
- minInput.element.value = 100;
300
- await minInput.trigger('change');
301
-
302
- const maxInput = wrapper.find('.ais-RangeInput-input--max');
303
- maxInput.element.value = 106;
304
- await maxInput.trigger('change');
305
-
306
- const form = wrapper.find('form');
307
- await form.trigger('submit');
308
-
309
- expect(refine).toHaveBeenLastCalledWith(['100', '106']);
310
- });
311
-
312
- it('refines correctly when `start` given and user clicks submit without changing input field', async () => {
313
- const refine = jest.fn();
314
- __setState({
315
- refine,
316
- start: [50, 100],
317
- range: {
318
- min: 1,
319
- max: 5000,
320
- },
321
- });
322
-
323
- const wrapper = mount(RangeInput, {
324
- propsData: {
325
- ...defaultProps,
326
- },
327
- });
328
-
329
- const form = wrapper.find('form');
330
- await form.trigger('submit');
331
-
332
- expect(refine).toHaveBeenCalledTimes(1);
333
- expect(refine).toHaveBeenCalledWith([50, 100]);
334
- });
335
-
336
- it('refines correctly even when state changes', async () => {
337
- const refine = jest.fn();
338
- __setState({
339
- ...defaultState,
340
- refine,
341
- });
342
-
343
- const wrapper = mount(RangeInput, {
344
- propsData: {
345
- ...defaultProps,
346
- },
347
- });
348
-
349
- // refine for the first time
350
- const minInput = wrapper.find('.ais-RangeInput-input--min');
351
- minInput.element.value = 10;
352
- await minInput.trigger('change');
353
-
354
- const maxInput = wrapper.find('.ais-RangeInput-input--max');
355
- maxInput.element.value = 100;
356
- await maxInput.trigger('change');
357
-
358
- const form = wrapper.find('form');
359
- await form.trigger('submit');
360
-
361
- expect(refine).toHaveBeenCalledTimes(1);
362
- expect(refine).toHaveBeenCalledWith(['10', '100']);
363
-
364
- // update the state
365
- await wrapper.setData({ state: { start: [50, 200] } }); // min: 10 -> 50, max: 100 -> 200
366
-
367
- await form.trigger('submit');
368
- expect(refine).toHaveBeenCalledTimes(2);
369
- expect(refine).toHaveBeenCalledWith([50, 200]);
370
- });
371
- });
@@ -262,10 +262,8 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
262
262
  {
263
263
  "indexName": "hello",
264
264
  "params": {
265
- "facets": [],
266
265
  "hitsPerPage": 100,
267
266
  "query": "",
268
- "tagFilters": "",
269
267
  },
270
268
  },
271
269
  ]
@@ -318,10 +316,8 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
318
316
 
319
317
  expect(state.hello).toEqual({
320
318
  requestParams: {
321
- facets: [],
322
319
  hitsPerPage: 100,
323
320
  query: '',
324
- tagFilters: '',
325
321
  },
326
322
  results: [
327
323
  {
@@ -347,10 +343,8 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
347
343
  // Parent's widgets state should not be merged into nested index state
348
344
  expect(state.nestedIndex).toEqual({
349
345
  requestParams: {
350
- facets: [],
351
346
  hitsPerPage: 100,
352
347
  query: '',
353
- tagFilters: '',
354
348
  },
355
349
  results: [
356
350
  {
@@ -879,10 +873,8 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
879
873
  {
880
874
  "indexName": "hello",
881
875
  "params": {
882
- "facets": [],
883
876
  "hitsPerPage": 100,
884
877
  "query": "",
885
- "tagFilters": "",
886
878
  },
887
879
  },
888
880
  ]
@@ -955,10 +947,8 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/instantsear
955
947
  {
956
948
  "indexName": "hello",
957
949
  "params": {
958
- "facets": [],
959
950
  "hitsPerPage": 100,
960
951
  "query": "",
961
- "tagFilters": "",
962
952
  },
963
953
  },
964
954
  ]