@@ -692,4 +692,100 @@ describe('requester', () => {
692692 ` ) ;
693693 } ) ;
694694 } ) ;
695+
696+ test ( 'allows plugins to pass extra parameters to the search client' , async ( ) => {
697+ const container = document . createElement ( 'div' ) ;
698+ const panelContainer = document . createElement ( 'div' ) ;
699+
700+ document . body . appendChild ( panelContainer ) ;
701+
702+ const searchClient = createSearchClient ( {
703+ search : jest . fn ( ( ) =>
704+ Promise . resolve (
705+ createMultiSearchResponse < { label : string } > (
706+ {
707+ hits : [ { objectID : '1' , label : 'Hit 1' } ] ,
708+ } ,
709+ { facetHits : [ { count : 2 , value : 'Hit 2' } ] }
710+ )
711+ )
712+ ) ,
713+ } ) ;
714+
715+ autocomplete ( {
716+ container,
717+ panelContainer,
718+ getSources ( { query } ) {
719+ return [
720+ {
721+ sourceId : 'hits' ,
722+ getItems ( ) {
723+ return getAlgoliaResults ( {
724+ searchClient,
725+ queries : [
726+ {
727+ indexName : 'indexName' ,
728+ query,
729+ } ,
730+ ] ,
731+ } ) ;
732+ } ,
733+ templates : {
734+ item ( { item } ) {
735+ return JSON . stringify ( item ) ;
736+ } ,
737+ } ,
738+ } ,
739+ {
740+ sourceId : 'facets' ,
741+ getItems ( ) {
742+ return getAlgoliaFacets ( {
743+ searchClient,
744+ queries : [
745+ {
746+ indexName : 'indexName' ,
747+ facet : 'categories' ,
748+ params : {
749+ facetQuery : query ,
750+ } ,
751+ } ,
752+ ] ,
753+ } ) ;
754+ } ,
755+ templates : {
756+ item ( { item } ) {
757+ return JSON . stringify ( item ) ;
758+ } ,
759+ } ,
760+ } ,
761+ ] ;
762+ } ,
763+ } ) . setContext ( {
764+ myPlugin : {
765+ __algoliaSearchParameters : {
766+ extraParam : true ,
767+ } ,
768+ } ,
769+ } ) ;
770+
771+ const input = container . querySelector < HTMLInputElement > ( '.aa-Input' ) ;
772+
773+ fireEvent . input ( input , { target : { value : 'a' } } ) ;
774+
775+ await waitFor ( ( ) => {
776+ expect (
777+ panelContainer . querySelector < HTMLElement > ( '.aa-Panel' )
778+ ) . toBeInTheDocument ( ) ;
779+ } ) ;
780+
781+ expect ( searchClient . search ) . toHaveBeenCalledTimes ( 1 ) ;
782+ expect ( searchClient . search ) . toHaveBeenCalledWith ( [
783+ expect . objectContaining ( {
784+ params : expect . objectContaining ( { extraParam : true } ) ,
785+ } ) ,
786+ expect . objectContaining ( {
787+ params : expect . objectContaining ( { extraParam : true } ) ,
788+ } ) ,
789+ ] ) ;
790+ } ) ;
695791} ) ;
0 commit comments