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(); }
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)); }