@@ -108,4 +108,53 @@ test.describe("Organizations", () => {
108108 await expect ( page . getByText ( "Stakeholder 2" ) ) . toBeVisible ( ) ;
109109 await expect ( page . getByText ( "Stakeholder 3" ) ) . toBeHidden ( ) ;
110110 } ) ;
111+
112+ test ( "searching by address should show only the matching stakeholder" , async ( {
113+ page,
114+ } ) => {
115+ await mockRequests ( page ) ;
116+ await page . goto ( "/organizations" ) ;
117+ await page . getByRole ( "button" , { name : "More Filters" } ) . click ( ) ;
118+ await page
119+ . getByPlaceholder ( "i.e. kosher, senior, First Baptist, 90015" )
120+ . fill ( "222 Address" ) ;
121+ await expect ( page . getByText ( "Stakeholder 1" ) ) . toBeHidden ( ) ;
122+ await expect ( page . getByText ( "Stakeholder 2" ) ) . toBeVisible ( ) ;
123+ await expect ( page . getByText ( "Stakeholder 3" ) ) . toBeHidden ( ) ;
124+ } ) ;
125+
126+ test ( "searching by a multi-word term found in a non-name field (requirements) should show only the matching stakeholder" , async ( {
127+ page,
128+ } ) => {
129+ await mockRequests ( page ) ;
130+ await page . goto ( "/organizations" ) ;
131+ await page . getByRole ( "button" , { name : "More Filters" } ) . click ( ) ;
132+ // "kosher" and "seniors" only both appear in Stakeholder 2's requirements
133+ // text -- this exercises the "AND" multi-word, non-name-field search.
134+ await page
135+ . getByPlaceholder ( "i.e. kosher, senior, First Baptist, 90015" )
136+ . fill ( "kosher seniors" ) ;
137+ await expect ( page . getByText ( "Stakeholder 1" ) ) . toBeHidden ( ) ;
138+ await expect ( page . getByText ( "Stakeholder 2" ) ) . toBeVisible ( ) ;
139+ await expect ( page . getByText ( "Stakeholder 3" ) ) . toBeHidden ( ) ;
140+ } ) ;
141+
142+ test ( "searching by words matched across two different fields (name + address) on the same stakeholder should AND across fields" , async ( {
143+ page,
144+ } ) => {
145+ await mockRequests ( page ) ;
146+ await page . goto ( "/organizations" ) ;
147+ await page . getByRole ( "button" , { name : "More Filters" } ) . click ( ) ;
148+ // "stakeholder" matches the `name` field of all three mock stakeholders,
149+ // but "222" only appears in Stakeholder 2's `address1` field. Only a
150+ // stakeholder satisfying both words -- one via name, one via a different
151+ // field -- should remain, proving the fields are searched as one
152+ // combined AND-across-fields blob rather than independently.
153+ await page
154+ . getByPlaceholder ( "i.e. kosher, senior, First Baptist, 90015" )
155+ . fill ( "stakeholder 222" ) ;
156+ await expect ( page . getByText ( "Stakeholder 1" ) ) . toBeHidden ( ) ;
157+ await expect ( page . getByText ( "Stakeholder 2" ) ) . toBeVisible ( ) ;
158+ await expect ( page . getByText ( "Stakeholder 3" ) ) . toBeHidden ( ) ;
159+ } ) ;
111160} ) ;
0 commit comments