/// <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); }