From c49b919a503cf9a2c901897f20671ca7d6161639 Mon Sep 17 00:00:00 2001 From: magicmilo Date: Fri, 12 Nov 2021 15:23:18 +0000 Subject: [PATCH] put validation all into rake file --- lib/tasks/form_definition.rake | 47 +++++++++++++++++++++++++++-- lib/tasks/json_schema_validation.rb | 46 ---------------------------- 2 files changed, 44 insertions(+), 49 deletions(-) delete mode 100644 lib/tasks/json_schema_validation.rb diff --git a/lib/tasks/form_definition.rake b/lib/tasks/form_definition.rake index ed8be8c11..565728064 100644 --- a/lib/tasks/form_definition.rake +++ b/lib/tasks/form_definition.rake @@ -1,9 +1,50 @@ -# require "app/helpers/json_schema_validation.rb" +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 + end + form_paths +end namespace :form_definition do desc "Validate JSON against Generic Form Schema" task :validate do - puts "#{Rails.root}" - ruby "lib/tasks/json_schema_validation.rb" + 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 end end \ No newline at end of file diff --git a/lib/tasks/json_schema_validation.rb b/lib/tasks/json_schema_validation.rb deleted file mode 100644 index 994955e4e..000000000 --- a/lib/tasks/json_schema_validation.rb +++ /dev/null @@ -1,46 +0,0 @@ -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 - end - form_paths -end - -begin - 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 -end