M lib/tel_selections.rb => lib/tel_selections.rb +18 -6
@@ 186,6 186,22 @@ class TelSelections
end
end
+ class State
+ Q.register(/\A[a-zA-Z]{2}\Z/, &method(:new))
+
+ STATE_MAP = {
+ "QC" => "PQ"
+ }.freeze
+
+ def initialize(state)
+ @state = STATE_MAP.fetch(state.upcase, state.upcase)
+ end
+
+ def iris_query
+ { state: @state }
+ end
+ end
+
class CityState
Q.register(/\A([^,]+)\s*,\s*([a-zA-Z]{2})\Z/, &method(:new))
@@ 202,17 218,13 @@ class TelSelections
"west durham" => "Durham"
}.freeze
- STATE_MAP = {
- "QC" => "PQ"
- }.freeze
-
def initialize(city, state)
@city = CITY_MAP.fetch(city.downcase, city)
- @state = STATE_MAP.fetch(state.upcase, state.upcase)
+ @state = State.new(state)
end
def iris_query
- { city: @city, state: @state }
+ @state.iris_query.merge(city: @city)
end
end
end
M test/test_tel_selections.rb => test/test_tel_selections.rb +5 -0
@@ 119,6 119,11 @@ class TelSelectionsTest < Minitest::Test
assert_equal({ localVanity: "mboa" }, q.iris_query)
end
+ def test_for_state
+ q = TelSelections::ChooseTel::Q.for("ON")
+ assert_equal({ state: "ON" }, q.iris_query)
+ end
+
def test_for_citystate
q = TelSelections::ChooseTel::Q.for("Toronto, ON")
assert_equal({ city: "Toronto", state: "ON" }, q.iris_query)