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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #5
0
        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());
        }
Example #10
0
        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);
        }
Example #18
0
        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);
        }
Example #19
0
        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);
        }
Example #20
0
        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);
        }
Example #21
0
        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);
        }
Example #22
0
        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);
        }
Example #23
0
        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);
        }
Example #24
0
        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);
        }
Example #26
0
        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);
        }
Example #27
0
        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);
        }
Example #28
0
        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);
        }