public void SelectedActivityIndex_WhenNewActivityIsAdded_PointsToNewActivity() { // Arrange var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); // Act mvm.AddActivity(); mvm.AddActivity(); // Assert Assert.Equal(4, mvm.SelectedActivityIndex); }
public void Activity_WhenAddedThenDeletedThenAdded_IsValid() { var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); mvm.LoadActivities(); // Act mvm.AddActivity(); mvm.DeleteActivity(); mvm.AddActivity(); // Assert Assert.Equal(4, mvm.Activities.Count); }
public void TimeSegment_WhenAddedAndDeleted_IsDeleted() { var connection = Helper.GetConnection(); try { using (var context = Helper.GetContext(connection)) { // Arrange var mockTime = new Mock <IDateTime>(); var startTime = new DateTime(2017, 3, 1, 10, 0, 0); mockTime.Setup(x => x.Now).Returns(startTime); var mvm = new MainViewModel(new Repository(context), mockTime.Object, new ValidationMessageViewModel()); // Act mvm.AddActivity(); mvm.AddTimeSegment(); mvm.DeleteTimeSegment(); // Assert //Assert.Equal(startTime.ToString(CultureInfo.CurrentUICulture), mvm.Activities[0].ObservableTimeSegments[0].StartTime); //Assert.Equal(startTime.ToString(CultureInfo.CurrentUICulture), mvm.Activities[0].ObservableTimeSegments[0].EndTime); } } finally { connection.Close(); } }
public void StartedTimeSegment_WhenDeleted_IsDeleted() { var connection = Helper.GetConnection(); try { using (var context = Helper.GetContext(connection)) { // Arrange var mockTime = new Mock <IDateTime>(); var startTime = new DateTime(2017, 3, 1, 10, 0, 0); mockTime.Setup(x => x.Now).Returns(startTime); var mvm = new MainViewModel(new Repository(context), mockTime.Object, new ValidationMessageViewModel()); // Act mvm.AddActivity(); Assert.Equal(0, mvm.SelectedActivity.NumTimeSegments); mvm.StartStop(); mvm.SelectedTimeSegmentIndex = 0; Assert.Equal(1, mvm.SelectedActivity.NumTimeSegments); mvm.DeleteTimeSegment(); // Assert Assert.Equal(0, mvm.SelectedActivity.NumTimeSegments); } } finally { connection.Close(); } }
public void TimeSegmentList_WhenStartTimeIsSpecified_ShowsCorrectTimeSegments() { var connection = Helper.GetConnection(); try { using (var context = Helper.GetContext(connection)) { // Arrange var mockTime = new Mock <IDateTime>(); var startTime = new DateTime(2017, 3, 1, 10, 0, 0); mockTime.Setup(x => x.Now).Returns(startTime); var mvm = new MainViewModel(new Repository(context), mockTime.Object, new ValidationMessageViewModel()); // Act mvm.AddActivity(); mvm.AddTimeSegment(); Assert.Equal(1, mvm.Activities[0].ObservableTimeSegments.Count); startTime = new DateTime(2017, 3, 2, 10, 0, 0); mockTime.Setup(x => x.Now).Returns(startTime); mvm.AddTimeSegment(); mvm.Save(); // Assert Assert.Equal(2, mvm.Activities[0].ObservableTimeSegments.Count); mvm.DateRangeStart = new DateTime(2017, 3, 2, 10, 0, 0); Assert.Equal(1, mvm.Activities[0].ObservableTimeSegments.Count); } } finally { connection.Close(); } }
public void Activity_WhenSaved_AppearsInActivityList() { var connection = Helper.GetConnection(); try { using (var context = Helper.GetContext(connection)) { // Arrange var mvm = new MainViewModel(new Repository(context), new SystemDateTime(), new ValidationMessageViewModel()); // Act mvm.AddActivity(); mvm.Save(); mvm.LoadActivities(); // Assert Assert.Equal(1, mvm.Activities.Count); } } finally { connection.Close(); } }
public void ActivityName_WhenDeleted_FiresCorrectEvents() { // Arrange var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); // http://stackoverflow.com/a/249042/4803 var receivedEvents = new List <string>(); mvm.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { receivedEvents.Add(e.PropertyName); }; // Act mvm.AddActivity(); mvm.SelectedActivity.Name = "TestName1"; // Assert var n = 0; Assert.Equal("SelectedActivityIndex", receivedEvents[n++]); Assert.Equal("IsSaveEnabled", receivedEvents[n++]); Assert.Equal("IsTimeSegmentAddEnabled", receivedEvents[n++]); Assert.Equal("SelectedActivity", receivedEvents[n++]); Assert.True(n > 0); }
public void IsSaveEnabled_WhenNewActivityIsAdded_SwitchesToTrue() { // Arrange var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); // Act Assert.Equal(false, mvm.IsSaveEnabled); mvm.AddActivity(); // Assert Assert.Equal(true, mvm.IsSaveEnabled); }
public void SelectedActivity_WhenNameIsUpdated_IsUpdatedInActivityList() { // Arrange var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); // Act mvm.AddActivity(); mvm.SelectedActivity.Name = "TestName1"; // Assert Assert.Equal("TestName1", mvm.Activities[mvm.Activities.Count - 1].Name); }
public void TimeSegmentList_AfterStartAddDelete_IsInCorrectState() { var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); // Act mvm.AddActivity(); mvm.StartStop(); mvm.AddTimeSegment(); mvm.DeleteTimeSegment(); // Assert Assert.Equal(1, mvm.SelectedActivity.NumObservableTimeSegments); }
public void DeleteTimeSegment_WhenNoTimeSegmentIsSelected_Throws() { var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); mvm.LoadActivities(); // Act mvm.AddActivity(); var exception = Record.Exception(() => mvm.DeleteTimeSegment()); // Assert Assert.NotNull(exception); Assert.IsType <InvalidOperationException>(exception); }
private void PrintAddEvents() { var mockRepository = new Mock <IRepository>(); mockRepository.Setup(x => x.LoadActivities()).Returns(new List <Activity>()); var mvm = new MainViewModel(mockRepository.Object, new SystemDateTime(), new ValidationMessageViewModel()); mvm.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { System.Console.WriteLine($"Received event for property {e.PropertyName}"); }; mvm.AddActivity(); mvm.SelectedActivity.Name = "TestName1"; }
public void TimingState_WhenStartedActivityIsDeleted_IsCorrect() { var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); mvm.LoadActivities(); // Act mvm.AddActivity(); mvm.StartStop(); mvm.DeleteActivity(); // Assert Assert.Equal(null, mvm.StartedActivity); Assert.Equal("Start", mvm.StartStopText); }
private void PrintDeleteEvents() { var mockRepository = new Mock <IRepository>(); mockRepository.Setup(x => x.LoadActivities()).Returns(new List <Activity>()); var mvm = new MainViewModel(mockRepository.Object, new SystemDateTime(), new ValidationMessageViewModel()); mvm.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e) { System.Console.WriteLine($"Received property changed event for property {e.PropertyName}"); }; mvm.Activities.CollectionChanged += delegate(object sender, NotifyCollectionChangedEventArgs e) { System.Console.WriteLine($"Received collection changed event for action {e.Action}"); }; System.Console.WriteLine("Add"); mvm.AddActivity(); System.Console.WriteLine("Add"); mvm.AddActivity(); System.Console.WriteLine("Select"); mvm.SelectedActivityIndex = 1; System.Console.WriteLine("Delete"); mvm.DeleteActivity(); }
public void SelectedTimeSegment_WhenNewTimeSegmentIsAdded_PointsToNewTimeSegment() { // Arrange var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); mvm.AddActivity(); // Act mvm.AddTimeSegment(); mvm.AddTimeSegment(); var ts = mvm.SelectedActivity.GetTimeSegment(1); // Assert Assert.Equal(1, mvm.SelectedTimeSegmentIndex); Assert.Equal(ts, mvm.SelectedTimeSegment); }
public void ValidationMessage_WhenEndTimeIsInvalid_HasCorrectMessage() { // Arrange var vmvm = new ValidationMessageViewModel(); var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), vmvm); mvm.LoadActivities(); // Act mvm.AddActivity(); mvm.AddTimeSegment(); mvm.SelectedTimeSegment.EndTime = "2/31/2017 1:00 PM"; // Assert Assert.Equal("Please enter a valid end date and time.\r\n", vmvm.ValidationMessages); }
private void PrintTimeSegments() { var connection = Helper.GetConnection(); try { using (var context = Helper.GetContext(connection)) { var mvm = new MainViewModel(new Repository(context), new SystemDateTime(), new ValidationMessageViewModel()); var activities = Helper.GetActivities(); foreach (var activity in activities) { mvm.AddActivity(); mvm.SelectedActivity.Name = activity.Name; foreach (var timeSegment in activity.TimeSegments) { mvm.AddTimeSegment(); mvm.SelectedTimeSegment.StartTime = timeSegment.StartTime.ToString(); mvm.SelectedTimeSegment.EndTime = timeSegment.EndTime.ToString(); } } mvm.Save(); } using (var context = Helper.GetContext(connection)) { var mvm = new MainViewModel(new Repository(context), new SystemDateTime(), new ValidationMessageViewModel()); mvm.LoadActivities(); var selectedActivityIndex = 0; foreach (var activity in mvm.Activities) { mvm.SelectedActivityIndex = selectedActivityIndex++; mvm.LoadTimeSegments(); foreach (var timeSegment in mvm.SelectedActivity.ObservableTimeSegments) { System.Console.WriteLine($"{timeSegment.StartTime} - {timeSegment.EndTime}"); } } } } finally { connection.Close(); } }
public void TimeSegmentList_WhenTimerStops_UpdatesUI() { // Arrange var mvm = new MainViewModel(Helper.GetMockRepositoryObject(), new SystemDateTime(), new ValidationMessageViewModel()); var receivedEvents = new List <string>(); // Act mvm.AddActivity(); mvm.SelectedActivityIndex = 0; mvm.SelectedActivity.ObservableTimeSegments.CollectionChanged += delegate(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { receivedEvents.Add(e.Action.ToString()); }; mvm.StartStop(); mvm.StartStop(); // Assert Assert.Equal("Add", receivedEvents[0]); Assert.Equal("Replace", receivedEvents[1]); }
public void TimeSegment_WhenDeleted_DisappearsFromTimeSegmentList() { var connection = Helper.GetConnection(); try { using (var context = Helper.GetContext(connection)) { // Arrange var mvm = new MainViewModel(new Repository(context), new SystemDateTime(), new ValidationMessageViewModel()); mvm.AddActivity(); mvm.SelectedActivityIndex = 0; mvm.AddTimeSegment(); mvm.Save(); mvm.LoadActivities(); //// Simulate the behavior of the ListView //mvm.Activities.CollectionChanged += delegate (object sender, NotifyCollectionChangedEventArgs e) //{ // if (e.Action == NotifyCollectionChangedAction.Remove) mvm.SelectedActivityIndex = -1; //}; // Act mvm.SelectedActivityIndex = 0; mvm.SelectedTimeSegmentIndex = 0; mvm.DeleteTimeSegment(); mvm.LoadActivities(); // Assert Assert.Equal(0, mvm.SelectedActivity.NumTimeSegments); } } finally { connection.Close(); } }