Esempio n. 1
0
        public void EnsureActionImportActionPropertyIsUnresolvedAction()
        {
            var actionImport        = new CsdlActionImport("Action", "FQ.NS.Action", null /*entitySet*/, null /*documentation*/, testLocation);
            var csdlEntityContainer = CsdlBuilder.EntityContainer("Container", operationImports: new CsdlOperationImport[] { actionImport });
            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);
            imports[0].Name.Should().Be("Action");
            imports[0].Operation.GetType().Should().Be(typeof(UnresolvedAction));
            var errors = imports[0].Operation.As <BadElement>().Errors.ToList();

            errors.Should().HaveCount(1);
            errors.First().ErrorMessage.Should().Be(Strings.Bad_UnresolvedOperation("FQ.NS.Action"));
            imports[0].Container.Name.Should().Be("Container");
            imports[0].Location().Should().Be(testLocation);
            imports[0].ContainerElementKind.Should().Be(EdmContainerElementKind.ActionImport);
            imports[0].EntitySet.Should().BeNull();
        }
        public void EnsureActionImportActionPropertyIsUnresolvedAction()
        {
            var actionImport        = new CsdlActionImport("Action", "FQ.NS.Action", null /*entitySet*/, testLocation);
            var csdlEntityContainer = CsdlBuilder.EntityContainer("Container", operationImports: new CsdlOperationImport[] { actionImport });
            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();

            Assert.Single(imports);
            Assert.Equal("Action", imports[0].Name);
            Assert.IsType <UnresolvedAction>(imports[0].Operation);
            var errors = (imports[0].Operation as BadElement).Errors.ToList();
            var error  = Assert.Single(errors);

            Assert.Equal(Strings.Bad_UnresolvedOperation("FQ.NS.Action"), error.ErrorMessage);
            Assert.Equal("Container", imports[0].Container.Name);
            Assert.Equal(testLocation, imports[0].Location());
            Assert.Equal(EdmContainerElementKind.ActionImport, imports[0].ContainerElementKind);
            Assert.Null(imports[0].EntitySet);
        }
Esempio 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);
        }
Esempio n. 4
0
        public void EnsureEntitySetResolvesToUnknownEntitySet()
        {
            var action              = CsdlBuilder.Action("Checkout");
            var actionImport        = new CsdlActionImport("Checkout", "FQ.NS.Checkout", "OtherSet" /*entitySet*/, null /*documentation*/, testLocation);
            var csdlEntityContainer = CsdlBuilder.EntityContainer("Container");

            var semanticSchema = CreateCsdlSemanticsSchema(csdlEntityContainer, action);
            var semanticAction = new CsdlSemanticsAction(semanticSchema, action);

            var csdlSemanticEntityContainer = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer);
            var semanticActionImport        = new CsdlSemanticsActionImport(csdlSemanticEntityContainer, actionImport, semanticAction);

            semanticActionImport.Action.Should().NotBeNull();
            semanticActionImport.Action.Name.Should().Be("Checkout");
            var edmEntitySetReference = (IEdmEntitySetReferenceExpression)semanticActionImport.EntitySet;

            edmEntitySetReference.ReferencedEntitySet.Name.Should().Be("OtherSet");
        }
Esempio n. 5
0
        public void CsdlSemanticsActionImportPropertiesShouldBeInitializedCorrectly()
        {
            var action              = CsdlBuilder.Action("Checkout");
            var actionImport        = new CsdlActionImport("Checkout", "FQ.NS.Checkout", null, null /*documentation*/, testLocation);
            var csdlEntityContainer = CsdlBuilder.EntityContainer("Container");

            var semanticSchema = CreateCsdlSemanticsSchema(csdlEntityContainer, action);
            var semanticAction = new CsdlSemanticsAction(semanticSchema, action);

            var csdlSemanticEntityContainer = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer);
            var semanticActionImport        = new CsdlSemanticsActionImport(csdlSemanticEntityContainer, actionImport, semanticAction);

            semanticActionImport.Action.Should().NotBeNull();
            semanticActionImport.Action.Name.Should().Be("Checkout");
            semanticActionImport.Container.Name.Should().Be("Container");
            semanticActionImport.Location().Should().Be(testLocation);
            semanticActionImport.ContainerElementKind.Should().Be(EdmContainerElementKind.ActionImport);
            semanticActionImport.EntitySet.Should().BeNull();
        }
