コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: StreamParserTests.cs プロジェクト: zAfLu/Twice
        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);
        }
コード例 #4
0
ファイル: ColumnViewModelBase.cs プロジェクト: zAfLu/Twice
        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);
        }
コード例 #5
0
 private async void Parser_ItemDeleted(object sender, DeleteStreamEventArgs e)
 {
     await RemoveItem(e.Id);
 }