You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
992 B
47 lines
992 B
3 years ago
|
require "json"
|
||
3 years ago
|
require "json-schema"
|
||
3 years ago
|
|
||
3 years ago
|
def get_all_form_paths(directories)
|
||
|
form_paths = []
|
||
|
directories.each do |directory|
|
||
|
Dir.glob("#{directory}/*.json").each do |form_path|
|
||
|
form_paths.push(form_path)
|
||
|
end
|
||
|
end
|
||
|
form_paths
|
||
|
end
|
||
|
|
||
3 years ago
|
begin
|
||
3 years ago
|
path = "config/forms/schema/generic.json"
|
||
3 years ago
|
|
||
|
file = File.open(path)
|
||
|
schema = JSON.parse(file.read)
|
||
3 years ago
|
metaschema = JSON::Validator.validator_for_name("draft4").metaschema
|
||
3 years ago
|
|
||
3 years ago
|
puts path
|
||
|
|
||
3 years ago
|
if JSON::Validator.validate(metaschema, schema)
|
||
3 years ago
|
puts "schema valid"
|
||
3 years ago
|
else
|
||
3 years ago
|
puts "schema not valid"
|
||
|
return
|
||
3 years ago
|
end
|
||
|
|
||
3 years ago
|
directories = ["config/forms", "spec/fixtures/forms"]
|
||
|
# directories = ["config/forms"]
|
||
3 years ago
|
|
||
3 years ago
|
get_all_form_paths(directories).each do |path|
|
||
|
puts path
|
||
|
file = File.open(path)
|
||
|
data = JSON.parse(file.read)
|
||
3 years ago
|
|
||
3 years ago
|
puts JSON::Validator.fully_validate(schema, data, :strict => true)
|
||
3 years ago
|
|
||
3 years ago
|
begin
|
||
|
JSON::Validator.validate!(schema, data)
|
||
|
rescue JSON::Schema::ValidationError => e
|
||
|
e.message
|
||
|
end
|
||
|
end
|
||
3 years ago
|
end
|