private static void VerifyExpandRestrictions(ExpandRestrictionsType expand) { Assert.NotNull(expand); Assert.NotNull(expand.Expandable); Assert.False(expand.Expandable.Value); Assert.NotNull(expand.MaxLevels); Assert.Equal(42, expand.MaxLevels.Value); Assert.NotNull(expand.NonExpandableProperties); Assert.Equal(2, expand.NonExpandableProperties.Count); Assert.Equal("abc|RelatedEvents", String.Join("|", expand.NonExpandableProperties)); Assert.True(expand.IsNonExpandableProperty("RelatedEvents")); }
public static OpenApiParameter CreateExpand(this ODataContext context, IEdmVocabularyAnnotatable target, IEdmStructuredType structuredType) { Utils.CheckArgumentNull(context, nameof(context)); Utils.CheckArgumentNull(target, nameof(target)); Utils.CheckArgumentNull(structuredType, nameof(structuredType)); ExpandRestrictionsType expand = context.Model.GetRecord <ExpandRestrictionsType>(target, CapabilitiesConstants.ExpandRestrictions); if (expand != null && !expand.IsExpandable) { return(null); } IList <IOpenApiAny> expandItems = new List <IOpenApiAny> { new OpenApiString("*") }; foreach (var property in structuredType.NavigationProperties()) { if (expand != null && expand.IsNonExpandableProperty(property.Name)) { continue; } expandItems.Add(new OpenApiString(property.Name)); } return(new OpenApiParameter { Name = "$expand", In = ParameterLocation.Query, Description = "Expand related entities", Schema = new OpenApiSchema { Type = "array", UniqueItems = true, Items = new OpenApiSchema { Type = "string", Enum = expandItems } }, Style = ParameterStyle.Form, Explode = false }); }