Skip to content

Commit

Permalink
add tests for plain default string values (#44)
Browse files Browse the repository at this point in the history
Adding tests for correct model generation when the default value for a member is set to a plain string value.
  • Loading branch information
tanmaykm authored Jul 23, 2023
1 parent a12ba5a commit f0ce7e1
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 7 deletions.
2 changes: 2 additions & 0 deletions test/modelgen/ModelGenClient/docs/TestModel.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Name | Type | Description | Notes
**default_date** | **Date** | | [optional] [default to OpenAPI.str2date("2011-11-11")]
**default_datetime** | **ZonedDateTime** | | [optional] [default to OpenAPI.str2zoneddatetime("2011-11-11T11:11:11Z")]
**max_val** | **Int64** | | [optional] [default to 100]
**message** | **String** | | [optional] [default to "success"]
**name** | **String** | | [default to "new"]
**compute** | [***ComputeType**](ComputeType.md) | | [optional] [default to nothing]


Expand Down
15 changes: 12 additions & 3 deletions test/modelgen/ModelGenClient/src/models/model_TestModel.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,36 +9,45 @@
default_date=OpenAPI.str2date("2011-11-11"),
default_datetime=OpenAPI.str2zoneddatetime("2011-11-11T11:11:11Z"),
max_val=100,
message="success",
name="new",
compute=nothing,
)
- limited_by::String
- default_date::Date
- default_datetime::ZonedDateTime
- max_val::Int64
- message::String
- name::String
- compute::ComputeType
"""
Base.@kwdef mutable struct TestModel <: OpenAPI.APIModel
limited_by::Union{Nothing, String} = "time"
default_date::Union{Nothing, Date} = OpenAPI.str2date("2011-11-11")
default_datetime::Union{Nothing, ZonedDateTime} = OpenAPI.str2zoneddatetime("2011-11-11T11:11:11Z")
max_val::Union{Nothing, Int64} = 100
message::Union{Nothing, String} = "success"
name::Union{Nothing, String} = "new"
compute = nothing # spec type: Union{ Nothing, ComputeType }

function TestModel(limited_by, default_date, default_datetime, max_val, compute, )
function TestModel(limited_by, default_date, default_datetime, max_val, message, name, compute, )
OpenAPI.validate_property(TestModel, Symbol("limited_by"), limited_by)
OpenAPI.validate_property(TestModel, Symbol("default_date"), default_date)
OpenAPI.validate_property(TestModel, Symbol("default_datetime"), default_datetime)
OpenAPI.validate_property(TestModel, Symbol("max_val"), max_val)
OpenAPI.validate_property(TestModel, Symbol("message"), message)
OpenAPI.validate_property(TestModel, Symbol("name"), name)
OpenAPI.validate_property(TestModel, Symbol("compute"), compute)
return new(limited_by, default_date, default_datetime, max_val, compute, )
return new(limited_by, default_date, default_datetime, max_val, message, name, compute, )
end
end # type TestModel

const _property_types_TestModel = Dict{Symbol,String}(Symbol("limited_by")=>"String", Symbol("default_date")=>"Date", Symbol("default_datetime")=>"ZonedDateTime", Symbol("max_val")=>"Int64", Symbol("compute")=>"ComputeType", )
const _property_types_TestModel = Dict{Symbol,String}(Symbol("limited_by")=>"String", Symbol("default_date")=>"Date", Symbol("default_datetime")=>"ZonedDateTime", Symbol("max_val")=>"Int64", Symbol("message")=>"String", Symbol("name")=>"String", Symbol("compute")=>"ComputeType", )
OpenAPI.property_type(::Type{ TestModel }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_TestModel[name]))}

function check_required(o::TestModel)
o.name === nothing && (return false)
true
end

Expand Down
2 changes: 2 additions & 0 deletions test/modelgen/ModelGenServer/docs/TestModel.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Name | Type | Description | Notes
**default_date** | **Date** | | [optional] [default to OpenAPI.str2date("2011-11-11")]
**default_datetime** | **ZonedDateTime** | | [optional] [default to OpenAPI.str2zoneddatetime("2011-11-11T11:11:11Z")]
**max_val** | **Int64** | | [optional] [default to 100]
**message** | **String** | | [optional] [default to "success"]
**name** | **String** | | [default to "new"]
**compute** | [***ComputeType**](ComputeType.md) | | [optional] [default to nothing]


Expand Down
15 changes: 12 additions & 3 deletions test/modelgen/ModelGenServer/src/models/model_TestModel.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,36 +9,45 @@
default_date=OpenAPI.str2date("2011-11-11"),
default_datetime=OpenAPI.str2zoneddatetime("2011-11-11T11:11:11Z"),
max_val=100,
message="success",
name="new",
compute=nothing,
)
- limited_by::String
- default_date::Date
- default_datetime::ZonedDateTime
- max_val::Int64
- message::String
- name::String
- compute::ComputeType
"""
Base.@kwdef mutable struct TestModel <: OpenAPI.APIModel
limited_by::Union{Nothing, String} = "time"
default_date::Union{Nothing, Date} = OpenAPI.str2date("2011-11-11")
default_datetime::Union{Nothing, ZonedDateTime} = OpenAPI.str2zoneddatetime("2011-11-11T11:11:11Z")
max_val::Union{Nothing, Int64} = 100
message::Union{Nothing, String} = "success"
name::Union{Nothing, String} = "new"
compute = nothing # spec type: Union{ Nothing, ComputeType }

