diff --git a/lib/tel_selections.rb b/lib/tel_selections.rb index 6c266121462b04f9e7c4747bdd56973fa80d58e6..3006a63a94e760e27ca8f5588593c97df5d4d779 100644 --- a/lib/tel_selections.rb +++ b/lib/tel_selections.rb @@ -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 diff --git a/test/test_tel_selections.rb b/test/test_tel_selections.rb index f090c052646c07e007bcd8d53fbe7f0980d9d3bf..1285fd05dc99a78cc8f30a039d67d6a7ac77a0b5 100644 --- a/test/test_tel_selections.rb +++ b/test/test_tel_selections.rb @@ -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)