public void TryGetEntitySetWithBoundCsdlSemanticOperationParameterShouldReturnTrueAndHaveNoErrors()
        {
            var csdlEntityType = new CsdlEntityType("EntityType", null, false, false, false, null, Enumerable.Empty <CsdlProperty>(), Enumerable.Empty <CsdlNavigationProperty>(), null, null);
            var csdlSchema     = CsdlBuilder.Schema("FQ.NS", csdlStructuredTypes: new[] { csdlEntityType });

            var csdlModel = new CsdlModel();

            csdlModel.AddSchema(csdlSchema);
            var semanticModel  = new CsdlSemanticsModel(csdlModel, new EdmDirectValueAnnotationsManager(), Enumerable.Empty <IEdmModel>());
            var semanticSchema = new CsdlSemanticsSchema(semanticModel, csdlSchema);
            var testLocation   = new CsdlLocation(1, 3);

            var action = new CsdlAction(
                "Checkout",
                new CsdlOperationParameter[] { new CsdlOperationParameter("entity", new CsdlNamedTypeReference("FQ.NS.EntityType", false, testLocation), null, testLocation) },
                new CsdlNamedTypeReference("Edm.String", false, testLocation),
                true /*isBound*/,
                "entity",
                null /*documentation*/,
                testLocation);

            var semanticAction = new CsdlSemanticsAction(semanticSchema, action);
            IEdmOperationParameter edmParameter;
            IEnumerable <IEdmNavigationProperty> navigationProperties;
            IEdmEntityType         entityType;
            IEnumerable <EdmError> errors;

            semanticAction.TryGetRelativeEntitySetPath(semanticSchema.Model, out edmParameter, out navigationProperties, out entityType, out errors).Should().BeTrue();
            edmParameter.Name.Should().Be("entity");
            navigationProperties.Should().BeEmpty();
            entityType.FullName().Should().Be("FQ.NS.EntityType");
            errors.Should().BeEmpty();
        }
Example #2
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");
        }
Example #3
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();
        }
Example #4
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");
        }
Example #5
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);
        }
Example #6
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");
        }
Example #7
0
        public void BoundCsdlSemanticsOperationPropertiesShouldBeCorrect()
        {
            var action = new CsdlAction(
                "Checkout",
                new CsdlOperationParameter[] { new CsdlOperationParameter("entity", new CsdlNamedTypeReference("FQ.NS.EntityType", false, testLocation), testLocation) },
                new CsdlOperationReturn(new CsdlNamedTypeReference("Edm.String", false, testLocation), testLocation),
                true /*isBound*/,
                "entity/FakePath",
                testLocation);

            var semanticAction = new CsdlSemanticsAction(this.semanticSchema, action);

            semanticAction.IsBound.Should().BeTrue();
            semanticAction.Location().Should().Be(testLocation);
            semanticAction.Name.Should().Be("Checkout");
            semanticAction.Namespace.Should().Be("FQ.NS");
            semanticAction.ReturnType.Definition.Should().Be(EdmCoreModel.Instance.GetString(true).Definition);
            semanticAction.EntitySetPath.PathSegments.ToList()[0].Should().Be("entity");
            semanticAction.EntitySetPath.PathSegments.ToList()[1].Should().Be("FakePath");
            semanticAction.SchemaElementKind.Should().Be(EdmSchemaElementKind.Action);
        }
        public void BoundCsdlSemanticsOperationPropertiesShouldBeCorrect()
        {
            var action = new CsdlAction(
                "Checkout",
                new CsdlOperationParameter[] { new CsdlOperationParameter("entity", new CsdlNamedTypeReference("FQ.NS.EntityType", false, testLocation), testLocation) },
                new CsdlOperationReturn(new CsdlNamedTypeReference("Edm.String", false, testLocation), testLocation),
                true /*isBound*/,
                "entity/FakePath",
                testLocation);

            var semanticAction = new CsdlSemanticsAction(this.semanticSchema, action);

            Assert.True(semanticAction.IsBound);
            Assert.Equal(testLocation, semanticAction.Location());
            Assert.Equal("Checkout", semanticAction.Name);
            Assert.Equal("FQ.NS", semanticAction.Namespace);
            Assert.Equal("Edm.String", semanticAction.ReturnType.Definition.FullTypeName());
            Assert.Equal("entity", semanticAction.EntitySetPath.PathSegments.ToList()[0]);
            Assert.Equal("FakePath", semanticAction.EntitySetPath.PathSegments.ToList()[1]);
            Assert.Equal(EdmSchemaElementKind.Action, semanticAction.SchemaElementKind);
        }