function TestModel(limited_by, default_date, default_datetime, max_val, compute, )
function TestModel(limited_by, default_date, default_datetime, max_val, message, name, compute, )
OpenAPI.validate_property(TestModel, Symbol("limited_by"), limited_by)
OpenAPI.validate_property(TestModel, Symbol("default_date"), default_date)
OpenAPI.validate_property(TestModel, Symbol("default_datetime"), default_datetime)
OpenAPI.validate_property(TestModel, Symbol("max_val"), max_val)
OpenAPI.validate_property(TestModel, Symbol("message"), message)
OpenAPI.validate_property(TestModel, Symbol("name"), name)
OpenAPI.validate_property(TestModel, Symbol("compute"), compute)
return new(limited_by, default_date, default_datetime, max_val, compute, )
return new(limited_by, default_date, default_datetime, max_val, message, name, compute, )
end
end # type TestModel

const _property_types_TestModel = Dict{Symbol,String}(Symbol("limited_by")=>"String", Symbol("default_date")=>"Date", Symbol("default_datetime")=>"ZonedDateTime", Symbol("max_val")=>"Int64", Symbol("compute")=>"ComputeType", )
const _property_types_TestModel = Dict{Symbol,String}(Symbol("limited_by")=>"String", Symbol("default_date")=>"Date", Symbol("default_datetime")=>"ZonedDateTime", Symbol("max_val")=>"Int64", Symbol("message")=>"String", Symbol("name")=>"String", Symbol("compute")=>"ComputeType", )
OpenAPI.property_type(::Type{ TestModel }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_TestModel[name]))}

function check_required(o::TestModel)
o.name === nothing && (return false)
true
end

Expand Down
2 changes: 2 additions & 0 deletions test/modelgen/testmodelgen.jl
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ module TestModelGen
@test testmodel.default_datetime == OpenAPI.str2zoneddatetime("2011-11-11T11:11:11Z")
@test testmodel.max_val == 100
@test testmodel.compute in ["cpu", "gpu"]
@test testmodel.message == "success"
@test testmodel.name == "new"
end

function runtests()
Expand Down
13 changes: 12 additions & 1 deletion test/specs/modelgen.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,21 @@
"default": 100,
"enum": [100, 200, 300]
},
"message": {
"type": "string",
"default": "success"
},
"name": {
"type": "string",
"default": "new"
},
"compute": {
"$ref": "#/components/schemas/ComputeType"
}
}
},
"required": [
"name"
]
},
"ComputeType": {
"type": "string",
Expand Down

0 comments on commit f0ce7e1

Please sign in to comment.