Пример #1
0
        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);
        }
Пример #2
0
        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();
            }
        }
Пример #7
0
        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);
        }
Пример #8
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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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";
        }
Пример #13
0
        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);
        }
Пример #14
0
        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();
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }
Пример #17
0
        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();
            }
        }
Пример #18
0
        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();
            }
        }