diff --git a/spec/db_spec.cr b/spec/db_spec.cr index ec42f30..c619c9d 100644 --- a/spec/db_spec.cr +++ b/spec/db_spec.cr @@ -107,5 +107,9 @@ describe DB do DB.fetch_bool(HTTP::Params.parse("bar=true"), "foo", false).should be_false DB.fetch_bool(HTTP::Params.parse("bar=true"), "foo", true).should be_true + + expect_raises(ArgumentError, %(invalid "other" value for option "foo")) do + DB.fetch_bool(HTTP::Params.parse("foo=other"), "foo", true) + end end end diff --git a/src/db.cr b/src/db.cr index 43a90f4..74e3d98 100644 --- a/src/db.cr +++ b/src/db.cr @@ -123,10 +123,15 @@ module DB # :nodoc: def self.fetch_bool(params : HTTP::Params, name, default : Bool) - if value = params[name]? - value.underscore == "true" - else + case (value = params[name]?).try &.downcase + when nil default + when "true" + true + when "false" + false + else + raise ArgumentError.new(%(invalid "#{value}" value for option "#{name}")) end end end