Skip to content

Commit 6696f50

Browse files
committed
feat: rewrite selector and add tests
1 parent 2441961 commit 6696f50

File tree

3 files changed

+59
-10
lines changed

3 files changed

+59
-10
lines changed

packages/headless/src/api/knowledge/stream-answer-api.ts

+3-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {createSelector, ThunkDispatch, UnknownAction} from '@reduxjs/toolkit';
2-
import {selectAdvancedSearchQueries} from '../../features/advanced-search-queries/advanced-query-selectors.js';
2+
import {selectAdvancedSearchQueries} from '../../features/advanced-search-queries/advanced-search-query-selectors.js';
33
import {
44
setAnswerContentFormat,
55
setCannotAnswer,
@@ -277,10 +277,7 @@ export const constructAnswerQueryParams = (
277277
usage: 'fetch' | 'select'
278278
) => {
279279
const q = selectQuery(state)?.q;
280-
const aq = selectAdvancedSearchQueries(state)?.aq;
281-
const cq = selectAdvancedSearchQueries(state)?.cq;
282-
const dq = selectAdvancedSearchQueries(state)?.dq;
283-
const lq = selectAdvancedSearchQueries(state)?.lq;
280+
const advancedQueryParams = selectAdvancedSearchQueries(state) ?? {};
284281
const searchHub = selectSearchHub(state);
285282
const pipeline = selectPipeline(state);
286283
const citationsFieldToInclude = selectFieldsToIncludeInCitation(state) ?? [];
@@ -291,10 +288,7 @@ export const constructAnswerQueryParams = (
291288

292289
return {
293290
q,
294-
aq,
295-
cq,
296-
dq,
297-
lq,
291+
...advancedQueryParams,
298292
pipelineRuleParameters: {
299293
mlGenerativeQuestionAnswering: {
300294
responseFormat: state.generatedAnswer.responseFormat,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import {AdvancedSearchQueriesState} from './advanced-search-queries-state.js';
2+
import {selectAdvancedSearchQueries} from './advanced-search-query-selectors.js';
3+
4+
describe('advancedQuerySearch Selectors test suite', () => {
5+
describe('#selectAdvancedSearchQueries', () => {
6+
it('should return an empty object when advancedSearchQueries is undefined', () => {
7+
const expectedOutput = {};
8+
const state = {advancedSearchQueries: undefined};
9+
10+
const result = selectAdvancedSearchQueries(state);
11+
12+
expect(result).toEqual(expectedOutput);
13+
});
14+
15+
it('should return only the properties aq, cq, dq, and lq from the state', () => {
16+
const exampleAdvancedSearchQueries: AdvancedSearchQueriesState =
17+
newExampleAdvancedSearchQueriesStateFixture();
18+
const expectedOutput = {
19+
aq: 'aq-parameter-value',
20+
cq: 'cq-parameter-value',
21+
dq: 'dq-parameter-value',
22+
lq: 'lq-parameter-value',
23+
};
24+
const state = {advancedSearchQueries: exampleAdvancedSearchQueries};
25+
26+
const result = selectAdvancedSearchQueries(state);
27+
expect(result).toEqual(expectedOutput);
28+
});
29+
});
30+
});
31+
32+
function newExampleAdvancedSearchQueriesStateFixture() {
33+
return {
34+
aq: 'aq-parameter-value',
35+
cq: 'cq-parameter-value',
36+
dq: 'dq-parameter-value',
37+
lq: 'lq-parameter-value',
38+
aqWasSet: true,
39+
cqWasSet: false,
40+
dqWasSet: false,
41+
lqWasSet: true,
42+
defaultFilters: {
43+
aq: 'a-default-aq-parameter-value',
44+
cq: 'a-default-cq-parameter-value',
45+
dq: 'a-default-dq-parameter-value',
46+
lq: 'a-default-lq-parameter-value',
47+
},
48+
};
49+
}

packages/headless/src/features/advanced-search-queries/advanced-query-selectors.ts renamed to packages/headless/src/features/advanced-search-queries/advanced-search-query-selectors.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,11 @@ import {AdvancedSearchQueriesState} from './advanced-search-queries-state.js';
44
export const selectAdvancedSearchQueries = createSelector(
55
(state: {advancedSearchQueries?: AdvancedSearchQueriesState}) =>
66
state.advancedSearchQueries,
7-
(advancedSearchQueries) => advancedSearchQueries
7+
(advancedSearchQueries) => {
8+
if (!advancedSearchQueries) {
9+
return {};
10+
}
11+
const {aq, cq, dq, lq} = advancedSearchQueries;
12+
return {aq, cq, dq, lq};
13+
}
814
);

0 commit comments

Comments
 (0)