|
|
|
@ -2,49 +2,48 @@ require "json"
|
|
|
|
|
require "json-schema" |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
form_paths = [] |
|
|
|
|
directories.each do |directory| |
|
|
|
|
Dir.glob("#{directory}/*.json").each do |form_path| |
|
|
|
|
form_paths.push(form_path) |
|
|
|
|
end |
|
|
|
|
form_paths |
|
|
|
|
end |
|
|
|
|
form_paths |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
namespace :form_definition do |
|
|
|
|
desc "Validate JSON against Generic Form Schema" |
|
|
|
|
task :validate do |
|
|
|
|
puts "#{Rails.root}" |
|
|
|
|
path = "config/forms/schema/generic.json" |
|
|
|
|
|
|
|
|
|
file = File.open(path) |
|
|
|
|
schema = JSON.parse(file.read) |
|
|
|
|
metaschema = JSON::Validator.validator_for_name("draft4").metaschema |
|
|
|
|
|
|
|
|
|
puts path |
|
|
|
|
|
|
|
|
|
if JSON::Validator.validate(metaschema, schema) |
|
|
|
|
puts "schema valid" |
|
|
|
|
else |
|
|
|
|
puts "schema not valid" |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
directories = ["config/forms", "spec/fixtures/forms"] |
|
|
|
|
# directories = ["config/forms"] |
|
|
|
|
|
|
|
|
|
get_all_form_paths(directories).each do |path| |
|
|
|
|
puts path |
|
|
|
|
file = File.open(path) |
|
|
|
|
data = JSON.parse(file.read) |
|
|
|
|
|
|
|
|
|
puts JSON::Validator.fully_validate(schema, data, :strict => true) |
|
|
|
|
|
|
|
|
|
begin |
|
|
|
|
JSON::Validator.validate!(schema, data) |
|
|
|
|
rescue JSON::Schema::ValidationError => e |
|
|
|
|
e.message |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
desc "Validate JSON against Generic Form Schema" |
|
|
|
|
task validate: :environment do |
|
|
|
|
puts Rails.root.to_s |
|
|
|
|
path = "config/forms/schema/generic.json" |
|
|
|
|
|
|
|
|
|
file = File.open(path) |
|
|
|
|
schema = JSON.parse(file.read) |
|
|
|
|
metaschema = JSON::Validator.validator_for_name("draft4").metaschema |
|
|
|
|
|
|
|
|
|
puts path |
|
|
|
|
|
|
|
|
|
if JSON::Validator.validate(metaschema, schema) |
|
|
|
|
puts "schema valid" |
|
|
|
|
else |
|
|
|
|
puts "schema not valid" |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
directories = ["config/forms", "spec/fixtures/forms"] |
|
|
|
|
|
|
|
|
|
get_all_form_paths(directories).each do |path| |
|
|
|
|
puts path |
|
|
|
|
file = File.open(path) |
|
|
|
|
data = JSON.parse(file.read) |
|
|
|
|
|
|
|
|
|
puts JSON::Validator.fully_validate(schema, data, strict: true) |
|
|
|
|
|
|
|
|
|
begin |
|
|
|
|
JSON::Validator.validate!(schema, data) |
|
|
|
|
rescue JSON::Schema::ValidationError => e |
|
|
|
|
e.message |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|