@@ -1746,6 +1746,72 @@ public async Task TestActivityPartialUpdateByForeignIDTime()
17461746 Assert . AreEqual ( "zyx" , updatedAct . GetData < string > ( "custom_thing" ) ) ;
17471747 }
17481748
1749+ [ Test ]
1750+ public async Task TestUpdateToTargets ( )
1751+ {
1752+ var fidTime = new Stream . ForeignIDTime ( System . Guid . NewGuid ( ) . ToString ( ) , DateTime . UtcNow ) ;
1753+
1754+ var targets = new List < string > ( )
1755+ {
1756+ "flat:" + Guid . NewGuid ( ) . ToString ( ) ,
1757+ "user:" + Guid . NewGuid ( ) . ToString ( ) ,
1758+ } ;
1759+
1760+ var act = new Stream . Activity ( "upd" , "test" , "1" )
1761+ {
1762+ ForeignId = fidTime . ForeignID ,
1763+ Time = fidTime . Time ,
1764+ To = targets
1765+ } ;
1766+
1767+ var insertedAct = await this . _user1 . AddActivity ( act ) ;
1768+ Assert . AreEqual ( 2 , insertedAct . To . Count ) ;
1769+
1770+ //add 1
1771+ var add = "user:" + Guid . NewGuid ( ) . ToString ( ) ;
1772+ var updateResp = await this . _user1 . UpdateActivityToTargets ( fidTime , new string [ ] { add } ) ;
1773+ Assert . AreEqual ( insertedAct . Id , updateResp . Activity . Id ) ;
1774+ Assert . AreEqual ( 1 , updateResp . Added . Count ) ;
1775+ Assert . AreEqual ( add , updateResp . Added [ 0 ] ) ;
1776+ Assert . AreEqual ( 3 , updateResp . Activity . To . Count ) ;
1777+ Assert . IsNotNull ( updateResp . Activity . To . ToList ( ) . Find ( t => t == add ) ) ;
1778+
1779+ var updatedAct = ( await this . _user1 . GetActivities ( 0 , 1 , FeedFilter . Where ( ) . IdLessThanEqual ( insertedAct . Id ) ) ) . FirstOrDefault ( ) ;
1780+ Assert . NotNull ( updatedAct ) ;
1781+ Assert . AreEqual ( 3 , updatedAct . To . Count ) ;
1782+ Assert . IsNotNull ( updatedAct . To . ToList ( ) . Find ( t => t == add ) ) ;
1783+
1784+ //remove 1
1785+ var remove = targets [ 0 ] ;
1786+ updateResp = await this . _user1 . UpdateActivityToTargets ( fidTime , null , null , new string [ ] { remove } ) ;
1787+ Assert . AreEqual ( insertedAct . Id , updateResp . Activity . Id ) ;
1788+ Assert . AreEqual ( 1 , updateResp . Removed . Count ) ;
1789+ Assert . AreEqual ( remove , updateResp . Removed [ 0 ] ) ;
1790+ Assert . AreEqual ( 2 , updateResp . Activity . To . Count ) ;
1791+ Assert . IsNull ( updateResp . Activity . To . ToList ( ) . Find ( t => t == remove ) ) ;
1792+
1793+ updatedAct = ( await this . _user1 . GetActivities ( 0 , 1 , FeedFilter . Where ( ) . IdLessThanEqual ( insertedAct . Id ) ) ) . FirstOrDefault ( ) ;
1794+ Assert . NotNull ( updatedAct ) ;
1795+ Assert . AreEqual ( 2 , updatedAct . To . Count ) ;
1796+ Assert . IsNull ( updatedAct . To . ToList ( ) . Find ( t => t == remove ) ) ;
1797+
1798+ //new ones
1799+ var newOnes = new List < string > ( )
1800+ {
1801+ "flat:" + Guid . NewGuid ( ) . ToString ( ) ,
1802+ "user:" + Guid . NewGuid ( ) . ToString ( ) ,
1803+ } ;
1804+ updateResp = await this . _user1 . UpdateActivityToTargets ( fidTime , null , newOnes ) ;
1805+ Assert . AreEqual ( insertedAct . Id , updateResp . Activity . Id ) ;
1806+ Assert . AreEqual ( 2 , updateResp . Activity . To . Count ) ;
1807+ Assert . AreEqual ( 2 , updateResp . Added . Count ) ;
1808+ Assert . AreEqual ( 2 , updateResp . Added . ToList ( ) . FindAll ( t => newOnes . Contains ( t ) ) . Count ) ;
1809+ updatedAct = ( await this . _user1 . GetActivities ( 0 , 1 , FeedFilter . Where ( ) . IdLessThanEqual ( insertedAct . Id ) ) ) . FirstOrDefault ( ) ;
1810+ Assert . NotNull ( updatedAct ) ;
1811+ Assert . AreEqual ( 2 , updatedAct . To . Count ) ;
1812+ Assert . AreEqual ( 2 , updatedAct . To . ToList ( ) . FindAll ( t => newOnes . Contains ( t ) ) . Count ) ;
1813+ }
1814+
17491815 [ Test ]
17501816 public async Task TestBatchPartialUpdate ( )
17511817 {
0 commit comments