From 6f071c135265d22028b0326bdff78ac3d1f41edf Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Mon, 31 Mar 2025 05:51:07 +0300 Subject: [PATCH] Replace geocoder with search resource --- .rubocop.yml | 1 - app/abilities/ability.rb | 2 +- app/controllers/searches/queries_controller.rb | 2 +- ...ocoder_controller.rb => searches_controller.rb} | 4 ++-- .../search.html.erb => searches/show.html.erb} | 0 config/locales/en.yml | 10 +++++----- config/routes.rb | 3 +-- test/abilities/abilities_test.rb | 6 +++--- ...troller_test.rb => searches_controller_test.rb} | 14 +++++++------- test/controllers/site_controller_test.rb | 2 +- 10 files changed, 21 insertions(+), 23 deletions(-) rename app/controllers/{geocoder_controller.rb => searches_controller.rb} (97%) rename app/views/{geocoder/search.html.erb => searches/show.html.erb} (100%) rename test/controllers/{geocoder_controller_test.rb => searches_controller_test.rb} (97%) diff --git a/.rubocop.yml b/.rubocop.yml index d084946e3..aa75d2d89 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -145,7 +145,6 @@ Rails/SpecificActionNames: - 'app/controllers/directions_controller.rb' - 'app/controllers/errors_controller.rb' - 'app/controllers/export_controller.rb' - - 'app/controllers/geocoder_controller.rb' - 'app/controllers/issues_controller.rb' - 'app/controllers/site_controller.rb' - 'app/controllers/traces_controller.rb' diff --git a/app/abilities/ability.rb b/app/abilities/ability.rb index 5de3d6b5e..b1c943812 100644 --- a/app/abilities/ability.rb +++ b/app/abilities/ability.rb @@ -10,7 +10,7 @@ class Ability can :search, :direction can [:index, :permalink, :edit, :help, :fixthemap, :offline, :export, :about, :communities, :preview, :copyright, :id], :site can [:finish, :embed], :export - can [:create, :search], :geocoder + can [:create, :read], :search if Settings.status != "database_offline" can [:read, :feed], Changeset diff --git a/app/controllers/searches/queries_controller.rb b/app/controllers/searches/queries_controller.rb index 9c130f10d..82745082c 100644 --- a/app/controllers/searches/queries_controller.rb +++ b/app/controllers/searches/queries_controller.rb @@ -2,7 +2,7 @@ module Searches class QueriesController < ApplicationController before_action :authorize_web before_action :set_locale - authorize_resource :class => :geocoder + authorize_resource :class => :search private diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/searches_controller.rb similarity index 97% rename from app/controllers/geocoder_controller.rb rename to app/controllers/searches_controller.rb index 1ff7ed2f9..0381d542d 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/searches_controller.rb @@ -1,4 +1,4 @@ -class GeocoderController < ApplicationController +class SearchesController < ApplicationController include NominatimMethods before_action :authorize_web @@ -9,7 +9,7 @@ class GeocoderController < ApplicationController before_action :normalize_params - def search + def show @sources = [] if params[:lat] && params[:lon] diff --git a/app/views/geocoder/search.html.erb b/app/views/searches/show.html.erb similarity index 100% rename from app/views/geocoder/search.html.erb rename to app/views/searches/show.html.erb diff --git a/config/locales/en.yml b/config/locales/en.yml index 7c9c19d46..d1eaa6b9a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -709,11 +709,6 @@ en: success: "You successfully unfollowed %{name}." not_followed: "You are not following %{name}." geocoder: - search: - title: - latlon: Internal - osm_nominatim: OpenStreetMap Nominatim - osm_nominatim_reverse: OpenStreetMap Nominatim search_osm_nominatim: prefix_format: "%{name}" prefix: @@ -1537,6 +1532,11 @@ en: township: "Township Boundary" village: "Village Boundary" searches: + show: + title: + latlon: Internal + osm_nominatim: OpenStreetMap Nominatim + osm_nominatim_reverse: OpenStreetMap Nominatim queries: create: no_results: "No results found" diff --git a/config/routes.rb b/config/routes.rb index f4d6c826f..93aa2f9fd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -333,8 +333,7 @@ OpenStreetMap::Application.routes.draw do end # geocoder - get "/search" => "geocoder#search" - resource :search, :only => [] do + resource :search, :only => :show do scope :module => :searches do resource :latlon_query, :only => :create resource :nominatim_query, :only => :create diff --git a/test/abilities/abilities_test.rb b/test/abilities/abilities_test.rb index 4219b41c0..a72e4d792 100644 --- a/test/abilities/abilities_test.rb +++ b/test/abilities/abilities_test.rb @@ -6,11 +6,11 @@ class AbilityTest < ActiveSupport::TestCase end class GuestAbilityTest < AbilityTest - test "geocoder permission for a guest" do + test "search permissions for a guest" do ability = Ability.new nil - [:create, :search].each do |action| - assert ability.can?(action, :geocoder), "should be able to #{action} geocoder" + [:create, :show].each do |action| + assert ability.can?(action, :search), "should be able to #{action} searches" end end diff --git a/test/controllers/geocoder_controller_test.rb b/test/controllers/searches_controller_test.rb similarity index 97% rename from test/controllers/geocoder_controller_test.rb rename to test/controllers/searches_controller_test.rb index 134101eba..51022bb4b 100644 --- a/test/controllers/geocoder_controller_test.rb +++ b/test/controllers/searches_controller_test.rb @@ -1,12 +1,12 @@ require "test_helper" -class GeocoderControllerTest < ActionDispatch::IntegrationTest +class SearchesControllerTest < ActionDispatch::IntegrationTest ## # test all routes which lead to this controller def test_routes assert_routing( { :path => "/search", :method => :get }, - { :controller => "geocoder", :action => "search" } + { :controller => "searches", :action => "show" } ) end @@ -243,7 +243,7 @@ class GeocoderControllerTest < ActionDispatch::IntegrationTest ].each do |code| get search_path(:query => code) assert_response :success - assert_template :search + assert_template :show assert_template :layout => "map" assert_equal %w[osm_nominatim], assigns(:sources).pluck(:name) end @@ -316,7 +316,7 @@ class GeocoderControllerTest < ActionDispatch::IntegrationTest def latlon_check(query, lat, lon) get search_path(:query => query) assert_response :success - assert_template :search + assert_template :show assert_template :layout => "map" assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name) assert_nil @controller.params[:query] @@ -327,7 +327,7 @@ class GeocoderControllerTest < ActionDispatch::IntegrationTest get search_path(:query => query), :xhr => true assert_response :success - assert_template :search + assert_template :show assert_template :layout => "xhr" assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name) assert_nil @controller.params[:query] @@ -340,13 +340,13 @@ class GeocoderControllerTest < ActionDispatch::IntegrationTest def search_check(query, sources) get search_path(:query => query) assert_response :success - assert_template :search + assert_template :show assert_template :layout => "map" assert_equal sources, assigns(:sources).pluck(:name) get search_path(:query => query), :xhr => true assert_response :success - assert_template :search + assert_template :show assert_template :layout => "xhr" assert_equal sources, assigns(:sources).pluck(:name) end diff --git a/test/controllers/site_controller_test.rb b/test/controllers/site_controller_test.rb index 9246dcc1b..1a8af5275 100644 --- a/test/controllers/site_controller_test.rb +++ b/test/controllers/site_controller_test.rb @@ -97,7 +97,7 @@ class SiteControllerTest < ActionDispatch::IntegrationTest assert_redirected_to :controller => :notes, :action => :show, :id => 123 get root_path(:query => "test") - assert_redirected_to :controller => :geocoder, :action => :search, :query => "test" + assert_redirected_to search_path(:query => "test") get root_path(:lat => 4, :lon => 5) assert_redirected_to :controller => :site, :action => :index, :anchor => "map=5/4/5" -- 2.39.5