require 'test_helper' class InputOptionsPresenceValidatorTest < ActiveSupport::TestCase test "should pass when inpute type not radio or checkbox" do obj = InputOptionsValidatable.new obj.input_type = "text" assert obj.valid? assert_equal 0, obj.errors.messages[:input_options].count end test "should fail when missing options for radio" do obj = InputOptionsValidatable.new obj.input_type = "radio" obj.input_options = nil obj.valid? refute obj.errors.messages.empty?, 'needs an error message' assert_match(/provide.*option/i, obj.errors.messages[:input_options].join) end test "should pass when provided options for radio" do obj = InputOptionsValidatable.new obj.input_type = "radio" obj.input_options = ['one', 'two', nil] assert obj.valid? assert_equal 0, obj.errors.messages[:input_options].count end test "should fail when missing options for checkbox" do obj = InputOptionsValidatable.new obj.input_type = "checkbox" obj.input_options = nil obj.valid? refute obj.errors.messages.empty?, 'needs an error message' assert_match(/provide.*option/i, obj.errors.messages[:input_options].join) end test "should pass when provided options for checkbox" do obj = InputOptionsValidatable.new obj.input_type = "checkbox" obj.input_options = ['one', 'two', nil] assert obj.valid? assert_equal 0, obj.errors.messages[:input_options].count end end