public void WHEN_ViewModel_Is_Null_SHOULD_Throw_ArgumentNullException()
        {
            // Arrange
            var propertyInfo = typeof(TestViewModel).GetProperty("Property");
            var sut          = new BagPropertyMetadata(propertyInfo);

            // Act
            Action action = () => sut.GetValue(null);

            // Assert
            action.ShouldThrow <ArgumentNullException>();
        }
        public void WHEN_Property_Has_Not_Been_Initialized_SHOULD_Return_Default()
        {
            // Arrange
            var propertyInfo = typeof(TestViewModel).GetProperty("Property");
            var sut          = new BagPropertyMetadata(propertyInfo);
            var viewModel    = new TestViewModel();

            // Act
            var result = sut.GetValue(viewModel);

            // Assert
            result.Should().Be(default(DateTime));
        }
        public void WHEN_ViewModel_Is_Valid_SHOULD_Pass()
        {
            // Arrange
            var expectedValue = GetRandom.DateTime();
            var propertyInfo  = typeof(TestViewModel).GetProperty("Property");
            var sut           = new BagPropertyMetadata(propertyInfo);
            var viewModel     = new TestViewModel();

            sut.SetValue(viewModel, expectedValue);

            // Act
            var result = sut.GetValue(viewModel);

            // Assert
            result.Should().Be(expectedValue);
        }