/// <summary>
        /// Initializes a new instance of <see cref="ODataContext"/> class.
        /// </summary>
        /// <param name="model">The Edm model.</param>
        /// <param name="settings">The convert setting.</param>
        public ODataContext(IEdmModel model, OpenApiConvertSettings settings)
        {
            Model    = model ?? throw Error.ArgumentNull(nameof(model));
            Settings = settings ?? throw Error.ArgumentNull(nameof(settings));

            EdmSpatialTypeVisitor visitor = new EdmSpatialTypeVisitor();

            visitor.Visit(model);
            IsSpatialTypeUsed = visitor.IsSpatialTypeUsed;

            OperationHanderProvider = new OperationHandlerProvider();
            PathItemHanderProvider  = new PathItemHandlerProvider();

            _pathProvider = new ODataPathProvider();

            if (settings.EnableKeyAsSegment != null)
            {
                // We have the global setting, use the global setting
                KeyAsSegment = settings.EnableKeyAsSegment.Value;
            }
            else
            {
                KeyAsSegment = false;
                if (model.EntityContainer != null)
                {
                    var keyAsSegment = model.GetBoolean(model.EntityContainer, CapabilitiesConstants.KeyAsSegmentSupported);
                    if (keyAsSegment != null)
                    {
                        KeyAsSegment = keyAsSegment.Value;
                    }
                }
            }
        }
예제 #2
0
        public void GetHandlerReturnsNullForUnknownPathKind()
        {
            // Arrange
            PathItemHandlerProvider provider = new PathItemHandlerProvider();

            // Act
            IPathItemHandler hander = provider.GetHandler(ODataPathKind.Unknown);

            // Assert
            Assert.Null(hander);
        }
예제 #3
0
        public void GetHandlerReturnsCorrectHandlerType(ODataPathKind pathKind, Type handlerType)
        {
            // Arrange
            PathItemHandlerProvider provider = new PathItemHandlerProvider();

            // Act
            IPathItemHandler hander = provider.GetHandler(pathKind);

            // Assert
            Assert.Same(handlerType, hander.GetType());
        }