Merge branch 'state-search'

Stephen Paul Weber created

* state-search:
  Finish state search and add test
  Add state search - for granularity & jmp-register

Change summary

lib/tel_selections.rb       | 24 ++++++++++++++++++------
test/test_tel_selections.rb |  5 +++++
2 files changed, 23 insertions(+), 6 deletions(-)

Detailed changes

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

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)