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); }
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 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"); }
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(); }
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"); }
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); }
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) { }