11 Ağustos 2007 Cumartesi

Building drop down boxes using enum generated Constants

require 'constants'
module MapHelper
LOCAL_KEY =
FREE_ON_RAILS_KEY =
def key
case `hostname`.chomp
when 'localhost', 'rohan'

LOCAL_KEY
else
FREE_ON_RAILS_KEY
end
end
def tree_cover
build_options Constants::TreeCover
end
def gradient
build_options Constants::Gradient
end
def traffic_density
build_options Constants::TrafficDensity
end
def default(method)
eval "Constants::#{method}::DEFAULT"
end
private
def build_options(sym)
sym.constants.inject("") {str, value str + wrap(value) }
end
def wrap(option)
"<option value='#{option}'> #{option.downcase.capitalize} </option>"
end
end
// and the tests for this
require File.dirname(__FILE__) + '/../test_helper'
class MapHelperTest < Test::Unit::TestCase
include MapHelper
def test_options_for_combo_box_are_built_correctly
assert_tree_cover :GOOD
assert_gradient :DOWNSLOPE
assert_traffic_density :LOW
end
def test_defaulting
assert_default :TreeCover, :GOOD
assert_default :Gradient, :DOWNSLOPE
assert_default :TrafficDensity, :LOW
end
def assert_default(subject, const)
assert_equal const, default(subject)
end
def assert_tree_cover(const)
const = const.to_s
assert tree_cover.include?(option_string(const))
end
def assert_gradient(const)
const = const.to_s
assert gradient.include?(option_string(const))
end
def assert_traffic_density(const)
const = const.to_s
assert traffic_density.include?(option_string(const))
end
def option_string(const)
"<option value='#{const}'> #{const.downcase.capitalize} </option>"
end
end


0 Comments: