@@ -755,4 +755,50 @@ public async Task FilterByIsNullOrWhiteSpaceTest()
755755        Assert . AreEqual ( 1 ,  usersWithValidDisplayName . Count ) ; 
756756        Assert . AreEqual ( "Alice" ,  usersWithValidDisplayName [ 0 ] . Name ) ; 
757757    } 
758+ 
759+     [ TestMethod ] 
760+     public  async  Task  FilterByHasValueTest ( ) 
761+     { 
762+         var  key1  =  nameof ( FilterByHasValueTest )  +  "1" ; 
763+         var  key2  =  nameof ( FilterByHasValueTest )  +  "2" ; 
764+         var  key3  =  nameof ( FilterByHasValueTest )  +  "3" ; 
765+         var  pid  =  nameof ( FilterByHasValueTest ) ; 
766+ 
767+         var  user1  =  new  UserProfile 
768+         { 
769+             Name  =  "Alice" , 
770+             IsVerified  =  true 
771+         } ; 
772+ 
773+         var  user2  =  new  UserProfile 
774+         { 
775+             Name  =  "Bob" , 
776+             IsVerified  =  false 
777+         } ; 
778+ 
779+         var  user3  =  new  UserProfile 
780+         { 
781+             Name  =  "Charlie" , 
782+             IsVerified  =  null  // null value 
783+         } ; 
784+ 
785+         await  kv . UpsertAsync ( key1 ,  user1 ,  pid ) ; 
786+         await  kv . UpsertAsync ( key2 ,  user2 ,  pid ) ; 
787+         await  kv . UpsertAsync ( key3 ,  user3 ,  pid ) ; 
788+ 
789+         // This query should filter users where IsVerified has a value (not null) 
790+         Expression < Func < UserProfile ,  bool > >  expr  =  u =>  u . IsVerified . HasValue ; 
791+         var  usersWithVerificationStatus  =  await  kv . GetListAsync ( pid ,  expr ) . ToListAsync ( ) ; 
792+ 
793+         Assert . AreEqual ( 2 ,  usersWithVerificationStatus . Count ) ; 
794+         Assert . IsTrue ( usersWithVerificationStatus . Any ( u =>  u . Name  ==  "Alice" ) ) ; 
795+         Assert . IsTrue ( usersWithVerificationStatus . Any ( u =>  u . Name  ==  "Bob" ) ) ; 
796+ 
797+         // Test the opposite - users where IsVerified is null 
798+         Expression < Func < UserProfile ,  bool > >  exprNoValue  =  u =>  ! u . IsVerified . HasValue ; 
799+         var  usersWithoutVerificationStatus  =  await  kv . GetListAsync ( pid ,  exprNoValue ) . ToListAsync ( ) ; 
800+ 
801+         Assert . AreEqual ( 1 ,  usersWithoutVerificationStatus . Count ) ; 
802+         Assert . AreEqual ( "Charlie" ,  usersWithoutVerificationStatus [ 0 ] . Name ) ; 
803+     } 
758804} 
0 commit comments