@@ -10,6 +10,28 @@ namespace StreamNetTests
1010 [ TestFixture ]
1111 public class BatchTests : TestBase
1212 {
13+ [ Test ]
14+ public void TestUnfollowManyArgumentValidation ( )
15+ {
16+ // Should work with empty array
17+ Assert . DoesNotThrowAsync ( async ( ) =>
18+ {
19+ await Client . Batch . UnfollowManyAsync ( new UnfollowRelation [ ] { } ) ;
20+ } ) ;
21+
22+ // Should work with valid unfollow relation objects
23+ Assert . DoesNotThrowAsync ( async ( ) =>
24+ {
25+ await Client . Batch . UnfollowManyAsync ( new [ ] { new UnfollowRelation ( "user:1" , "user:2" , false ) } ) ;
26+ } ) ;
27+
28+ // Should work with keepHistory true
29+ Assert . DoesNotThrowAsync ( async ( ) =>
30+ {
31+ await Client . Batch . UnfollowManyAsync ( new [ ] { new UnfollowRelation ( "user:1" , "user:2" , true ) } ) ;
32+ } ) ;
33+ }
34+
1335 [ Test ]
1436 public void TestGetEnrichedActivitiesArgumentValidation ( )
1537 {
@@ -305,5 +327,93 @@ public async Task TestBatchActivityForeignIdTime()
305327
306328 Assert . AreEqual ( 1 , result . Results . Count ) ;
307329 }
330+
331+ [ Test ]
332+ public async Task TestBatchUnfollowManyKeepHistoryFalse ( )
333+ {
334+ // First set up follows and add activities
335+ await Client . Batch . FollowManyAsync ( new [ ]
336+ {
337+ new Follow ( UserFeed , FlatFeed ) ,
338+ new Follow ( UserFeed2 , FlatFeed ) ,
339+ } ) ;
340+
341+ var newActivity = new Activity ( "1" , "test" , "1" ) ;
342+ var response = await this . FlatFeed . AddActivityAsync ( newActivity ) ;
343+
344+ // Verify follows are working
345+ var activities1 = ( await this . UserFeed . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
346+ var activities2 = ( await this . UserFeed2 . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
347+
348+ Assert . IsNotNull ( activities1 ) ;
349+ Assert . AreEqual ( 1 , activities1 . Count ( ) ) ;
350+ Assert . AreEqual ( response . Id , activities1 . First ( ) . Id ) ;
351+
352+ Assert . IsNotNull ( activities2 ) ;
353+ Assert . AreEqual ( 1 , activities2 . Count ( ) ) ;
354+ Assert . AreEqual ( response . Id , activities2 . First ( ) . Id ) ;
355+
356+ // Use UnfollowMany with keepHistory=false
357+ await Client . Batch . UnfollowManyAsync ( new [ ]
358+ {
359+ new UnfollowRelation ( UserFeed , FlatFeed , false ) ,
360+ new UnfollowRelation ( UserFeed2 , FlatFeed , false ) ,
361+ } ) ;
362+
363+ // Verify activities are removed
364+ activities1 = ( await this . UserFeed . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
365+ activities2 = ( await this . UserFeed2 . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
366+
367+ Assert . IsNotNull ( activities1 ) ;
368+ Assert . AreEqual ( 0 , activities1 . Count ( ) ) ;
369+
370+ Assert . IsNotNull ( activities2 ) ;
371+ Assert . AreEqual ( 0 , activities2 . Count ( ) ) ;
372+ }
373+
374+ [ Test ]
375+ public async Task TestBatchUnfollowManyKeepHistoryTrue ( )
376+ {
377+ // First set up follows and add activities
378+ await Client . Batch . FollowManyAsync ( new [ ]
379+ {
380+ new Follow ( UserFeed , FlatFeed ) ,
381+ new Follow ( UserFeed2 , FlatFeed ) ,
382+ } ) ;
383+
384+ var newActivity = new Activity ( "1" , "test" , "1" ) ;
385+ var response = await this . FlatFeed . AddActivityAsync ( newActivity ) ;
386+
387+ // Verify follows are working
388+ var activities1 = ( await this . UserFeed . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
389+ var activities2 = ( await this . UserFeed2 . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
390+
391+ Assert . IsNotNull ( activities1 ) ;
392+ Assert . AreEqual ( 1 , activities1 . Count ( ) ) ;
393+ Assert . AreEqual ( response . Id , activities1 . First ( ) . Id ) ;
394+
395+ Assert . IsNotNull ( activities2 ) ;
396+ Assert . AreEqual ( 1 , activities2 . Count ( ) ) ;
397+ Assert . AreEqual ( response . Id , activities2 . First ( ) . Id ) ;
398+
399+ // Use UnfollowMany with keepHistory=true
400+ await Client . Batch . UnfollowManyAsync ( new [ ]
401+ {
402+ new UnfollowRelation ( UserFeed , FlatFeed , true ) ,
403+ new UnfollowRelation ( UserFeed2 , FlatFeed , true ) ,
404+ } ) ;
405+
406+ // Verify activities are retained
407+ activities1 = ( await this . UserFeed . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
408+ activities2 = ( await this . UserFeed2 . GetActivitiesAsync ( 0 , 1 ) ) . Results ;
409+
410+ Assert . IsNotNull ( activities1 ) ;
411+ Assert . AreEqual ( 1 , activities1 . Count ( ) ) ;
412+ Assert . AreEqual ( response . Id , activities1 . First ( ) . Id ) ;
413+
414+ Assert . IsNotNull ( activities2 ) ;
415+ Assert . AreEqual ( 1 , activities2 . Count ( ) ) ;
416+ Assert . AreEqual ( response . Id , activities2 . First ( ) . Id ) ;
417+ }
308418 }
309419}
0 commit comments