コード例 #1
0
        public void KindPropertyReturnsFilterRestrictionsEnumMember()
        {
            // Arrange & Act
            FilterRestrictions filter = new FilterRestrictions();

            // Assert
            Assert.Equal(CapabilitesTermKind.FilterRestrictions, filter.Kind);
        }
コード例 #2
0
        public void UnknownAnnotatableTargetReturnsDefaultFilterRestrictionsValues()
        {
            // Arrange
            FilterRestrictions filter     = new FilterRestrictions();
            EdmEntityType      entityType = new EdmEntityType("NS", "Entity");

            //  Act
            bool result = filter.Load(EdmCoreModel.Instance, entityType);

            // Assert
            Assert.False(result);
            Assert.True(filter.IsFilterable);
            Assert.Null(filter.Filterable);
            Assert.Null(filter.RequiresFilter);
            Assert.Null(filter.RequiredProperties);
            Assert.Null(filter.NonFilterableProperties);
        }
コード例 #3
0
        /// <summary>
        /// Create the $filter parameter.
        /// </summary>
        /// <param name="context">The OData context.</param>
        /// <param name="target">The Edm annotation target.</param>
        /// <returns>The created <see cref="OpenApiParameter"/> or null.</returns>
        public static OpenApiParameter CreateFilter(this ODataContext context, IEdmVocabularyAnnotatable target)
        {
            Utils.CheckArgumentNull(context, nameof(context));
            Utils.CheckArgumentNull(target, nameof(target));

            FilterRestrictions filter = context.Model.GetFilterRestrictions(target);

            if (filter == null || filter.IsFilterable)
            {
                return(new OpenApiParameter
                {
                    Reference = new OpenApiReference {
                        Type = ReferenceType.Parameter, Id = "filter"
                    }
                });
            }

            return(null);
        }
コード例 #4
0
        public void TargetOnEntitySetReturnsCorrectFilterRestrictionsValue(EdmVocabularyAnnotationSerializationLocation location)
        {
            // Arrange
            const string template = @"
                <Annotations Target=""NS.Default/Calendars"">
                  {0}
                </Annotations>";

            IEdmModel model = GetEdmModel(template, location);

            Assert.NotNull(model); // guard

            IEdmEntitySet calendars = model.EntityContainer.FindEntitySet("Calendars");

            Assert.NotNull(calendars); // guard

            // Act
            FilterRestrictions filter = new FilterRestrictions();
            bool result = filter.Load(model, calendars);

            // Assert
            Assert.True(result);
            VerifyFilterRestrictions(filter);
        }
コード例 #5
0
        private static void VerifyFilterRestrictions(FilterRestrictions filter)
        {
            Assert.NotNull(filter);

            Assert.NotNull(filter.Filterable);
            Assert.False(filter.Filterable.Value);

            Assert.NotNull(filter.RequiresFilter);
            Assert.False(filter.RequiresFilter.Value);

            Assert.NotNull(filter.RequiredProperties);
            Assert.Single(filter.RequiredProperties);
            Assert.Equal("Id", filter.RequiredProperties.First());

            Assert.NotNull(filter.NonFilterableProperties);
            Assert.Single(filter.NonFilterableProperties);
            Assert.Equal("Emails", filter.NonFilterableProperties.First());

            Assert.True(filter.IsRequiredProperty("Id"));
            Assert.False(filter.IsRequiredProperty("ID"));

            Assert.True(filter.IsNonFilterableProperty("Emails"));
            Assert.False(filter.IsNonFilterableProperty("ID"));
        }