public void MessageNeedsTextAndRecipient()
        {
            // Arrange
            var vm = new ComposeMessageViewModel
            {
                Recipient = string.Empty
            };

            // Act
            bool noData = vm.OkCommand.CanExecute(null);

            vm.Recipient = "test";
            vm.Text      = string.Empty;
            bool noText = vm.OkCommand.CanExecute(null);

            vm.Recipient = string.Empty;
            vm.Text      = "test";
            bool noRecipient = vm.OkCommand.CanExecute(null);

            vm.Recipient = "test";
            bool allData = vm.OkCommand.CanExecute(null);

            // Assert
            Assert.IsFalse(noData);
            Assert.IsFalse(noText);
            Assert.IsFalse(noRecipient);
            Assert.IsTrue(allData);
        }
示例#2
0
        public ActionResult Compose(string to = null, string subject = null, string message = null)
        {
            ViewBag.ManageNavigationKey = "compose";

            ModelState.Clear(); // prevent query string from overriding our model properties

            var model = new ComposeMessageViewModel();

            model.To          = to;
            model.Subject     = subject;
            model.Message     = message;
            model.IsModerator = _moderationDao.GetSubsModeratoredByUser(_userContext.CurrentUser.Id).Count > 0;

            return(View(model));
        }
示例#3
0
        public ActionResult ComposeMessage(ComposeMessageViewModel viewModel)
        {
            var loggedInUserId = User.Identity.GetUserId <int>();
            var loggedInUser   = Context.Users.FirstOrDefault(x => x.Id == loggedInUserId);
            var theirUser      = Context.Users.FirstOrDefault(x => x.Id == viewModel.ToUserId);

            var privateMessage = new PrivateMessage
            {
                Subject  = viewModel.Subject,
                Content  = viewModel.Content,
                Sender   = loggedInUser,
                Receiver = theirUser
            };

            Context.PrivateMessages.Add(privateMessage);
            Context.SaveChanges();
            return(RedirectToAction("Conversation", new { theirUserId = theirUser.Id }));
        }
        public void NotifyPropertyChangedIsImplementedCorrectly()
        {
            // Arrange
            var resolver = new Mock <ITypeResolver>();
            var context  = new Mock <IContextEntry>();

            resolver.Setup(r => r.Resolve(typeof(MessageViewModel)))
            .Returns(new MessageViewModel(DummyGenerator.CreateDummyMessage(), context.Object, null, null));

            var vm     = new ComposeMessageViewModel();
            var tester = new PropertyChangedTester(vm, false, resolver.Object);

            // Act
            tester.Test();

            // Assert
            tester.Verify();
        }
示例#5
0
        public ActionResult Compose(ComposeMessageViewModel model)
        {
            ViewBag.ManageNavigationKey = "compose";
            model.IsModerator           = _moderationDao.GetSubsModeratoredByUser(_userContext.CurrentUser.Id).Count > 0;

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            SendMessageResponse response = null;

            try
            {
                response = _commandBus.Send <SendMessage, SendMessageResponse>(new SendMessage
                {
                    To      = model.To,
                    Subject = model.Subject,
                    Body    = model.Message,
                    Author  = _userContext.CurrentUser.Id
                });
            }
            catch (Exception ex)
            {
                _logger.Error("An error occured sending a message.", ex);
                AddErrorMessage("An unknown error occured.");
            }

            if (string.IsNullOrEmpty(response.Error))
            {
                AddSuccessMessage("Your message has been sent.");
            }
            else
            {
                AddErrorMessage(response.Error);
            }

            return(View(model));
        }
        public void EnteringRecipientQueriesFriendship()
        {
            // Arrange
            var context = new Mock <IContextEntry>();

            context.SetupGet(c => c.UserId).Returns(123);
            context.Setup(c => c.Twitter.Friendships.GetFriendshipWith(123, "the_username")).Returns(Task.FromResult(new LinqToTwitter.Friendship()));

            var contextList = new Mock <ITwitterContextList>();

            contextList.SetupGet(c => c.Contexts).Returns(new[] { context.Object });

            var vm = new ComposeMessageViewModel
            {
                ContextList = contextList.Object
            };

            var waitHandle = new ManualResetEventSlim(false);

            vm.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(ComposeMessageViewModel.IsCheckingRelationship) && vm.IsCheckingRelationship == false)
                {
                    waitHandle.Set();
                }
            };

            // Act
            vm.Recipient = "the_username";

            bool set = waitHandle.Wait(1000);

            // Assert
            Assert.IsTrue(set);
            context.Verify(c => c.Twitter.Friendships.GetFriendshipWith(123, "the_username"), Times.Once());
        }
        public void SendCommandCallsTwitterApi()
        {
            // Arrange
            var context = new Mock <IContextEntry>();

            context.Setup(c => c.Twitter.Messages.SendMessage("the_user", "the_message")).Returns(Task.FromResult(new LinqToTwitter.DirectMessage()));

            var contextList = new Mock <ITwitterContextList>();

            contextList.SetupGet(c => c.Contexts).Returns(new[] { context.Object });

            var vm = new ComposeMessageViewModel
            {
                ContextList = contextList.Object
            };

            var waitHandle = new ManualResetEventSlim(false);

            vm.PropertyChanged += (s, e) =>
            {
                if (e.PropertyName == nameof(ComposeMessageViewModel.IsSending) && vm.IsSending == false)
                {
                    waitHandle.Set();
                }
            };

            // Act
            vm.Recipient = "the_user";
            vm.Text      = "the_message";
            vm.OkCommand.Execute(null);
            bool set = waitHandle.Wait(1000);

            // Assert
            Assert.IsTrue(set);
            context.Verify(c => c.Twitter.Messages.SendMessage("the_user", "the_message"), Times.Once());
        }