split up answer validation test into themed files
This commit is contained in:
35
test/validators/answer_format_validator/checkbox_test.rb
Normal file
35
test/validators/answer_format_validator/checkbox_test.rb
Normal file
@ -0,0 +1,35 @@
|
||||
require 'test_helper'
|
||||
|
||||
class AnswerFormatValidatorTest < ActiveSupport::TestCase
|
||||
test "checkbox should PASS with populated array" do
|
||||
obj = AnswerValidatable.new('checkbox')
|
||||
obj.answer = ["", "", "valid answer"]
|
||||
|
||||
assert obj.valid?
|
||||
assert obj.errors.messages.empty?
|
||||
end
|
||||
|
||||
test "checkbox should FAIL with nil" do
|
||||
obj = AnswerValidatable.new('checkbox')
|
||||
obj.answer = nil
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/select.*answer/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "checkbox should FAIL with empty string" do
|
||||
obj = AnswerValidatable.new('checkbox')
|
||||
obj.answer = " "
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/select.*answer/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "checkbox should FAIL with array of empty strings" do
|
||||
obj = AnswerValidatable.new('checkbox')
|
||||
obj.answer = ["", "", " "]
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/select.*answer/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
end
|
51
test/validators/answer_format_validator/live_code_test.rb
Normal file
51
test/validators/answer_format_validator/live_code_test.rb
Normal file
@ -0,0 +1,51 @@
|
||||
require 'test_helper'
|
||||
|
||||
class AnswerFormatValidatorTest < ActiveSupport::TestCase
|
||||
test "live_code should PASS with populated hash" do
|
||||
obj = AnswerValidatable.new('live_code')
|
||||
obj.answer = { html: 'this is html', css: '', js: '', text: 'some reasons' }
|
||||
|
||||
assert obj.valid?
|
||||
assert obj.errors.messages.empty?
|
||||
end
|
||||
|
||||
test "live_code should PASS with finish later" do
|
||||
obj = AnswerValidatable.new('live_code')
|
||||
obj.answer = { later: "true" }
|
||||
|
||||
assert obj.valid?
|
||||
assert obj.errors.messages.empty?
|
||||
end
|
||||
|
||||
test "live_code should FAIL with nil" do
|
||||
obj = AnswerValidatable.new('live_code')
|
||||
obj.answer = nil
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/write.*code/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "live_code should FAIL without checking finish later" do
|
||||
obj = AnswerValidatable.new('live_code')
|
||||
obj.answer = { later: "" }
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/come back/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "live_code should FAIL without values" do
|
||||
obj = AnswerValidatable.new('live_code')
|
||||
obj.answer = { text: "", html: "", css: "", js: "" }
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/write.*code/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "live_code should PASS with text only" do
|
||||
obj = AnswerValidatable.new('live_code')
|
||||
obj.answer = { html: "", css: "", js: "", text: "reasons" }
|
||||
|
||||
assert obj.valid?
|
||||
assert obj.errors.messages.empty?
|
||||
end
|
||||
end
|
27
test/validators/answer_format_validator/radio_test.rb
Normal file
27
test/validators/answer_format_validator/radio_test.rb
Normal file
@ -0,0 +1,27 @@
|
||||
require 'test_helper'
|
||||
|
||||
class AnswerFormatValidatorTest < ActiveSupport::TestCase
|
||||
test "radio should pass with string" do
|
||||
obj = AnswerValidatable.new('radio')
|
||||
obj.answer = 'option-1'
|
||||
|
||||
assert obj.valid?
|
||||
assert obj.errors.messages.empty?
|
||||
end
|
||||
|
||||
test "radio should FAIL with nil" do
|
||||
obj = AnswerValidatable.new('radio')
|
||||
obj.answer = nil
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/select.*answer/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "radio should FAIL with empty string" do
|
||||
obj = AnswerValidatable.new('radio')
|
||||
obj.answer = ''
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/select.*answer/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
end
|
35
test/validators/answer_format_validator/text_test.rb
Normal file
35
test/validators/answer_format_validator/text_test.rb
Normal file
@ -0,0 +1,35 @@
|
||||
require 'test_helper'
|
||||
|
||||
class AnswerFormatValidatorTest < ActiveSupport::TestCase
|
||||
test "text should PASS with string" do
|
||||
obj = AnswerValidatable.new('text')
|
||||
obj.answer = "this is a valid answer"
|
||||
|
||||
assert obj.valid?
|
||||
assert obj.errors.messages.empty?
|
||||
end
|
||||
|
||||
test "text should FAIL with nil" do
|
||||
obj = AnswerValidatable.new('text')
|
||||
obj.answer = nil
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/enter.*answer/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "text should FAIL with empry string" do
|
||||
obj = AnswerValidatable.new('text')
|
||||
obj.answer = " "
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/enter.*answer/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
|
||||
test "text should FAIL with more than 1000 charactures" do
|
||||
obj = AnswerValidatable.new('text')
|
||||
obj.answer = SecureRandom.urlsafe_base64(1001)
|
||||
|
||||
refute obj.valid?
|
||||
assert_match(/char.*limit.*1000.$/, obj.errors.messages[:answer][0])
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user