public void ReceivingFriendlistRaisesEvent() { // Arrange string strContent = "{\"friends\":[123,456,789]}"; var execute = new Mock <ITwitterExecute>(); StreamContent content = new StreamContent(execute.Object, strContent); var stream = new Mock <IStreamingConnection>(); stream.Setup(s => s.Start(It.IsAny <Func <IStreamContent, Task> >())) .Callback <Func <StreamContent, Task> >(func => func(content)) .Returns(Task.FromResult(new List <IStreaming>())); var parser = StreamParser.Create(stream.Object); FriendsStreamEventArgs receivedData = null; ManualResetEventSlim waitHandle = new ManualResetEventSlim(false); parser.FriendsReceived += (s, e) => { receivedData = e; waitHandle.Set(); }; // Act parser.StartStreaming(); waitHandle.Wait(1000); // Assert Assert.IsNotNull(receivedData); CollectionAssert.AreEqual(new ulong[] { 123, 456, 789 }, receivedData.Friends); }
private async void Parser_FriendsReceived(object sender, FriendsStreamEventArgs e) { var completeList = e.Friends.ToList(); LogTo.Info($"Received {completeList.Count} of user's friends"); var usersToAdd = new List <User>(completeList.Count); while (completeList.Any()) { var userList = string.Join(",", completeList.Take(100)); completeList.RemoveRange(0, Math.Min(100, completeList.Count)); var userData = await Context.Twitter.Users.LookupUsers(userList); usersToAdd.AddRange(userData); } Debug.Assert(usersToAdd.Count == e.Friends.Length); await Cache.AddUsers(usersToAdd.Select( u => new UserCacheEntry(u)).ToList()); }
public void ReceivingFriendlistRaisesEvent() { // Arrange const string strContent = "{\"friends\":[123,456,789]}"; ManualResetEventSlim waitHandle = new ManualResetEventSlim(false); var parser = SetupParser(strContent); FriendsStreamEventArgs receivedData = null; parser.FriendsReceived += (s, e) => { receivedData = e; waitHandle.Set(); }; // Act parser.StartStreaming(); waitHandle.Wait(1000); // Assert Assert.IsNotNull(receivedData); CollectionAssert.AreEqual(new ulong[] { 123, 456, 789 }, receivedData.Friends); }