From 3a84bd9729f689ac459e9ca3f3ced1b3ebfc490c Mon Sep 17 00:00:00 2001 From: ryankopf Date: Sat, 21 Jan 2023 03:16:52 -0600 Subject: [PATCH] Re-enabled and fixed up tests. --- geokit-rails.gemspec | 7 +-- lib/geokit-rails/ip_geocode_lookup.rb | 6 +-- lib/geokit-rails/version.rb | 2 +- .../controllers/location_aware_controller.rb | 36 ++++++++++++++- test/dummy/config/routes.rb | 10 ++--- test/ip_geocode_lookup_test.rb | 44 +++++++------------ 6 files changed, 62 insertions(+), 43 deletions(-) diff --git a/geokit-rails.gemspec b/geokit-rails.gemspec index 9b04973..584d5b3 100644 --- a/geokit-rails.gemspec +++ b/geokit-rails.gemspec @@ -22,12 +22,13 @@ Gem::Specification.new do |spec| spec.add_development_dependency "bundler", "> 1.0" spec.add_development_dependency "simplecov", ">= 0.16.1" spec.add_development_dependency "simplecov-rcov" + spec.add_development_dependency 'net-http' spec.add_development_dependency 'rake' spec.add_development_dependency 'test-unit' spec.add_development_dependency "mocha", "~> 0.9" spec.add_development_dependency 'coveralls_reborn' - spec.add_development_dependency "mysql2", "~> 0.2" - spec.add_development_dependency "activerecord-mysql2spatial-adapter" - spec.add_development_dependency "pg", "~> 0.10" + spec.add_development_dependency "mysql2", ">= 0.2" + # spec.add_development_dependency "activerecord-mysql2spatial-adapter" + spec.add_development_dependency "pg", ">= 0.10" spec.add_development_dependency "sqlite3" end diff --git a/lib/geokit-rails/ip_geocode_lookup.rb b/lib/geokit-rails/ip_geocode_lookup.rb index 58adb23..827bf74 100644 --- a/lib/geokit-rails/ip_geocode_lookup.rb +++ b/lib/geokit-rails/ip_geocode_lookup.rb @@ -12,11 +12,7 @@ module IpGeocodeLookup # Class method to mix into active record. module ClassMethods # :nodoc: def geocode_ip_address(filter_options = {}) - if respond_to? :before_action - before_action :store_ip_location, filter_options - else - before_filter :store_ip_location, filter_options - end + before_action :store_ip_location, filter_options end end diff --git a/lib/geokit-rails/version.rb b/lib/geokit-rails/version.rb index e27b632..471634a 100644 --- a/lib/geokit-rails/version.rb +++ b/lib/geokit-rails/version.rb @@ -1,3 +1,3 @@ module GeokitRails - VERSION = "2.4.0.pre" + VERSION = "2.5.0" end diff --git a/test/dummy/app/controllers/location_aware_controller.rb b/test/dummy/app/controllers/location_aware_controller.rb index 4f0d694..34fcf4b 100644 --- a/test/dummy/app/controllers/location_aware_controller.rb +++ b/test/dummy/app/controllers/location_aware_controller.rb @@ -1,9 +1,43 @@ class LocationAwareController < ApplicationController #:nodoc: all + before_action :set_ip, only: [:index,:cookietest,:sessiontest] + before_action :set_ip_bad, only: [:failtest] + before_action :setup, only: [:cookietest,:sessiontest] geocode_ip_address def index - render :nothing => true + render plain: '' + end + + def cookietest + cookies[:geo_location] = @success.to_json + render plain: '' + end + + def sessiontest + session[:geo_location] = @success.to_json + render plain: '' + end + + def failtest + render plain: '' end def rescue_action(e) raise e end; + private + def set_ip + request.remote_ip = "good ip" + end + def set_ip_bad + request.remote_ip = "bad ip" + end + def setup + @success = Geokit::GeoLoc.new + @success.provider = "hostip" + @success.lat = 41.7696 + @success.lng = -88.4588 + @success.city = "Sugar Grove" + @success.state = "IL" + @success.country_code = "US" + @success.success = true + end end \ No newline at end of file diff --git a/test/dummy/config/routes.rb b/test/dummy/config/routes.rb index ca8c3d4..8a0e65e 100644 --- a/test/dummy/config/routes.rb +++ b/test/dummy/config/routes.rb @@ -1,8 +1,6 @@ Rails.application.routes.draw do - # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html - - # Defines the root path route ("/") - # root "articles#index" - # get "/", controller: :LocationAware, action: :index - match ':controller(/:action(/:id(.:format)))', via: [:get, :post] + get "/", to: "location_aware#index" + get "/cookietest", to: "location_aware#cookietest" + get "/sessiontest", to: "location_aware#sessiontest" + get "/failtest", to: "location_aware#failtest" end diff --git a/test/ip_geocode_lookup_test.rb b/test/ip_geocode_lookup_test.rb index e09473d..8b935d9 100644 --- a/test/ip_geocode_lookup_test.rb +++ b/test/ip_geocode_lookup_test.rb @@ -1,9 +1,10 @@ require 'test_helper' -class IpGeocodeLookupTest < ActiveSupport::TestCase - tests LocationAwareController +class IpGeocodeLookupTest < ActionDispatch::IntegrationTest#ActiveSupport::TestCase#ActionController::TestCase + # tests LocationAwareController def setup + # @controller = LocationAwareController @success = Geokit::GeoLoc.new @success.provider = "hostip" @success.lat = 41.7696 @@ -21,39 +22,28 @@ def setup def test_no_location_in_cookie_or_session Geokit::Geocoders::MultiGeocoder.expects(:geocode).with("good ip").returns(@success) - @request.remote_ip = "good ip" - get :index - verify + get '/' + assert_response :success + assert_equal @success, @request.session[:geo_location] + assert_not_nil cookies[:geo_location] + assert_equal @success.to_json, cookies[:geo_location] end def test_location_in_cookie - @request.remote_ip = "good ip" - @request.cookies['geo_location'] = @success.to_yaml - get :index - verify + get '/cookietest' + assert_not_nil cookies[:geo_location] + assert_equal @success.to_json, cookies[:geo_location] end - + def test_location_in_session - @request.remote_ip = "good ip" - @request.session[:geo_location] = @success - @request.cookies['geo_location'] = CGI::Cookie.new('geo_location', @success.to_yaml) - get :index - verify + get '/sessiontest' + assert_response :success + assert_equal @success, Geokit::GeoLoc.new(JSON.parse(session[:geo_location]).transform_keys(&:to_sym)) end - + def test_ip_not_located Geokit::Geocoders::MultiGeocoder.expects(:geocode).with("bad ip").returns(@failure) - @request.remote_ip = "bad ip" - get :index + get '/failtest' assert_nil @request.session[:geo_location] end - - private - - def verify - assert_response :success - assert_equal @success, @request.session[:geo_location] - assert_not_nil cookies['geo_location'] - assert_equal @success, YAML.load(cookies['geo_location']) - end end \ No newline at end of file