예제 #1
0
        public void ReceivingDmMessageAddsDm()
        {
            // Arrange
            var messenger = new Messenger();

            var dm = DummyGenerator.CreateDummyMessage();

            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 MessageColumn(context.Object, definition, config.Object, parser.Object, messenger)
            {
                Dispatcher = new SyncDispatcher()
            };

            // Act
            messenger.Send(new DmMessage(dm, EntityAction.Create));

            // Assert
            Assert.AreEqual(1, vm.Items.Count);
        }
예제 #2
0
        public async Task MessagesAreLoadedFromCacheAndTwitter()
        {
            // Arrange
            var dm1 = DummyGenerator.CreateDummyMessage();

            dm1.ID          = 1;
            dm1.Sender      = DummyGenerator.CreateDummyUser(1);
            dm1.Recipient   = DummyGenerator.CreateDummyUser(2);
            dm1.SenderID    = 1;
            dm1.RecipientID = 2;

            var dm2 = DummyGenerator.CreateDummyMessage();

            dm2.ID          = 2;
            dm2.Sender      = DummyGenerator.CreateDummyUser(2);
            dm2.Recipient   = DummyGenerator.CreateDummyUser(1);
            dm2.SenderID    = 2;
            dm2.RecipientID = 1;

            var dm3 = DummyGenerator.CreateDummyMessage();

            dm3.ID          = 3;
            dm3.Sender      = DummyGenerator.CreateDummyUser(1);
            dm3.Recipient   = DummyGenerator.CreateDummyUser(3);
            dm3.SenderID    = 1;
            dm3.RecipientID = 3;

            var cachedMessages = new List <MessageCacheEntry> {
                new MessageCacheEntry(dm1), new MessageCacheEntry(dm2)
            };
            var incomingMessages = new List <DirectMessage> {
                dm1
            };
            var outgoingMessages = new List <DirectMessage> {
                dm2, dm3
            };

            var cache = new Mock <ICache>();

            cache.Setup(c => c.AddMessages(It.IsAny <IList <MessageCacheEntry> >())).Returns(Task.CompletedTask).Verifiable();
            cache.Setup(c => c.GetMessages()).Returns(Task.FromResult(cachedMessages));

            var context = new Mock <IContextEntry>();

            context.SetupGet(c => c.UserId).Returns(1);
            context.Setup(c => c.Twitter.Messages.IncomingMessages(It.IsAny <int>(), It.IsAny <ulong?>())).Returns(
                Task.FromResult(incomingMessages));
            context.Setup(c => c.Twitter.Messages.OutgoingMessages(It.IsAny <int>(), It.IsAny <ulong?>())).Returns(
                Task.FromResult(outgoingMessages));

            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 MessageColumn(context.Object, definition, config.Object, parser.Object)
            {
                Dispatcher = new SyncDispatcher(),
                Cache      = cache.Object
            };

            // Act
            await vm.Load(AsyncLoadContext.Default);

            // Assert
            cache.Verify(c => c.AddMessages(It.IsAny <IList <MessageCacheEntry> >()), Times.Once());
            Assert.AreEqual(2, vm.Items.Count);

            var partners = vm.Items.OfType <MessageViewModel>().Select(i => i.Partner.UserId).Distinct().ToArray();

            CollectionAssert.AreEquivalent(new ulong[] { 2, 3 }, partners);
        }
        void ReleaseDesignerOutlets()
        {
            if (BlackList != null)
            {
                BlackList.Dispose();
                BlackList = null;
            }

            if (DateColumn != null)
            {
                DateColumn.Dispose();
                DateColumn = null;
            }

            if (FollowList != null)
            {
                FollowList.Dispose();
                FollowList = null;
            }

            if (LikeList != null)
            {
                LikeList.Dispose();
                LikeList = null;
            }

            if (MessageColumn != null)
            {
                MessageColumn.Dispose();
                MessageColumn = null;
            }

            if (MessageTable != null)
            {
                MessageTable.Dispose();
                MessageTable = null;
            }

            if (SectionColumn != null)
            {
                SectionColumn.Dispose();
                SectionColumn = null;
            }

            if (interval != null)
            {
                interval.Dispose();
                interval = null;
            }

            if (maxAutomatic != null)
            {
                maxAutomatic.Dispose();
                maxAutomatic = null;
            }

            if (maxCancel != null)
            {
                maxCancel.Dispose();
                maxCancel = null;
            }
        }