66using System . Net . Http ;
77using System . Net . Http . Json ;
88using System . Threading . Tasks ;
9+ using FastCache . Core . Driver ;
10+ using FastCache . Redis . Driver ;
911using Microsoft . AspNetCore . Mvc . Testing ;
1012using Microsoft . Extensions . DependencyInjection ;
1113using TestApi . DB ;
@@ -31,7 +33,8 @@ public MultiSourceApiRequestCacheTests(WebApplicationFactory<Program> factory)
3133 new ( )
3234 {
3335 Id = "1" ,
34- Name = "anson1"
36+ Name = "anson1" ,
37+ Age = 10
3538 } ,
3639 new ( )
3740 {
@@ -148,7 +151,7 @@ public async void CacheAndEvictOther(string baseUrl)
148151 var timeResult = end - start ;
149152 Assert . True ( timeResult < 500000 ) ;
150153 }
151-
154+
152155 [ Theory ]
153156 [ InlineData ( "/MultiSource" ) ]
154157 public async Task TestUpdated ( string baseUrl )
@@ -186,4 +189,46 @@ public async void CacheResultTaskNull(string baseUrl)
186189 var result1 = await resp1 . Content . ReadAsStringAsync ( ) ;
187190 Assert . Equal ( "" , result1 ) ;
188191 }
192+
193+ [ Theory ]
194+ [ InlineData ( "/MultiSource" ) ]
195+ public async void TestMultiSourceEvictableAllowsEvictionByMultipleRules ( string baseUrl )
196+ {
197+ var responseMessage = await _httpClient . GetAsync ( $ "{ baseUrl } ?id=1") ;
198+ Assert . Equal ( responseMessage . StatusCode , HttpStatusCode . OK ) ;
199+
200+ var user = await responseMessage . Content . ReadFromJsonAsync < User > ( ) ;
201+ Assert . Equal ( user . Name , "anson1" ) ;
202+ Assert . Equal ( user . Age , 10 ) ;
203+
204+ var responseMessageBySearchName = await _httpClient . GetAsync ( $ "{ baseUrl } /get/name?name=anson1") ;
205+ Assert . Equal ( responseMessageBySearchName . StatusCode , HttpStatusCode . OK ) ;
206+
207+ var userBySearchName = await responseMessageBySearchName . Content . ReadFromJsonAsync < User > ( ) ;
208+
209+ Assert . Equal ( userBySearchName . Name , "anson1" ) ;
210+ Assert . Equal ( userBySearchName . Age , 10 ) ;
211+
212+ user . Age = 1 ;
213+
214+ var updateAfter = await _httpClient . PutAsJsonAsync ( baseUrl , user ) ;
215+ Assert . Equal ( updateAfter . StatusCode , HttpStatusCode . OK ) ;
216+
217+ var responseMessageBySearchNameUpdated = await _httpClient . GetAsync ( $ "{ baseUrl } /get/name?name=anson1") ;
218+ Assert . Equal ( responseMessageBySearchNameUpdated . StatusCode , HttpStatusCode . OK ) ;
219+
220+ var userUpdated = await responseMessageBySearchNameUpdated . Content . ReadFromJsonAsync < User > ( ) ;
221+ Assert . Equal ( "anson1" , userUpdated . Name ) ;
222+ Assert . Equal ( 1 , userUpdated . Age ) ;
223+
224+ var deleted = await _httpClient . DeleteAsync ( $ "{ baseUrl } ?id=1") ;
225+ Assert . True ( deleted . StatusCode == HttpStatusCode . OK ) ;
226+
227+ var responseMessageBySearchNameDeleted = await _httpClient . GetAsync ( $ "{ baseUrl } /get/name?name=anson1") ;
228+ Assert . Equal ( responseMessageBySearchNameDeleted . StatusCode , HttpStatusCode . OK ) ;
229+
230+ var userDeleted = await responseMessageBySearchNameDeleted . Content . ReadFromJsonAsync < User > ( ) ;
231+ Assert . Equal ( "anson1" , userDeleted . Name ) ;
232+ Assert . Equal ( 1 , userDeleted . Age ) ;
233+ }
189234}
0 commit comments