Skip to content
Snippets Groups Projects
Commit 9fb71d31 authored by Per 29 mei 2024 gedeeld account, daarvoor marten's avatar Per 29 mei 2024 gedeeld account, daarvoor marten
Browse files

Add validation for length of short_description and description

parent c3b628e0
No related branches found
No related tags found
1 merge request!22Add validation for length of short_description and description
Pipeline #92931 passed
......@@ -15,8 +15,8 @@ module Quby
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)
......@@ -32,6 +32,20 @@ module Quby
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) }
......@@ -41,12 +55,6 @@ module Quby
&.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)
......
......@@ -58,6 +58,22 @@ module Quby::Compiler::Services
end
end
describe "questionnaire metadata cannot be too long" do
it "throws an error if the questionnaire short_description is too long" do
invalid_definition = make_definition("title 'foo'; short_description \"#{"x"*256}\"")
invalid_definition.valid?
expect(invalid_definition.errors[:sourcecode].first[:message])
.to include("Questionnaire short_description is too long.")
end
it "throws an error if the questionnaire description is too long" do
invalid_definition = make_definition("title 'foo'; description \"#{"x"*256}\"")
invalid_definition.valid?
expect(invalid_definition.errors[:sourcecode].first[:message])
.to include("Questionnaire description is too long.")
end
end
describe 'questions with activemodel validation errors' do
it "throws an error if the question to be hidden does not exist" do
invalid_definition = make_definition(<<-END)
......@@ -813,8 +829,8 @@ module Quby::Compiler::Services
describe 'when using lookup tables' do
it 'can validate an externally referenced table' do
definition = Quby::Compiler::Entities::Definition.new(
key: 'test',
sourcecode: "title 'foo'; import_lookup_tree 'bar'",
key: 'test',
sourcecode: "title 'foo'; import_lookup_tree 'bar'",
path: 'fake definition test',
lookup_tables: {'bar' => ""}
)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment