public void EnsureFunctionImportFunctionPropertyIsUnresolvedFunction() { var functionImport = new CsdlFunctionImport("GetStuff", "FQ.NS.GetStuff", null /*entitySet*/, true /*includeInServiceDocument*/, null /*documentation*/, testLocation); var csdlEntityContainer = CsdlBuilder.EntityContainer("Container", operationImports: new CsdlOperationImport[] { functionImport }); var schema = CsdlBuilder.Schema("FQ.NS", csdlEntityContainers: new CsdlEntityContainer[] { csdlEntityContainer }); var csdlModel = new CsdlModel(); csdlModel.AddSchema(schema); var semanticSchema = new CsdlSemanticsSchema(new CsdlSemanticsModel(csdlModel, new EdmDirectValueAnnotationsManager(), Enumerable.Empty <IEdmModel>()), schema); CsdlSemanticsEntityContainer container = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer); var imports = container.OperationImports().ToList(); imports.Should().HaveCount(1); var csdlFunctionImport = (IEdmFunctionImport)imports[0]; csdlFunctionImport.Name.Should().Be("GetStuff"); csdlFunctionImport.Operation.GetType().Should().Be(typeof(UnresolvedFunction)); var errors = csdlFunctionImport.Operation.As <BadElement>().Errors.ToList(); errors.Should().HaveCount(1); errors.First().ErrorMessage.Should().Be(Strings.Bad_UnresolvedOperation("FQ.NS.GetStuff")); csdlFunctionImport.Container.Name.Should().Be("Container"); csdlFunctionImport.Location().Should().Be(testLocation); csdlFunctionImport.ContainerElementKind.Should().Be(EdmContainerElementKind.FunctionImport); csdlFunctionImport.EntitySet.Should().BeNull(); csdlFunctionImport.IncludeInServiceDocument.Should().BeTrue(); csdlFunctionImport.Function.IsComposable.Should().BeFalse(); }
public void EnsureFunctionImportFunctionPropertyIsUnresolvedFunction() { var functionImport = new CsdlFunctionImport("GetStuff", "FQ.NS.GetStuff", null /*entitySet*/, true /*includeInServiceDocument*/, testLocation); var csdlEntityContainer = CsdlBuilder.EntityContainer("Container", operationImports: new CsdlOperationImport[] { functionImport }); var schema = CsdlBuilder.Schema("FQ.NS", csdlEntityContainers: new CsdlEntityContainer[] { csdlEntityContainer }); var csdlModel = new CsdlModel(); csdlModel.AddSchema(schema); var semanticSchema = new CsdlSemanticsSchema(new CsdlSemanticsModel(csdlModel, new EdmDirectValueAnnotationsManager(), Enumerable.Empty <IEdmModel>()), schema); CsdlSemanticsEntityContainer container = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer); var imports = container.OperationImports().ToList(); var csdlFunctionImport = Assert.Single(imports) as IEdmFunctionImport; Assert.Equal("GetStuff", csdlFunctionImport.Name); Assert.IsType <UnresolvedFunction>(csdlFunctionImport.Operation); var errors = (csdlFunctionImport.Operation as BadElement).Errors.ToList(); var error = Assert.Single(errors); Assert.Equal(Strings.Bad_UnresolvedOperation("FQ.NS.GetStuff"), error.ErrorMessage); Assert.Equal("Container", csdlFunctionImport.Container.Name); Assert.Equal(testLocation, csdlFunctionImport.Location()); Assert.Equal(EdmContainerElementKind.FunctionImport, csdlFunctionImport.ContainerElementKind); Assert.Null(csdlFunctionImport.EntitySet); Assert.True(csdlFunctionImport.IncludeInServiceDocument); Assert.False(csdlFunctionImport.Function.IsComposable); }
public void ParseCsdlEntityContainerWithMembersWorksAsExpected() { string json = @"""DemoService"": { ""$Kind"": ""EntityContainer"", ""Products"": { ""$Type"": ""self.Product"", ""$Collection"": true }, ""Me"": { ""$Type"": ""self.User"" }, ""LeaveRequestApproval"": { ""$Action"": ""self.Approval"" }, ""ProductsByRating"": { ""$EntitySet"": ""Products"", ""$Function"": ""self.ProductsByRating"" }, ""@UI.DisplayName"": ""Supplier Directory"" }"; CsdlEntityContainer entityContainer = ParseCsdlSchemaElement(json, SchemaJsonParser.ParseCsdlEntityContainer); Assert.NotNull(entityContainer); Assert.Equal("DemoService", entityContainer.Name); CsdlEntitySet entitySet = Assert.Single(entityContainer.EntitySets); Assert.Equal("Products", entitySet.Name); CsdlSingleton singleton = Assert.Single(entityContainer.Singletons); Assert.Equal("Me", singleton.Name); Assert.Equal(2, entityContainer.OperationImports.Count()); CsdlActionImport actionImport = Assert.Single(entityContainer.OperationImports.OfType <CsdlActionImport>()); Assert.Equal("LeaveRequestApproval", actionImport.Name); CsdlFunctionImport functionImport = Assert.Single(entityContainer.OperationImports.OfType <CsdlFunctionImport>()); Assert.Equal("ProductsByRating", functionImport.Name); CsdlAnnotation annotation = Assert.Single(entityContainer.VocabularyAnnotations); Assert.Equal("UI.DisplayName", annotation.Term); Assert.IsType <CsdlConstantExpression>(annotation.Expression); }
public void CsdlSemanticsFunctionImportPropertiesShouldBeInitializedCorrectly() { // Added to ensure this is filtered out var function = CsdlBuilder.Function("GetStuff"); var functionImport = new CsdlFunctionImport("GetStuff", "FQ.NS.GetStuff", null /*entitySet*/, true /*includeInServiceDocument*/, null /*documentation*/, testLocation); var csdlEntityContainer = CsdlBuilder.EntityContainer("Container"); var semanticSchema = CreateCsdlSemanticsSchema(csdlEntityContainer, function); var semanticFunction = new CsdlSemanticsFunction(semanticSchema, function); var csdlSemanticEntityContainer = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer); var semanticActionImport = new CsdlSemanticsFunctionImport(csdlSemanticEntityContainer, functionImport, semanticFunction); semanticActionImport.Function.Should().NotBeNull(); semanticActionImport.Function.Name.Should().Be("GetStuff"); semanticActionImport.Container.Name.Should().Be("Container"); semanticActionImport.Location().Should().Be(testLocation); semanticActionImport.ContainerElementKind.Should().Be(EdmContainerElementKind.FunctionImport); semanticActionImport.EntitySet.Should().BeNull(); semanticActionImport.IncludeInServiceDocument.Should().BeTrue(); }
public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport) : base(container.Context, functionImport) { this.container = container; this.functionImport = functionImport; }
public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport, IEdmFunction backingfunction) : base(container, functionImport, backingfunction) { this.csdlSchema = container.Context; this.functionImport = functionImport; }
public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport) : base(container.Context, functionImport) { this.entitySetCache = new Cache <CsdlSemanticsFunctionImport, IEdmExpression>(); this.container = container; this.functionImport = functionImport; }