public async Task When_property_is_offsetdatetime_then_schema_type_is_string() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Foo>(); //// Assert Assert.Equal(JsonObjectType.String, schema.Properties["OffsetDateTime"].Type); Assert.Equal(JsonFormatStrings.DateTime, schema.Properties["OffsetDateTime"].Format); }
public async Task When_property_is_struct_then_it_is_not_nullable() { //// Arrange var schema = await JsonSchema4.FromTypeAsync <MyStructContainer>(); //// Act var data = schema.ToJson(); //// Assert Assert.Equal(JsonObjectType.String, schema.Properties["Struct"].Type); Assert.Equal(JsonObjectType.String | JsonObjectType.Null, schema.Properties["NullableStruct"].Type); }
public async Task When_MaxLengthAttribute_is_set_then_maxItems_or_maxLength_is_set() { var schema = await JsonSchema4.FromTypeAsync <MaxLengthAttributeClass>(); var arrayProperty = schema.Properties["Items"]; Assert.Equal(100, arrayProperty.MaxItems); var stringProperty = schema.Properties["Foo"]; Assert.Equal(500, stringProperty.MaxLength); }
public async Task When_output_schema_contains_reference_then_schema_reference_path_is_human_readable() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Foo>(); var schemaData = schema.ToJson(); //// Assert Assert.Contains("#/definitions/Bar", schemaData); }
public async Task When_multipleOf_attribute_is_available_then_value_is_set_in_schema() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <MultipleOfClass>(); var property = schema.Properties["Number"]; //// Assert Assert.Equal(4.5m, property.MultipleOf.Value); }
private static async Task <string> PrepareAsync(TypeScriptGeneratorSettings settings) { var schema = await JsonSchema4.FromTypeAsync <MyClassTest>(); var data = schema.ToJson(); //// Act var generator = new TypeScriptGenerator(schema, settings); var code = generator.GenerateFile("MyClass"); return(code); }
public async Task When_generating_schema_with_object_property_then_additional_properties_are_not_allowed() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Foo>(); var schemaData = schema.ToJson(); //// Assert Assert.Equal(false, schema.Properties["Bar"].ActualTypeSchema.AllowAdditionalProperties); }
public async Task When_extension_data_attribute_is_used_on_property_then_extension_data_property_is_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <MyTest>(); //// Assert Assert.AreEqual(2, schema.Properties["Property"].ExtensionData["Foo"]); Assert.AreEqual(3, schema.Properties["Property"].ExtensionData["Bar"]); }
public void GenerateJsonScheam() { var mob = JsonSchema4.FromTypeAsync <MobHolder>(); var tower = JsonSchema4.FromTypeAsync <TowerHolder>(); var rmob = JsonSchema4.FromTypeAsync <MobRaceHolder>(); var rtower = JsonSchema4.FromTypeAsync <TowerRaceHolder>(); File.WriteAllText("mob.schema.json", mob.Result.ToJson()); File.WriteAllText("tower.schema.json", tower.Result.ToJson()); File.WriteAllText("mob_race.schema.json", rmob.Result.ToJson()); File.WriteAllText("tower_race.schema.json", rtower.Result.ToJson()); }
private static async Task <CSharpGenerator> CreateGeneratorAsync() { var schema = await JsonSchema4.FromTypeAsync <Teacher>(); var schemaData = schema.ToJson(); var settings = new CSharpGeneratorSettings(); settings.Namespace = "MyNamespace"; var generator = new CSharpGenerator(schema, settings); return(generator); }
public async Task When_property_is_duration_then_schema_type_is_string() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Foo>(); //// Assert Assert.Equal(JsonObjectType.String, schema.Properties["Duration"].Type); Assert.Equal(JsonFormatStrings.TimeSpan, schema.Properties["Duration"].Format); }
public async Task When_property_is_byte_array_then_schema_type_is_string() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Foo>(); //// Assert Assert.Equal(JsonObjectType.String, schema.Properties["Bytes"].Type); Assert.Equal(JsonFormatStrings.Byte, schema.Properties["Bytes"].Format); }
public async Task When_KnownType_attribute_exists_then_specified_classes_are_also_generated() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Container>(); var schemaData = schema.ToJson(); //// Assert Assert.IsTrue(schema.Definitions.Any(s => s.Key == "Teacher")); }
public async Task When_converting_a_circular_referencing_person_type_then_references_are_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Person>(); var json = schema.ToJson(); //// Assert Assert.Equal(schema, schema.Properties["Car"].ActualTypeSchema.Properties["Person"].ActualTypeSchema); }
private async Task When_converting_smth_then_items_must_correctly_be_loaded(string propertyName) { //// Act var schema = await JsonSchema4.FromTypeAsync <MyType>(); //// Assert var property = schema.Properties[propertyName]; Assert.Equal(JsonObjectType.Array | JsonObjectType.Null, property.Type); Assert.Equal(JsonObjectType.Object, property.ActualSchema.Item.ActualSchema.Type); Assert.Contains(schema.Definitions, d => d.Key == "MySubtype"); Assert.Equal(JsonObjectType.String | JsonObjectType.Null, property.ActualSchema.Item.ActualSchema.Properties["Id"].Type); }
public async Task When_converting_object_then_it_should_be_correct() { //// Act var schema = await JsonSchema4.FromTypeAsync <MyType>(); var data = schema.ToJson(); //// Assert var property = schema.Properties["Reference"]; Assert.True(property.IsNullable(SchemaType.JsonSchema)); Assert.Contains(schema.Definitions, d => d.Key == "MySubtype"); }
public async Task When_converting_in_round_trip_then_json_should_be_the_same() { //// Arrange var schema = await JsonSchema4.FromTypeAsync <MyType>(); //// Act var schemaData1 = JsonConvert.SerializeObject(schema, Formatting.Indented); var schema2 = JsonConvert.DeserializeObject <JsonSchema4>(schemaData1); var schemaData2 = JsonConvert.SerializeObject(schema2, Formatting.Indented); //// Assert Assert.Equal(schemaData1, schemaData2); }
public async Task When_Range_attribute_is_set_on_integer_then_minimum_and_maximum_are_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <AttributeTestClass>(); var property = schema.Properties["Integer"]; //// Assert Assert.Equal(5, property.Minimum); Assert.Equal(10, property.Maximum); }
public async Task When_Range_attribute_has_double_max_then_max_is_not_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <AttributeTestClass>(); var property = schema.Properties["DoubleOnlyMin"]; //// Assert Assert.Equal(5.5m, property.Minimum); Assert.Equal(null, property.Maximum); }
public async Task When_minLength_and_maxLength_attribute_are_set_on_string_then_minLength_and_maxLenght_are_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <AttributeTestClass>(); var property = schema.Properties["String"]; //// Assert Assert.Equal(3, property.MinLength); Assert.Equal(5, property.MaxLength); }
public async Task When_range_has_type_and_strings_then_it_is_processed_correctly() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <ClassWithTypedRange>(); var property = schema.Properties["Foo"]; //// Assert Assert.Equal(0.0m, property.Minimum); Assert.Equal(1.0m, property.Maximum); }
public async Task When_ReadOnly_is_set_then_readOnly_is_set_in_schema() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <AttributeTestClass>(); var property = schema.Properties["ReadOnly"]; //// Assert Assert.True(property.IsReadOnly); }
public async Task When_required_attribute_is_available_then_property_is_required() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <AttributeTestClass>(); var property = schema.Properties["Required"]; //// Assert Assert.True(property.IsRequired); }
public async Task When_description_attribute_is_available_then_description_are_read() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <AttributeTestClass>(); var property = schema.Properties["Description"]; //// Assert Assert.Equal("Abc", property.Description); }
public async Task When_StringLengthAttribute_is_set_then_minLength_and_maxLenght_is_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <StringLengthAttributeClass>(); //// Assert var property = schema.Properties["Foo"]; Assert.Equal(5, property.MinLength); Assert.Equal(10, property.MaxLength); }
public async Task When_property_is_object_then_it_should_not_be_a_dictonary_but_any() { /// Act var schema = await JsonSchema4.FromTypeAsync <FilterDto>(); var json = schema.ToJson(); /// Assert var property = schema.Properties["Value"].ActualTypeSchema; Assert.True(property.IsAnyType); Assert.False(property.IsDictionary); }
public async Task When_generating_DateTimeOffset_property_then_format_datetime_must_be_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Foo>(); var schemaData = schema.ToJson(); //// Assert Assert.Equal(JsonObjectType.String, schema.Properties["Time"].Type); Assert.Equal(JsonFormatStrings.DateTime, schema.Properties["Time"].Format); }
public async Task When_public_field_is_available_then_it_is_added_as_property() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <MyTest>(); var json = schema.ToJson(); //// Assert Assert.True(schema.Properties["MyField"].Type.HasFlag(JsonObjectType.String)); }
public async Task When_root_schema_is_inherited_then_schema_is_generated() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <Animal>(); var data = schema.ToJson(); //// Assert Assert.NotNull(data); }
public async Task When_RequiredAttribute_is_set_with_AllowEmptyStrings_false_then_minLength_and_required_are_set() { //// Arrange //// Act var schema = await JsonSchema4.FromTypeAsync <StringRequiredClass>(); //// Assert var property = schema.Properties["Foo"]; Assert.Equal(1, property.MinLength); Assert.True(property.IsRequired); }