Skip to content

Commit

Permalink
Use literal for xaml keys (also in tests)
Browse files Browse the repository at this point in the history
  • Loading branch information
kMutagene committed Jul 16, 2024
1 parent ba8d69e commit d0ae4d0
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 20 deletions.
11 changes: 7 additions & 4 deletions src/Yaml/ValidationPackage.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,22 @@ open YAMLicious.YAMLiciousTypes

module ValidationPackage =

let [<Literal>] NAME_KEY = "name"
let [<Literal>] VERSION_KEY = "version"

let encoder (validationpackage : ValidationPackage) =
[
"name", Encode.string validationpackage.Name
Encode.tryInclude "version" Encode.string (validationpackage.Version)
NAME_KEY, Encode.string validationpackage.Name
Encode.tryInclude VERSION_KEY Encode.string (validationpackage.Version)
]
|> Encode.choose
|> Encode.object

let decoder : (YAMLElement -> ValidationPackage) =
Decode.object (fun get ->
ValidationPackage(
name = get.Required.Field "name" Decode.string,
?version = get.Optional.Field "version" Decode.string
name = get.Required.Field NAME_KEY Decode.string,
?version = get.Optional.Field VERSION_KEY Decode.string
)
)

Expand Down
11 changes: 7 additions & 4 deletions src/Yaml/ValidationPackagesConfig.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,22 @@ open YAMLicious.YAMLiciousTypes

module ValidationPackagesConfig =

let [<Literal>] ARC_SPECIFICATION_KEY = "arc_specification"
let [<Literal>] VALIDATION_PACKAGES_KEY = "validation_packages"

let encoder (validationpackage : ValidationPackagesConfig) =
[
Encode.tryInclude "arc_specification" Encode.string (validationpackage.ARCSpecification)
"validation_packages", Encode.resizearray ValidationPackage.encoder validationpackage.ValidationPackages
Encode.tryInclude ARC_SPECIFICATION_KEY Encode.string (validationpackage.ARCSpecification)
VALIDATION_PACKAGES_KEY, Encode.resizearray ValidationPackage.encoder validationpackage.ValidationPackages
]
|> Encode.choose
|> Encode.object

let decoder : (YAMLElement -> ValidationPackagesConfig) =
Decode.object (fun get ->
ValidationPackagesConfig(
validation_packages = get.Required.Field "validation_packages" (Decode.resizearray ValidationPackage.decoder),
?arc_specification = get.Optional.Field "arc_specification" Decode.string
validation_packages = get.Required.Field VALIDATION_PACKAGES_KEY (Decode.resizearray ValidationPackage.decoder),
?arc_specification = get.Optional.Field ARC_SPECIFICATION_KEY Decode.string
)
)

Expand Down
6 changes: 3 additions & 3 deletions tests/Yaml/ValidationPackage.Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ let tests_extended = testList "extended" [
let vp = ValidationPackages.ValidationPackage("name", "version")
let vp_no_version = ValidationPackages.ValidationPackage("name")

let vp_yaml_string = """name: name
version: version
let vp_yaml_string = $"""{ValidationPackage.NAME_KEY}: name
{ValidationPackage.VERSION_KEY}: version
"""

let vp_no_version_yaml_string = """name: name
let vp_no_version_yaml_string = $"""{ValidationPackage.NAME_KEY}: name
"""

testList "encoder (toYamlString)" [
Expand Down
18 changes: 9 additions & 9 deletions tests/Yaml/ValidationPackageConfig.Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,21 @@ let tests_extended = testList "extended" [
let vpc = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp; vp_no_version ]), "arc_specification")
let vpc_no_specs = ValidationPackages.ValidationPackagesConfig(new ResizeArray<ValidationPackage>([vp; vp_no_version ]))

let vpc_yaml_string = """arc_specification: arc_specification
validation_packages:
let vpc_yaml_string = $"""{ValidationPackagesConfig.ARC_SPECIFICATION_KEY}: arc_specification
{ValidationPackagesConfig.VALIDATION_PACKAGES_KEY}:
-
name: name
version: version
{ValidationPackage.NAME_KEY}: name
{ValidationPackage.VERSION_KEY}: version
-
name: name
{ValidationPackage.NAME_KEY}: name
"""

let vpc_no_specs_yaml_string = """validation_packages:
let vpc_no_specs_yaml_string = $"""validation_packages:
-
name: name
version: version
{ValidationPackage.NAME_KEY}: name
{ValidationPackage.VERSION_KEY}: version
-
name: name
{ValidationPackage.NAME_KEY}: name
"""

testList "encoder (toYamlString)" [
Expand Down

0 comments on commit d0ae4d0

Please sign in to comment.