Beispiel #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DataFormat"/> class.
        /// </summary>
        /// <param name="rootNodeName">Name of the root node.</param>
        /// <param name="type">Type to convert to data format.</param>
        public DataFormat(string rootNodeName, Type type)
        {
            var deserializedSchema = OpenApiMapper.GetJsonSchemaOfType(type);

            if (OpenApiMapper.IsPrimitiveDataType(type))
            {
                this.Add(rootNodeName, deserializedSchema.ToObject <Dictionary <string, object> >());
            }
            else
            {
                string mainTypeName = type.Name.Replace("[]", string.Empty);
                this.Add(rootNodeName, new Dictionary <string, string>()
                {
                    { "$ref", $"#/definitions/{mainTypeName}" }
                });

                // Move definitions to root level
                if (deserializedSchema["definitions"] != null)
                {
                    foreach (var defintion in deserializedSchema["definitions"].ToObject <Dictionary <string, JObject> >())
                    {
                        (defintion.Value as JObject).Remove("additionalProperties");
                        this.Add(defintion.Key, defintion.Value as JObject);
                    }
                }

                deserializedSchema.Remove("definitions");
                this.Add(mainTypeName, deserializedSchema.ToObject <Dictionary <string, object> >());
            }
        }
            public void CheckSchemaGeneration(Type type, JObject expectedSchemaAsJson)
            {
                JObject actualJsonSchemaOfType = OpenApiMapper.GetJsonSchemaOfType(type);

                actualJsonSchemaOfType.Should().BeEquivalentTo(expectedSchemaAsJson);
            }