Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
 public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport)
     : base(container.Context, functionImport)
 {
     this.container      = container;
     this.functionImport = functionImport;
 }
Exemplo n.º 6
0
 public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport, IEdmFunction backingfunction)
     : base(container, functionImport, backingfunction)
 {
     this.csdlSchema     = container.Context;
     this.functionImport = functionImport;
 }
Exemplo n.º 7
0
 public CsdlSemanticsFunctionImport(CsdlSemanticsEntityContainer container, CsdlFunctionImport functionImport) : base(container.Context, functionImport)
 {
     this.entitySetCache = new Cache <CsdlSemanticsFunctionImport, IEdmExpression>();
     this.container      = container;
     this.functionImport = functionImport;
 }