Esempio n. 6
0
        public void EnsureEntitySetReferenceResolvesCorrectly()
        {
            var action              = CsdlBuilder.Action("Checkout");
            var actionImport        = new CsdlActionImport("Checkout", "FQ.NS.Checkout", "EntitySet" /*entitySet*/, null /*documentation*/, testLocation);
            var csdlEntitySet       = new CsdlEntitySet("EntitySet", "FQ.NS.EntityType", Enumerable.Empty <CsdlNavigationPropertyBinding>(), null, testLocation);
            var csdlEntityContainer = CsdlBuilder.EntityContainer("Container", entitySets: new CsdlEntitySet[] { csdlEntitySet });

            var semanticSchema = CreateCsdlSemanticsSchema(csdlEntityContainer, action);
            var semanticAction = new CsdlSemanticsAction(semanticSchema, action);

            var csdlSemanticEntityContainer = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer);
            var semanticActionImport        = new CsdlSemanticsActionImport(csdlSemanticEntityContainer, actionImport, semanticAction);

            semanticActionImport.Action.Should().NotBeNull();
            semanticActionImport.Action.Name.Should().Be("Checkout");
            var edmEntitySetReference = (IEdmEntitySetReferenceExpression)semanticActionImport.EntitySet;

            edmEntitySetReference.ReferencedEntitySet.Name.Should().Be("EntitySet");
        }
Esempio n. 7
0
        public void CsdlSemanticsActionImportPropertiesShouldBeInitializedCorrectly()
        {
            var action              = CsdlBuilder.Action("Checkout");
            var actionImport        = new CsdlActionImport("Checkout", "FQ.NS.Checkout", null, testLocation);
            var csdlEntityContainer = CsdlBuilder.EntityContainer("Container");

            var semanticSchema = CreateCsdlSemanticsSchema(csdlEntityContainer, action);
            var semanticAction = new CsdlSemanticsAction(semanticSchema, action);

            var csdlSemanticEntityContainer = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer);
            var semanticActionImport        = new CsdlSemanticsActionImport(csdlSemanticEntityContainer, actionImport, semanticAction);

            Assert.NotNull(semanticActionImport.Action);
            Assert.Equal("Checkout", semanticActionImport.Action.Name);
            Assert.Equal("Container", semanticActionImport.Container.Name);
            Assert.Equal(testLocation, semanticActionImport.Location());
            Assert.Equal(EdmContainerElementKind.ActionImport, semanticActionImport.ContainerElementKind);
            Assert.Null(semanticActionImport.EntitySet);
        }
Esempio n. 8
0
        public void EnsureEntitySetResolvesToEdmPathExpression()
        {
            var action              = CsdlBuilder.Action("Checkout");
            var actionImport        = new CsdlActionImport("Checkout", "FQ.NS.Checkout", "Nav1/Nav2" /*entitySet*/, null /*documentation*/, testLocation);
            var csdlEntityContainer = CsdlBuilder.EntityContainer("Container");

            var semanticSchema = CreateCsdlSemanticsSchema(csdlEntityContainer, action);
            var semanticAction = new CsdlSemanticsAction(semanticSchema, action);

            var csdlSemanticEntityContainer = new CsdlSemanticsEntityContainer(semanticSchema, csdlEntityContainer);
            var semanticActionImport        = new CsdlSemanticsActionImport(csdlSemanticEntityContainer, actionImport, semanticAction);

            semanticActionImport.Action.Should().NotBeNull();
            semanticActionImport.Action.Name.Should().Be("Checkout");
            var pathExpression = (IEdmPathExpression)semanticActionImport.EntitySet;
            var items          = pathExpression.PathSegments.ToList();

            items[0].Should().Be("Nav1");
            items[1].Should().Be("Nav2");
        }
 public CsdlSemanticsActionImport(CsdlSemanticsEntityContainer container, CsdlActionImport actionImport, IEdmAction backingAction)
     : base(container, actionImport, backingAction)
 {
 }