public void SqlServerDateTimeAttribute_IsValid_returns_the_expected_result(string value, bool expectedResult)
        {
            var dateTimeValue = DateTime.Parse(value);

            var sqlServerDateTimeAttribute = new SqlServerDateTimeAttribute();

            sqlServerDateTimeAttribute.IsValid(dateTimeValue).Should().Be(expectedResult);
        }
        public void SqlServerDateTimeAttribute_FormattedErrorMessage_returns_the_expected_result(string memberName)
        {
            var sqlServerDateTimeAttribute = new SqlServerDateTimeAttribute();

            var expectedResult = string.Format(CultureInfo.CurrentCulture, "The field {0} must be between {1} and {2}.", memberName, SqlServerDateTimeAttribute.Minimum, SqlServerDateTimeAttribute.Maximum);

            sqlServerDateTimeAttribute.FormatErrorMessage(memberName).Should().Be(expectedResult);
        }
        public void SqlServerDateTimeAttribute_IsValid_throws_for_non_datetime_values(object value)
        {
            var sqlServerDateTimeAttribute = new SqlServerDateTimeAttribute();

            Invoking(() => sqlServerDateTimeAttribute.IsValid(value))
            .Should()
            .Throw <InvalidCastException>()
            .WithMessage(@"The [SqlServerDateTime] attribute must be used on a DateTime member. [MemberName: """"]");
        }
        public void SqlServerDateTimeAttribute_IsValid_returns_true_for_a_null_value()
        {
            var sqlServerDateTimeAttribute = new SqlServerDateTimeAttribute();

            sqlServerDateTimeAttribute.IsValid(null).Should().Be(true);
        }