Skip to content

Commit

Permalink
added abstract schema checking to CSharpValueGenerator GetDefaultValue (
Browse files Browse the repository at this point in the history
#1570)

Co-authored-by: Gergo Vandor <gergo.vandor.dev@outlook.com>
  • Loading branch information
GergoVandor and Gergo Vandor committed May 3, 2023
1 parent 2ed8a16 commit 2551c78
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public override string GetDefaultValue(JsonSchema schema, bool allowsNull, strin
? _settings.ArrayInstanceType + targetType.Substring(_settings.ArrayType.Length)
: targetType;

return $"new {targetType}()";
return schema.IsAbstract ? null : $"new {targetType}()";
}
}
}
Expand Down
27 changes: 27 additions & 0 deletions src/NJsonSchema.CodeGeneration.Tests/DefaultValueGeneratorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -218,5 +218,32 @@ public void When_schema_has_default_value_of_enum_it_is_generated_in_CSharp_and_
Assert.Equal("Ns.MyEnum.bar", csharpValue);
Assert.Equal("MyEnum.bar", typescriptValue);
}

[Fact]
public void When_schema_has_required_abstract_class_it_generates_no_default_value_for_in_CSharp_and_TypeScript()
{
//// Arrange
var csharpSettings = new CSharpGeneratorSettings();
var csharpGenerator = new CSharpValueGenerator(csharpSettings);
var csharpTypeResolver = new CSharpTypeResolver(csharpSettings);

//// Act
var schema = new JsonSchema()
{
Type = JsonObjectType.Object,
IsAbstract = true
};

var typescriptSettings = new TypeScriptGeneratorSettings();
var typescriptGenerator = new TypeScriptValueGenerator(typescriptSettings);
var typescriptTypeResolver = new TypeScriptTypeResolver(typescriptSettings);

var csharpValue = csharpGenerator.GetDefaultValue(schema, false, "BaseClass", "BaseClass", true, csharpTypeResolver);
var typescriptValue = typescriptGenerator.GetDefaultValue(schema, false, "BaseClass", "BaseClass", true, typescriptTypeResolver);

//// Assert
Assert.Null(csharpValue);
Assert.Null(typescriptValue);
}
}
}

0 comments on commit 2551c78

Please sign in to comment.