public void WhenMeetingsAreReturned_ThenViewModelIsPopulated()
        {
            var asyncResultMock = new Mock<IAsyncResult>();

            var calendarServiceMock = new Mock<ICalendarService>(MockBehavior.Strict);
            AsyncCallback callback = null;
            calendarServiceMock
                .Setup(svc => svc.BeginGetMeetings(It.IsAny<AsyncCallback>(), null))
                .Callback<AsyncCallback, object>((ac, o) => callback = ac)
                .Returns(asyncResultMock.Object);
            var meeting = new Meeting { };
            calendarServiceMock
                .Setup(svc => svc.EndGetMeetings(asyncResultMock.Object))
                .Returns(new[] { meeting });


            var viewModel = new CalendarViewModel(calendarServiceMock.Object, new Mock<IRegionManager>().Object);

            this.EnqueueConditional(() => callback != null);

            this.EnqueueCallback(
                () =>
                {
                    callback(asyncResultMock.Object);
                });

            this.EnqueueCallback(
                () =>
                {
                    CollectionAssert.AreEqual(viewModel.Meetings, new[] { meeting });
                    calendarServiceMock.VerifyAll();
                });

            this.EnqueueTestComplete();
        }
        public void WhenExecutingTheGoToEmailCommand_ThenNavigatesToEmailView()
        {
            var meeting = new Meeting { EmailId = Guid.NewGuid() };

            var calendarServiceMock = new Mock<ICalendarService>();

            Mock<IRegionManager> regionManagerMock = new Mock<IRegionManager>();
            regionManagerMock.Setup(x => x.RequestNavigate(RegionNames.MainContentRegion, new Uri(@"EmailView?EmailId=" + meeting.EmailId.ToString("N"), UriKind.Relative))).Verifiable();

            var viewModel = new CalendarViewModel(calendarServiceMock.Object, regionManagerMock.Object);

            viewModel.OpenMeetingEmailCommand.Execute(meeting);

            regionManagerMock.VerifyAll();
        }
        private void OpenMeetingEmail(Meeting meeting)
        {
            // todo: 12 - Opening an email
            //
            // This view initiates navigation using the RegionManager.
            // The RegionManager will find the region and delegate the
            // navigation request to the region specified.
            //
            // This navigation request also includes additional navigation context, an 'EmailId', to
            // allow the Email view to orient to the right item.
            var parameters = new NavigationParameters();
            parameters.Add(EmailIdName, meeting.EmailId.ToString(GuidNumericFormatSpecifier));

            this.regionManager.RequestNavigate(RegionNames.MainContentRegion, new Uri(EmailViewName + parameters, UriKind.Relative));
        }
        public void WhenExecutingTheGotToEmailCommand_ThenNavigatesToEmailView()
        {
            var meeting = new Meeting { EmailId = Guid.NewGuid() };

            var calendarServiceMock = new Mock<ICalendarService>();

            Mock<IRegion> regionMock = new Mock<IRegion>();
            regionMock
                .Setup(x => x.RequestNavigate(new Uri(@"EmailView?EmailId=" + meeting.EmailId.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);

            var viewModel = new CalendarViewModel(calendarServiceMock.Object, regionManagerMock.Object);

            viewModel.OpenMeetingEmailCommand.Execute(meeting);

            regionMock.VerifyAll();
        }
Exemple #5
0
 private void OpenMeetingEmail(Meeting meeting)
 {
     // todo: 12 - Opening an email
     //
     // This view initiates navigation using the RegionManager.
     // The RegionManager will find the region and delegate the
     // navigation request to the region specified.
     //
     // This navigation request also includes additional navigation context, an 'EmailId', to
     // allow the Email view to orient to the right item.  The navigation request and context
     // is built using a UriQuery that helps build the request.
     var builder = new StringBuilder();
     builder.Append(EmailViewName);
     var query = new UriQuery();
     query.Add(EmailIdName, meeting.EmailId.ToString(GuidNumericFormatSpecifier));
     builder.Append(query);
     this.regionManager.RequestNavigate(RegionNames.MainContentRegion, new Uri(builder.ToString(), UriKind.Relative));
 }