public void ReceivingMessageDeleteRaisesEvent() { // Arrange const string strContent = "{\"delete\":{\"direct_message\":{\"id\":1234,\"id_str\":\"1234\",\"user_id\":3,\"user_id_str\":\"3\"}}}"; ManualResetEventSlim waitHandle = new ManualResetEventSlim(false); var parser = SetupParser(strContent); DeleteStreamEventArgs receivedDelete = null; parser.DirectMessageDeleted += (s, e) => { receivedDelete = e; waitHandle.Set(); }; // Act parser.StartStreaming(); waitHandle.Wait(1000); // Assert Assert.IsNotNull(receivedDelete); Assert.AreEqual(1234ul, receivedDelete.Id); Assert.AreEqual(3ul, receivedDelete.UserId); }
public void ParserDeletionDoesNotCrashIfStatusIsContainedMultipleTimes() { // Arrange var context = new Mock <IContextEntry>(); var definition = new ColumnDefinition(ColumnType.User); var config = new Mock <IConfig>(); config.SetupGet(c => c.General).Returns(new GeneralConfig()); var parser = new Mock <IStreamParser>(); var vm = new TestColumn(context.Object, definition, config.Object, parser.Object) { Dispatcher = new SyncDispatcher() }; var status = DummyGenerator.CreateDummyStatus(); status.StatusID = status.ID = 1234; var s1 = new StatusViewModel(status, context.Object, config.Object, null); vm.Statuses.Add(s1); status = DummyGenerator.CreateDummyStatus(); status.StatusID = status.ID = 1234; var s2 = new StatusViewModel(status, context.Object, config.Object, null); vm.Statuses.Add(s2); var deleteArgs = new DeleteStreamEventArgs("{\"delete\":{\"status\":{\"id\":1234,\"id_str\":\"1234\",\"user_id\":3,\"user_id_str\":\"3\"}}}"); // Act parser.Raise(e => e.StatusDeleted += null, deleteArgs); // Assert Assert.IsFalse(vm.Statuses.Any(s => s.Id == 1234)); }
public void ReceivingStatusDeleteRaisesEvent() { // Arrange string strContent = "{\"delete\":{\"status\":{\"id\":1234,\"id_str\":\"1234\",\"user_id\":3,\"user_id_str\":\"3\"}}}"; 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); DeleteStreamEventArgs receivedDelete = null; ManualResetEventSlim waitHandle = new ManualResetEventSlim(false); parser.StatusDeleted += (s, e) => { receivedDelete = e; waitHandle.Set(); }; // Act parser.StartStreaming(); waitHandle.Wait(1000); // Assert Assert.IsNotNull(receivedDelete); Assert.AreEqual(1234ul, receivedDelete.Id); Assert.AreEqual(3ul, receivedDelete.UserId); }
private async void Parser_StatusDeleted(object sender, DeleteStreamEventArgs e) { // Yes the same id shouldn't be there more than once, but this happens sometimes. // so delete all statuses that match the id. var toDelete = StatusCollection.Where(s => s.Id == e.Id).ToArray(); foreach (var status in toDelete) { await Dispatcher.RunAsync(() => StatusCollection.Remove(status)); } await Cache.RemoveStatus(e.Id); }
private async void Parser_ItemDeleted(object sender, DeleteStreamEventArgs e) { await RemoveItem(e.Id); }