Inheritance: ViewSwitchingNavigation.Email.ViewModels.InboxViewModel
        public void WhenExecutingTheReplyCommand_ThenNavigatesToComposeEmailViewWithId()
        {
            var email = new EmailDocument();

            var           emailServiceMock = new Mock <IEmailService>();
            AsyncCallback callback         = null;
            var           asyncResultMock  = new Mock <IAsyncResult>();

            emailServiceMock
            .Setup(svc => svc.BeginGetEmailDocuments(It.IsAny <AsyncCallback>(), null))
            .Callback <AsyncCallback, object>((ac, o) => callback = ac)
            .Returns(asyncResultMock.Object);
            emailServiceMock
            .Setup(svc => svc.EndGetEmailDocuments(asyncResultMock.Object))
            .Returns(new[] { email });

            Mock <IRegionManager> regionManagerMock = new Mock <IRegionManager>();

            regionManagerMock.Setup(x => x.RequestNavigate(RegionNames.MainContentRegion, @"ComposeEmailView?ReplyTo=" + email.Id.ToString("N")))
            .Verifiable();

            EmailDocument[] emails    = new EmailDocument[] { email };
            var             viewModel = new TestInboxViewModel(emailServiceMock.Object, regionManagerMock.Object, emails);

            Assert.IsFalse(viewModel.Messages.IsEmpty);

            viewModel.Messages.MoveCurrentToFirst();

            viewModel.ReplyMessageCommand.Execute(null);

            regionManagerMock.VerifyAll();
        }
        public void WhenExecutingTheReplyCommand_ThenNavigatesToComposeEmailViewWithId()
        {
            var email = new EmailDocument();
            EmailDocument[] emails = new EmailDocument[] { email };

            var emailServiceMock = new Mock<IEmailService>();
            var asyncResultMock = new Mock<IAsyncResult>();
            emailServiceMock
                .Setup(svc => svc.GetEmailDocumentsAsync())
                .Returns(Task.FromResult(emails.AsEnumerable()));

            Mock<IRegionManager> regionManagerMock = new Mock<IRegionManager>();
            regionManagerMock.Setup(x => x.RequestNavigate(RegionNames.MainContentRegion, @"ComposeEmailView?ReplyTo=" + email.Id.ToString("N")))
                .Verifiable();

            var viewModel = new TestInboxViewModel(emailServiceMock.Object, regionManagerMock.Object, emails);

            Assert.IsFalse(viewModel.Messages.IsEmpty);

            viewModel.Messages.MoveCurrentToFirst();

            viewModel.ReplyMessageCommand.Execute(null);

            regionManagerMock.VerifyAll();
        }
        public void WhenExecutingTheReplyCommand_ThenNavigatesToComposeEmailViewWithId()
        {
            var email = new EmailDocument();

            EmailDocument[] emails = new EmailDocument[] { email };

            var emailServiceMock = new Mock <IEmailService>();
            var asyncResultMock  = new Mock <IAsyncResult>();

            emailServiceMock
            .Setup(svc => svc.GetEmailDocumentsAsync())
            .Returns(Task.FromResult(emails.AsEnumerable()));

            Mock <IRegionManager> regionManagerMock = new Mock <IRegionManager>();

            regionManagerMock.Setup(x => x.RequestNavigate(RegionNames.MainContentRegion, @"ComposeEmailView?ReplyTo=" + email.Id.ToString("N")))
            .Verifiable();

            var viewModel = new TestInboxViewModel(emailServiceMock.Object, regionManagerMock.Object, emails);

            Assert.IsFalse(viewModel.Messages.IsEmpty);

            viewModel.Messages.MoveCurrentToFirst();

            viewModel.ReplyMessageCommand.Execute(null);

            regionManagerMock.VerifyAll();
        }
        public void WhenExecutingTheReplyCommand_ThenNavigatesToComposeEmailViewWithId()
        {
            var email = new EmailDocument();

            var emailServiceMock = new Mock<IEmailService>();
            AsyncCallback callback = null;
            var asyncResultMock = new Mock<IAsyncResult>();
            emailServiceMock
                .Setup(svc => svc.BeginGetEmailDocuments(It.IsAny<AsyncCallback>(), null))
                .Callback<AsyncCallback, object>((ac, o) => callback = ac)
                .Returns(asyncResultMock.Object);
            emailServiceMock
                .Setup(svc => svc.EndGetEmailDocuments(asyncResultMock.Object))
                .Returns(new[] { email });

            Mock<IRegion> regionMock = new Mock<IRegion>();
            regionMock
                .Setup(x => x.RequestNavigate(new Uri(@"ComposeEmailView?ReplyTo=" + email.Id.ToString("N"), UriKind.Relative), It.IsAny<Action<NavigationResult>>()))
                .Callback<Uri, Action<NavigationResult>>((s, c) => c(new NavigationResult(null, true)))
                .Verifiable();

            Mock<IRegionManager> regionManagerMock = new Mock<IRegionManager>();
            regionManagerMock.Setup(x => x.Regions.ContainsRegionWithName(RegionNames.MainContentRegion)).Returns(true);
            regionManagerMock.Setup(x => x.Regions[RegionNames.MainContentRegion]).Returns(regionMock.Object);

            EmailDocument[] emails = new EmailDocument[]{ email };
            var viewModel = new TestInboxViewModel(emailServiceMock.Object, regionManagerMock.Object, emails);

            Assert.IsFalse(viewModel.Messages.IsEmpty);

            viewModel.Messages.MoveCurrentToFirst();

            viewModel.ReplyMessageCommand.Execute(null);

            regionMock.VerifyAll();
        }