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 }); }
public void InitializeExpandRestrictionsTypeWithRecordSuccess() { // Assert IEdmRecordExpression record = new EdmRecordExpression( new EdmPropertyConstructor("Expandable", new EdmBooleanConstant(false)), new EdmPropertyConstructor("NonExpandableProperties", new EdmCollectionExpression(new EdmNavigationPropertyPathExpression("abc"), new EdmNavigationPropertyPathExpression("RelatedEvents"))), new EdmPropertyConstructor("MaxLevels", new EdmIntegerConstant(42)) ); // Act ExpandRestrictionsType expand = new ExpandRestrictionsType(); expand.Initialize(record); // Assert VerifyExpandRestrictions(expand); }
public void TargetOnEntitySetReturnsCorrectExpandRestrictionsValue(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 ExpandRestrictionsType expand = model.GetRecord <ExpandRestrictionsType>(calendars); // Assert VerifyExpandRestrictions(expand); }