@@ -1577,6 +1577,68 @@ describe('ListView', () => {
15771577 expect ( mockDataSource . find ) . not . toHaveBeenCalled ( ) ;
15781578 } ) ;
15791579
1580+ it ( 'should filter inline array data by searchTerm' , async ( ) => {
1581+ const schema : ListViewSchema = {
1582+ type : 'list-view' ,
1583+ objectName : 'contacts' ,
1584+ viewType : 'grid' ,
1585+ fields : [ 'name' , 'email' ] ,
1586+ data : [
1587+ { _id : '1' , name : 'Alice' , email : 'alice@test.com' } ,
1588+ { _id : '2' , name : 'Bob' , email : 'bob@test.com' } ,
1589+ { _id : '3' , name : 'Charlie' , email : 'charlie@test.com' } ,
1590+ ] as any ,
1591+ } ;
1592+
1593+ mockDataSource . find . mockClear ( ) ;
1594+ renderWithProvider ( < ListView schema = { schema } dataSource = { mockDataSource } /> ) ;
1595+
1596+ await vi . waitFor ( ( ) => {
1597+ expect ( screen . getByText ( '3 records' ) ) . toBeInTheDocument ( ) ;
1598+ } ) ;
1599+
1600+ // Open search popover and type search query
1601+ fireEvent . click ( screen . getByTestId ( 'search-icon-button' ) ) ;
1602+ fireEvent . change ( screen . getByPlaceholderText ( / s e a r c h / i) , { target : { value : 'alice' } } ) ;
1603+
1604+ await vi . waitFor ( ( ) => {
1605+ expect ( screen . getByText ( '1 record' ) ) . toBeInTheDocument ( ) ;
1606+ } ) ;
1607+ expect ( mockDataSource . find ) . not . toHaveBeenCalled ( ) ;
1608+ } ) ;
1609+
1610+ it ( 'should filter value provider data by searchTerm' , async ( ) => {
1611+ const schema : ListViewSchema = {
1612+ type : 'list-view' ,
1613+ objectName : 'contacts' ,
1614+ viewType : 'grid' ,
1615+ fields : [ 'name' , 'email' ] ,
1616+ data : {
1617+ provider : 'value' ,
1618+ items : [
1619+ { _id : '1' , name : 'Alice' , email : 'alice@test.com' } ,
1620+ { _id : '2' , name : 'Bob' , email : 'bob@test.com' } ,
1621+ ] ,
1622+ } as any ,
1623+ } ;
1624+
1625+ mockDataSource . find . mockClear ( ) ;
1626+ renderWithProvider ( < ListView schema = { schema } dataSource = { mockDataSource } /> ) ;
1627+
1628+ await vi . waitFor ( ( ) => {
1629+ expect ( screen . getByText ( '2 records' ) ) . toBeInTheDocument ( ) ;
1630+ } ) ;
1631+
1632+ // Open search popover and type search query
1633+ fireEvent . click ( screen . getByTestId ( 'search-icon-button' ) ) ;
1634+ fireEvent . change ( screen . getByPlaceholderText ( / s e a r c h / i) , { target : { value : 'bob' } } ) ;
1635+
1636+ await vi . waitFor ( ( ) => {
1637+ expect ( screen . getByText ( '1 record' ) ) . toBeInTheDocument ( ) ;
1638+ } ) ;
1639+ expect ( mockDataSource . find ) . not . toHaveBeenCalled ( ) ;
1640+ } ) ;
1641+
15801642 it ( 'should fall back to dataSource.find when schema.data is not set' , async ( ) => {
15811643 const mockItems = [
15821644 { _id : '1' , name : 'Alice' , email : 'alice@test.com' } ,
0 commit comments