Browse Source

outline

pull/76/head
magicmilo 3 years ago
parent
commit
f844f9273e
  1. 30
      app/helpers/json_schema_validation.rb
  2. 63
      config/forms/schema/generic.json
  3. 2
      spec/fixtures/forms/test_form.json

30
app/helpers/json_schema_validation.rb

@ -1,29 +1,6 @@
require "json-schema" require "json-schema"
require "json" require "json"
# "form_type": "lettings",
#start_year": 2021,
#end_year": 2022,
#sections": {
# about_this_log": {
# label": "About this log",
# subsections": {
# about_this_log": {
# label": "About this log",
# pages": {
# "tenant_code": {
# header": "",
# description": "",
# questions": {
# tenant_code": {
# check_answer_label": "Tenant code",
# header": "What is the tenant code?",
# hint_text": "",
# type": "text"
# }
# }
# }
def get_all_form_paths(directories) def get_all_form_paths(directories)
form_paths = [] form_paths = []
directories.each do |directory| directories.each do |directory|
@ -43,6 +20,8 @@ begin
schema = JSON.parse(file.read) schema = JSON.parse(file.read)
metaschema = JSON::Validator.validator_for_name("draft4").metaschema metaschema = JSON::Validator.validator_for_name("draft4").metaschema
puts path
if JSON::Validator.validate(metaschema, schema) if JSON::Validator.validate(metaschema, schema)
puts "schema valid" puts "schema valid"
else else
@ -50,9 +29,6 @@ begin
return return
end end
path = "spec/fixtures/forms/test_validator.json"
# path = "config/forms/2021_2022.json"
directories = ["config/forms", "spec/fixtures/forms"] directories = ["config/forms", "spec/fixtures/forms"]
get_all_form_paths(directories).each do |path| get_all_form_paths(directories).each do |path|
@ -60,7 +36,7 @@ begin
file = File.open(path) file = File.open(path)
data = JSON.parse(file.read) data = JSON.parse(file.read)
puts JSON::Validator.validate(schema, data) puts JSON::Validator.validate(schema, data, :strict => true)
puts JSON::Validator.fully_validate(schema, data, :strict => true) puts JSON::Validator.fully_validate(schema, data, :strict => true)

63
config/forms/schema/generic.json

@ -1,5 +1,5 @@
{ {
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema#",
"$id": "https://example.com/product.schema.json", "$id": "https://example.com/product.schema.json",
"title": "Form", "title": "Form",
"description": "A form", "description": "A form",
@ -16,8 +16,7 @@
}, },
"end_year": { "end_year": {
"description": "", "description": "",
"type": "integer", "type": "integer"
"required": "false"
}, },
"sections": { "sections": {
"description": "", "description": "",
@ -32,7 +31,63 @@
"type": "string" "type": "string"
}, },
"subsections": { "subsections": {
"type": "object" "description": "",
"type": "object",
"patternProperties": {
"^[0-9]+$": {
"description": "",
"type": "string"
},
"label": {
"description": "",
"type": "string"
},
"subsections": {
"description": "",
"type": "object",
"patternProperties": {
"^[0-9]+$": {
"description": "",
"type": "string"
},
"label": {
"description": "",
"type": "string"
},
"pages": {
"description": "",
"type": "object",
"patternProperties": {
"^[0-9]+$": {
"description": "",
"type": "string"
}
},
"questions": {
"description": "",
"type": "object",
"patternProperties": {
"^[0-9]+$": {
"description": "",
"type": "string"
},
"conditional_for": {
"type": "object",
"properties": ""
}
}
},
"conditional_route_to": {
"type": "object",
"properties": ""
},
"default_next_page": {
"type" : "string"
}
}
}
}
}
} }
} }
} }

2
spec/fixtures/forms/test_form.json vendored

@ -1,5 +1,7 @@
{ {
"form_type": "lettings", "form_type": "lettings",
"start_year": 2021,
"end_year": 2022,
"sections": { "sections": {
"household": { "household": {
"label": "About the household", "label": "About the household",

Loading…
Cancel
Save