lib/quby/compiler/services/definition_validator.rb in quby-compiler-0.3.6 vs lib/quby/compiler/services/definition_validator.rb in quby-compiler-0.3.7
- old
+ new
@@ -13,12 +13,12 @@
attr_reader :definition
attr_reader :questionnaire
def validate(definition)
questionnaire = DSL.build_from_definition(definition)
+ validate_metadata(questionnaire)
validate_fields(questionnaire)
- validate_title(questionnaire)
validate_questions(questionnaire)
validate_scores(questionnaire)
validate_table_edgecases(questionnaire)
validate_flags(questionnaire)
validate_respondent_types(questionnaire)
@@ -30,22 +30,30 @@
definition.errors.add(:sourcecode, {message: "Questionnaire error: #{definition.key}\n" \
"#{exception.message}",
backtrace: exception.backtrace[0..20]})
end
+ def validate_metadata(questionnaire)
+ if questionnaire.title.blank?
+ fail "Questionnaire title is missing."
+ end
+
+ if questionnaire.short_description && questionnaire.short_description.size > 255
+ fail "Questionnaire short_description is too long."
+ end
+
+ if questionnaire.description && questionnaire.description.size > 255
+ fail "Questionnaire description is too long."
+ end
+ end
+
def validate_fields(questionnaire)
questionnaire.fields.input_keys
.find { |k| !k.is_a?(Symbol) }
&.tap { |k| fail "Input key #{k} is not a symbol" }
questionnaire.fields.answer_keys
.find { |k| !k.is_a?(Symbol) }
&.tap { |k| fail "Answer key #{k} is not a symbol" }
- end
-
- def validate_title(questionnaire)
- if questionnaire.title.blank?
- fail "Questionnaire title is missing."
- end
end
def validate_questions(questionnaire)
questionnaire.answer_keys.each do |key|
validate_key_format(key)