public void Ctor() { var vm = new CalendarDetailsViewModel(); Assert.IsFalse(vm.CanScrollHorizontal); Assert.IsTrue(vm.CanScrollVertical); Assert.AreEqual(LanguageService.Translate("Cmd_CreateCalendar"), vm.ToolbarItemList.First().Caption); Assert.AreEqual(LanguageService.Translate("Cmd_RemoveCalendar"), vm.ToolbarItemList.Last().Caption); Assert.AreEqual(LanguageService.Translate("Cmd_Save"), vm.WindowCommandItemList.First().Caption); Assert.AreEqual(LanguageService.Translate("Cmd_Cancel"), vm.WindowCommandItemList.Last().Caption); var daysOfWeek = new ObservableCollection<DayOfWeek>(new[] { DayOfWeek.Sunday, DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday }); CollectionAssert.AreEqual(daysOfWeek, vm.DaysOfWeek); var workingIntervals = new CollectionViewSource(); workingIntervals.SortDescriptions.Add(new SortDescription("StartDate", ListSortDirection.Ascending)); workingIntervals.SortDescriptions.Add(new SortDescription("FinishDate", ListSortDirection.Ascending)); CollectionAssert.AreEqual(workingIntervals.SortDescriptions, vm.WorkingIntervals.SortDescriptions); }
public async Task <ActionResult> Details(string d) { var model = new CalendarDetailsViewModel(); var date = DateTime.Parse(d, CultureInfo.InvariantCulture); var events = await GraphHelper.GetEventsByDay(date); model.Events = events.Select(_ => { var m = new EventViewModel(); m.Subject = _.Subject; m.Organizer = _.Organizer.EmailAddress.Name; m.Attendees = _.Attendees; m.Start = DateTime.Parse(_.Start.DateTime).ToShortTimeString(); m.End = DateTime.Parse(_.End.DateTime).ToShortTimeString(); return(m); }); return(View(model)); }
public void OnRefreshed() { // arrange var vm = new CalendarDetailsViewModel(); var unitOfWork = Mock.Create<IUnitOfWork<ICalendar>>(Behavior.Loose); var calendar = Mock.Create<ICalendar>(Behavior.Loose); var interval = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); interval.Weekday = DayOfWeek.Friday.ToString(); var intervalList = new List<ICalendarWorkingInterval> { interval }; Mock.Arrange(() => calendar.WorkingIntervals).Returns(intervalList); Mock.Arrange(() => unitOfWork.Model).Returns(calendar); var dataportalResult = new DataPortalResult<IUnitOfWork<ICalendar>>(unitOfWork, null, null); var shell = Mock.Create<IShell>(Behavior.CallOriginal); var baseMethodWasCalled = false; Mock.Arrange(() => shell.ShowStatus(Arg.IsAny<Status>(), false)).DoInstead(() => baseMethodWasCalled = true); vm.WindowManager = new Lazy<IShell>(() => shell); // act var privateAccessor = new PrivateAccessor(vm); privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.AreEqual(DayOfWeek.Friday, vm.SelectedDayOfWeek); CollectionAssert.AreEqual(intervalList, (List<ICalendarWorkingInterval>)vm.WorkingIntervals.Source); Assert.IsTrue(baseMethodWasCalled); // arrange baseMethodWasCalled = false; Mock.Arrange(() => calendar.IsNew).Returns(true); ((IList<ICalendarWorkingInterval>)vm.WorkingIntervals.Source).Clear(); // act privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.AreEqual(DayOfWeek.Sunday, vm.SelectedDayOfWeek); CollectionAssert.AreEqual(intervalList, (List<ICalendarWorkingInterval>)vm.WorkingIntervals.Source); Assert.IsTrue(baseMethodWasCalled); // arrange baseMethodWasCalled = false; dataportalResult = new DataPortalResult<IUnitOfWork<ICalendar>>(null, new Exception(), null); var loggerWasCalled = false; var logger = new ClientLogger(); Mock.Arrange(() => logger.Log(LogSeverity.Error, typeof(CalendarDetailsViewModel).ToString(), Arg.IsAny<Exception>())).DoInstead(() => loggerWasCalled = true); vm.Logger = logger; var popupMock = PopupMock.Create().NotifyFailureMustBeCalled(Arg.IsAny<Exception>()); vm.ThePopupFactory = popupMock.TheLazyPopupFactory; // act privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.IsTrue(loggerWasCalled); popupMock.AssertNotifyFailureCalled(); Assert.IsTrue(baseMethodWasCalled); }
public void LoadEditableRoot() { // arrange var vm = new CalendarDetailsViewModel(); var dynamicTypeManager = Mock.Create<IDynamicTypeManager>(Behavior.Loose); Mock.Arrange(() => dynamicTypeManager.BeginGetRetriever(Constants.CalendarProcessName, 1, Arg.IsAny<Action<object, IDataPortalResult>>(), false, false, default(Guid?), null)).MustBeCalled(); vm.TheDynamicTypeManager = new Lazy<IDynamicTypeManager>(() => dynamicTypeManager); // act vm.LoadEditableRoot(1); // assert Mock.Assert(dynamicTypeManager); }
public void AddNewCalendar_CheckCurrentIfSaved_Accept() { // arrange var vm = new CalendarDetailsViewModel(); var dynamicTypeManager = Mock.Create<IDynamicTypeManager>(Behavior.Loose); var popupFactory = Mock.Create<PopupFactory>(Behavior.Loose); Mock.Arrange(() => vm.IsSaveable).Returns(true); var called = false; var confirmMessageShown = false; Mock.Arrange(() => popupFactory.Confirm(Arg.AnyString, Arg.IsAny<Action>())).DoInstead<string, Action>((s, a) => { confirmMessageShown = true; a(); }); Mock.Arrange(() => dynamicTypeManager.BeginNewRetriever(Constants.CalendarProcessName, Arg.IsAny<Action<object, IDataPortalResult>>())).DoInstead(() => called = true); vm.TheDynamicTypeManager = new Lazy<IDynamicTypeManager>(() => dynamicTypeManager); vm.ThePopupFactory = new Lazy<PopupFactory>(() => popupFactory); // act vm.NewEditableRoot(); // assert Assert.IsTrue(called); Assert.IsTrue(confirmMessageShown); }
public void AddNewCalendar() { // arrange var vm = new CalendarDetailsViewModel(); var dynamicTypeManager = Mock.Create<IDynamicTypeManager>(Behavior.Loose); var called = false; Mock.Arrange(() => dynamicTypeManager.BeginNewRetriever(Constants.CalendarProcessName, Arg.IsAny<Action<object, IDataPortalResult>>())).DoInstead(() => called = true); vm.TheDynamicTypeManager = new Lazy<IDynamicTypeManager>(() => dynamicTypeManager); // act vm.NewEditableRoot(); // assert Assert.IsTrue(called); }
public void OnFilterEventHandler() { // arrange var vm = new CalendarDetailsViewModel(); var interval = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); Mock.Arrange(() => interval.Weekday).Returns(DayOfWeek.Monday.ToString()); Mock.Arrange(() => vm.SelectedDayOfWeek).Returns(DayOfWeek.Monday); var e = Mock.Create<FilterEventArgs>(Behavior.Loose); Mock.Arrange(() => e.Item).Returns(interval); // act new PrivateAccessor(vm).CallMethod("OnFilterEventHandler", new object[] { null, e }); // assert Assert.IsTrue(e.Accepted); }
public void WorkingIntervals() { // arrange var vm = new CalendarDetailsViewModel(); var workingIntervals = new CollectionViewSource { Source = new List<object>() }; var raises = false; Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", ArgExpr.IsAny<Expression<Func<CollectionViewSource>>>()).DoInstead(() => raises = true); // act vm.WorkingIntervals = workingIntervals; // assert Assert.AreEqual(workingIntervals, vm.WorkingIntervals); Assert.IsTrue(raises); }
public void DeleteWorkingIntervalCommand() { // arrange var vm = new CalendarDetailsViewModel(); var interval = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); var model = Mock.Create<ICalendar>(Behavior.Loose); Mock.Arrange(() => model.WorkingIntervals).Returns(new List<ICalendarWorkingInterval> { interval }); Mock.Arrange(() => vm.Model).Returns(model); // act vm.DeleteWorkingIntervalCommand.Execute(interval); // assert Assert.AreEqual(0, model.WorkingIntervals.Count()); }
public void AddWorkingExceptionCommand() { // arrange var vm = new CalendarDetailsViewModel(); var exception = Mock.Create<ICalendarWorkingException>(Behavior.Loose); var dynamicTypeManager = Mock.Create<IDynamicTypeManager>(Behavior.Loose); Mock.Arrange(() => dynamicTypeManager.GetNewEditableChild<ICalendarWorkingException>(Constants.CalendarWorkingExceptionProcessName)).Returns(exception); vm.TheDynamicTypeManager = new Lazy<IDynamicTypeManager>(() => dynamicTypeManager); var model = Mock.Create<ICalendar>(Behavior.Loose); Mock.Arrange(() => model.WorkingExceptions).Returns(new List<ICalendarWorkingException>()); Mock.Arrange(() => vm.WorkingExceptionsIsEnabled).Returns(true); Mock.Arrange(() => vm.Model).Returns(model); // act vm.AddExceptionCommand.Execute(null); // assert Assert.AreEqual(exception, model.WorkingExceptions.First()); Assert.AreEqual(DateTime.Today, model.WorkingExceptions.First().StartDate); Assert.AreEqual(DateTime.Today, model.WorkingExceptions.First().FinishDate); }
public void AddIntervalCommand() { // arrange var vm = new CalendarDetailsViewModel(); var interval = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); var dynamicTypeManager = Mock.Create<IDynamicTypeManager>(Behavior.Loose); Mock.Arrange(() => dynamicTypeManager.GetNewEditableChild<ICalendarWorkingInterval>((Constants.CalendarWorkingIntervalProcessName))).Returns(interval); vm.TheDynamicTypeManager = new Lazy<IDynamicTypeManager>(() => dynamicTypeManager); var model = Mock.Create<ICalendar>(Behavior.Loose); Mock.Arrange(() => vm.SelectedDayOfWeek).Returns(DayOfWeek.Friday); var calendarWorkingIntervalItem1 = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); calendarWorkingIntervalItem1.Weekday = DayOfWeek.Friday.ToString(); calendarWorkingIntervalItem1.FinishDate = new DateTime(1970, 1, 1, 10, 0, 0); var calendarWorkingIntervalItem2 = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); calendarWorkingIntervalItem2.Weekday = DayOfWeek.Friday.ToString(); calendarWorkingIntervalItem2.FinishDate = new DateTime(1970, 1, 1, 11, 0, 0); var calendarWorkingIntervalList = new List<ICalendarWorkingInterval> { calendarWorkingIntervalItem1, calendarWorkingIntervalItem2 }; Mock.Arrange(() => model.WorkingIntervals).Returns(calendarWorkingIntervalList); Mock.Arrange(() => vm.Model).Returns(model); Mock.Arrange(() => vm.WorkingIntervalsIsEnabled).Returns(true); // act vm.AddIntervalCommand.Execute(null); // assert Assert.AreEqual(3, model.WorkingIntervals.Count()); Assert.AreEqual(DayOfWeek.Friday.ToString(), model.WorkingIntervals.Last().Weekday); Assert.AreEqual(new DateTime(1970, 1, 1, 11, 0, 0), model.WorkingIntervals.Last().FinishDate); Assert.AreEqual(new DateTime(1970, 1, 1, 11, 0, 0), model.WorkingIntervals.Last().StartDate); // arrange ((IList)model.WorkingIntervals).Clear(); // act vm.AddIntervalCommand.Execute(null); // assert Assert.AreEqual(new DateTime(1970, 1, 1, 8, 0, 0), model.WorkingIntervals.First().FinishDate); Assert.AreEqual(new DateTime(1970, 1, 1, 8, 0, 0), model.WorkingIntervals.First().StartDate); }
public void AddNewCalendarCommand() { // arrange var vm = new CalendarDetailsViewModel(); var called = false; Mock.Arrange(() => vm.NewEditableRoot()).DoInstead(() => called = true); Mock.Arrange(() => vm.CanAddItem).Returns(true); // act vm.AddNewCalendarCommand.Execute(null); // assert Assert.IsTrue(called); }
public void IconUrl() { // arrange var vm = new CalendarDetailsViewModel(); // act var result = vm.IconURL; // assert Assert.AreEqual(ImageHelper.GetIconPath("calendar.png"), result); }
public void GetTitle() { // arrange var vm = new CalendarDetailsViewModel(); // act var privateAccessor = new PrivateAccessor(vm); var result = privateAccessor.CallMethod("GetTitle"); // assert Assert.AreEqual("Loading...", result); // arrange var calendar = Mock.Create<ICalendar>(Behavior.CallOriginal); Mock.Arrange(() => calendar.ProcessDisplayName).Returns("Calendar"); Mock.Arrange(() => calendar.IsNew).Returns(true); Mock.Arrange(() => vm.Model).Returns(calendar); // act result = privateAccessor.CallMethod("GetTitle"); // assert Assert.AreEqual("Details: Calendar (new)", result); // arrange Mock.Arrange(() => calendar.Id).Returns(1); Mock.Arrange(() => calendar.IsNew).Returns(false); // act result = privateAccessor.CallMethod("GetTitle"); // assert Assert.AreEqual("Details: Calendar (1)", result); }
public void OnSaved() { // arrange var vm = new CalendarDetailsViewModel(); var model = Mock.Create<ICalendar>(Behavior.CallOriginal); var calendarWorkingInterval = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); Mock.Arrange(() => model.WorkingIntervals).Returns(new List<ICalendarWorkingInterval> { calendarWorkingInterval }); Mock.Arrange(() => vm.Model).Returns(model); var shell = Mock.Create<IShell>(Behavior.CallOriginal); Mock.Arrange(() => shell.ShowStatus(Arg.IsAny<Status>(), false)).MustBeCalled(); vm.WindowManager = new Lazy<IShell>(() => shell); Mock.NonPublic.Arrange(vm, "RefreshTitle").MustBeCalled(); var popupFactory = Mock.Create<PopupFactory>(); Mock.Arrange(() => popupFactory.NotifySuccess("Successfully saved.", "Popup_Success")).MustBeCalled(); vm.ThePopupFactory = new Lazy<PopupFactory>(() => popupFactory); // act var privateAccessor = new PrivateAccessor(vm); privateAccessor.CallMethod("OnSaved", new object[] { false }); // assert Assert.AreEqual(1, ((IList)vm.WorkingIntervals.Source).Count); // important assert Mock.Assert(shell); Mock.Assert(vm); Mock.Assert(popupFactory); // arrange Mock.Arrange(() => popupFactory.NotifySuccess("Calendar was removed", "Popup_Success")).MustBeCalled(); // act privateAccessor.CallMethod("OnSaved", new object[] { true }); // assert Mock.Assert(popupFactory); // arrange Mock.Reset(); Mock.Arrange(() => shell.ShowStatus(Arg.IsAny<Status>(), false)).MustBeCalled(); Mock.Arrange(() => vm.Error).Returns(new Exception()); // act privateAccessor.CallMethod("OnSaved", new object[] { false }); // assert Mock.Assert(shell); Mock.NonPublic.Assert(vm, "RefreshTitle", Occurs.Never()); Mock.Assert(() => popupFactory.NotifySuccess(Arg.AnyString, Arg.AnyString), Occurs.Never()); }
public void IsSaveable() { // arrange var vm = new CalendarDetailsViewModel(); Mock.Arrange(() => vm.HasBrokenRules).Returns(true); // act var result = vm.IsSaveable; // assert Assert.IsTrue(result); // arrange Mock.Arrange(() => vm.HasBrokenRules).Returns(false); Mock.Arrange(() => vm.CanSave).Returns(true); // act result = vm.IsSaveable; // assert Assert.IsTrue(result); }
public void SelectedDayOfWeek() { // arrange var vm = new CalendarDetailsViewModel(); var refreshWasCalled = false; Mock.Arrange(() => vm.WorkingIntervals.View.Refresh()).DoInstead(() => refreshWasCalled = true); var moveCurrentToFirstCalled = false; Mock.Arrange(() => vm.WorkingIntervals.View.MoveCurrentToFirst()).DoInstead(() => moveCurrentToFirstCalled = true); var selectedDayOfWeekRaises = false; Mock.NonPublic.Arrange(vm, "RaisePropertyChanged", ArgExpr.IsAny<Expression<Func<DayOfWeek>>>()).DoInstead(() => selectedDayOfWeekRaises = true); // act vm.SelectedDayOfWeek = DayOfWeek.Monday; // assert Assert.AreEqual(DayOfWeek.Monday, vm.SelectedDayOfWeek); Assert.IsTrue(refreshWasCalled); Assert.IsTrue(moveCurrentToFirstCalled); Assert.IsTrue(selectedDayOfWeekRaises); }
public void DeleteWorkingExceptionCommand() { // arrange var vm = new CalendarDetailsViewModel(); var exception = Mock.Create<ICalendarWorkingException>(Behavior.Loose); var model = Mock.Create<ICalendar>(Behavior.Loose); Mock.Arrange(() => model.WorkingExceptions).Returns(new List<ICalendarWorkingException> { exception }); Mock.Arrange(() => vm.Model).Returns(model); // act vm.DeleteWorkingExceptionCommand.Execute(exception); // assert Assert.AreEqual(0, model.WorkingExceptions.Count()); }