11import { render , screen } from "@testing-library/react" ;
2+ import { useSearchParams } from "next/navigation" ;
23import { describe , expect , it , vi } from "vitest" ;
34
45vi . mock ( "next/navigation" , async ( ) => {
@@ -28,7 +29,7 @@ import { PublicReferentsPage } from "../PublicReferentsPage";
2829describe ( "PublicReferentsPage" , ( ) => {
2930 it ( "renders title and intro paragraph" , ( ) => {
3031 useQueryMock . mockReturnValue ( {
31- data : { rows : [ ] , total : 0 , page : 1 , pageSize : 20 , totalPages : 1 } ,
32+ data : undefined ,
3233 isLoading : false ,
3334 isError : false ,
3435 } ) ;
@@ -44,7 +45,7 @@ describe("PublicReferentsPage", () => {
4445
4546 it ( "renders the search form" , ( ) => {
4647 useQueryMock . mockReturnValue ( {
47- data : { rows : [ ] , total : 0 , page : 1 , pageSize : 20 , totalPages : 1 } ,
48+ data : undefined ,
4849 isLoading : false ,
4950 isError : false ,
5051 } ) ;
@@ -54,7 +55,48 @@ describe("PublicReferentsPage", () => {
5455 ) . toBeInTheDocument ( ) ;
5556 } ) ;
5657
57- it ( "shows empty state when no results" , ( ) => {
58+ it ( "does not call the search API when no filter is set" , ( ) => {
59+ useQueryMock . mockClear ( ) ;
60+ useQueryMock . mockReturnValue ( {
61+ data : undefined ,
62+ isLoading : false ,
63+ isError : false ,
64+ } ) ;
65+ render ( < PublicReferentsPage /> ) ;
66+ expect ( useQueryMock ) . toHaveBeenCalledWith (
67+ expect . anything ( ) ,
68+ expect . objectContaining ( { enabled : false } ) ,
69+ ) ;
70+ expect (
71+ screen . getByText ( / r e m p l i s s e z a u m o i n s u n f i l t r e / i) ,
72+ ) . toBeInTheDocument ( ) ;
73+ } ) ;
74+
75+ it ( "enables the search API when at least one filter is set" , async ( ) => {
76+ vi . mocked ( useSearchParams ) . mockReturnValueOnce (
77+ new URLSearchParams ( { region : "93" } ) as ReturnType <
78+ typeof useSearchParams
79+ > ,
80+ ) ;
81+ useQueryMock . mockClear ( ) ;
82+ useQueryMock . mockReturnValue ( {
83+ data : { rows : [ ] , total : 0 , page : 1 , pageSize : 20 , totalPages : 1 } ,
84+ isLoading : false ,
85+ isError : false ,
86+ } ) ;
87+ render ( < PublicReferentsPage /> ) ;
88+ expect ( useQueryMock ) . toHaveBeenCalledWith (
89+ expect . anything ( ) ,
90+ expect . objectContaining ( { enabled : true } ) ,
91+ ) ;
92+ } ) ;
93+
94+ it ( "shows empty state when filter yields no results" , ( ) => {
95+ vi . mocked ( useSearchParams ) . mockReturnValueOnce (
96+ new URLSearchParams ( { region : "93" } ) as ReturnType <
97+ typeof useSearchParams
98+ > ,
99+ ) ;
58100 useQueryMock . mockReturnValue ( {
59101 data : { rows : [ ] , total : 0 , page : 1 , pageSize : 20 , totalPages : 1 } ,
60102 isLoading : false ,
@@ -65,6 +107,11 @@ describe("PublicReferentsPage", () => {
65107 } ) ;
66108
67109 it ( "renders a list of referents when data is returned" , ( ) => {
110+ vi . mocked ( useSearchParams ) . mockReturnValueOnce (
111+ new URLSearchParams ( { region : "11" } ) as ReturnType <
112+ typeof useSearchParams
113+ > ,
114+ ) ;
68115 useQueryMock . mockReturnValue ( {
69116 data : {
70117 rows : [
@@ -90,6 +137,11 @@ describe("PublicReferentsPage", () => {
90137 } ) ;
91138
92139 it ( "renders the error alert when the query fails" , ( ) => {
140+ vi . mocked ( useSearchParams ) . mockReturnValueOnce (
141+ new URLSearchParams ( { region : "11" } ) as ReturnType <
142+ typeof useSearchParams
143+ > ,
144+ ) ;
93145 useQueryMock . mockReturnValue ( {
94146 data : undefined ,
95147 isLoading : false ,
@@ -100,6 +152,11 @@ describe("PublicReferentsPage", () => {
100152 } ) ;
101153
102154 it ( "shows a loading state when data is not yet available" , ( ) => {
155+ vi . mocked ( useSearchParams ) . mockReturnValueOnce (
156+ new URLSearchParams ( { region : "11" } ) as ReturnType <
157+ typeof useSearchParams
158+ > ,
159+ ) ;
103160 useQueryMock . mockReturnValue ( {
104161 data : undefined ,
105162 isLoading : true ,
@@ -110,6 +167,11 @@ describe("PublicReferentsPage", () => {
110167 } ) ;
111168
112169 it ( "renders pagination when there is more than one page" , ( ) => {
170+ vi . mocked ( useSearchParams ) . mockReturnValueOnce (
171+ new URLSearchParams ( { region : "11" } ) as ReturnType <
172+ typeof useSearchParams
173+ > ,
174+ ) ;
113175 useQueryMock . mockReturnValue ( {
114176 data : { rows : [ ] , total : 50 , page : 1 , pageSize : 20 , totalPages : 3 } ,
115177 isLoading : false ,
@@ -122,6 +184,11 @@ describe("PublicReferentsPage", () => {
122184 } ) ;
123185
124186 it ( "does not render pagination when there is only one page" , ( ) => {
187+ vi . mocked ( useSearchParams ) . mockReturnValueOnce (
188+ new URLSearchParams ( { region : "11" } ) as ReturnType <
189+ typeof useSearchParams
190+ > ,
191+ ) ;
125192 useQueryMock . mockReturnValue ( {
126193 data : { rows : [ ] , total : 5 , page : 1 , pageSize : 20 , totalPages : 1 } ,
127194 isLoading : false ,
0 commit comments