public void IsMatchReturnsTrueWhenPropertyMatchesDerivedTypeProperty()
        {
            var property = typeof(Person).GetProperty(nameof(Entity.Id)) !;

            var sut = new PredicateIgnoreRule(x => x.DeclaringType == typeof(Entity));

            var actual = sut.IsMatch(property);

            actual.Should().BeTrue();
        }
        public void IsMatchReturnsTrueWhenPropertyMatches()
        {
            var property = typeof(Person).GetProperty(nameof(Person.FirstName)) !;

            var sut = new PredicateIgnoreRule(x => x.Name == nameof(Person.FirstName));

            var actual = sut.IsMatch(property);

            actual.Should().BeTrue();
        }
        public void IsMatchReturnsFalseWhenPropertyTypeDoesNotMatch()
        {
            var property = typeof(Person).GetProperty(nameof(Person.LastName)) !;

            var sut = new PredicateIgnoreRule(x => x.PropertyType == typeof(DateTimeOffset));

            var actual = sut.IsMatch(property);

            actual.Should().BeFalse();
        }
        public void IsMatchReturnsTrueWhenInheritedPropertyMatchesPropertyOnDeclaredType()
        {
            var property = typeof(Person).GetProperty(nameof(Entity.Id)) !;

            var sut = new PredicateIgnoreRule(x =>
                                              x.ReflectedType == typeof(Person) && x.Name == nameof(Entity.Id) && x.PropertyType == typeof(Guid));

            var actual = sut.IsMatch(property);

            actual.Should().BeTrue();
        }