From 10a4c5cf6e1165a9db6e9b87d0fa19d7f97b51bf Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 28 Aug 2024 18:18:26 +0100 Subject: [PATCH 1/1] Rename Feeds::ChangesetCommentsController to ChangesetComments::FeedsController We usually create nested controllers with the main controller as the module, and the nested controller as the specialization, e.g. Users::DeletionsController or Traces::IconsController. This then leaves the topic of whether the feed resource is plural, and whether we are then showing a singular feed or showing a list (index) of objects. The routes are carefully named so that we have `changesets_comments_feed_path` (the comments feed for all changesets) vs `changeset_comment_feed_path(changeset)` (the comments for a singular changeset). --- app/abilities/ability.rb | 2 +- .../feeds_controller.rb} | 8 +++---- .../feeds}/_comment.html.erb | 0 .../feeds}/_comment.rss.builder | 0 .../feeds/show.rss.builder} | 0 .../feeds}/timeout.atom.builder | 0 .../feeds}/timeout.html.erb | 0 config/locales/en.yml | 24 +++++++++---------- config/routes.rb | 10 ++++---- .../feeds_controller_test.rb} | 18 +++++++------- 10 files changed, 32 insertions(+), 30 deletions(-) rename app/controllers/{feeds/changeset_comments_controller.rb => changeset_comments/feeds_controller.rb} (91%) rename app/views/{feeds/changeset_comments => changeset_comments/feeds}/_comment.html.erb (100%) rename app/views/{feeds/changeset_comments => changeset_comments/feeds}/_comment.rss.builder (100%) rename app/views/{feeds/changeset_comments/index.rss.builder => changeset_comments/feeds/show.rss.builder} (100%) rename app/views/{feeds/changeset_comments => changeset_comments/feeds}/timeout.atom.builder (100%) rename app/views/{feeds/changeset_comments => changeset_comments/feeds}/timeout.html.erb (100%) rename test/controllers/{feeds/changeset_comments_controller_test.rb => changeset_comments/feeds_controller_test.rb} (74%) diff --git a/app/abilities/ability.rb b/app/abilities/ability.rb index 7ee75f3bc..f98b1b24a 100644 --- a/app/abilities/ability.rb +++ b/app/abilities/ability.rb @@ -16,7 +16,7 @@ class Ability if Settings.status != "database_offline" can [:index, :feed, :show], Changeset - can :index, ChangesetComment + can :show, ChangesetComment can [:confirm, :confirm_resend, :confirm_email], :confirmation can [:index, :rss, :show], DiaryEntry can :index, DiaryComment diff --git a/app/controllers/feeds/changeset_comments_controller.rb b/app/controllers/changeset_comments/feeds_controller.rb similarity index 91% rename from app/controllers/feeds/changeset_comments_controller.rb rename to app/controllers/changeset_comments/feeds_controller.rb index c6b355260..fef48bb18 100644 --- a/app/controllers/feeds/changeset_comments_controller.rb +++ b/app/controllers/changeset_comments/feeds_controller.rb @@ -1,16 +1,16 @@ -module Feeds - class ChangesetCommentsController < ApplicationController +module ChangesetComments + class FeedsController < ApplicationController before_action :authorize_web before_action :set_locale - authorize_resource + authorize_resource :changeset_comment before_action -> { check_database_readable(:need_api => true) } around_action :web_timeout ## # Get a feed of recent changeset comments - def index + def show if params[:changeset_id] # Extract the arguments changeset_id = params[:changeset_id].to_i diff --git a/app/views/feeds/changeset_comments/_comment.html.erb b/app/views/changeset_comments/feeds/_comment.html.erb similarity index 100% rename from app/views/feeds/changeset_comments/_comment.html.erb rename to app/views/changeset_comments/feeds/_comment.html.erb diff --git a/app/views/feeds/changeset_comments/_comment.rss.builder b/app/views/changeset_comments/feeds/_comment.rss.builder similarity index 100% rename from app/views/feeds/changeset_comments/_comment.rss.builder rename to app/views/changeset_comments/feeds/_comment.rss.builder diff --git a/app/views/feeds/changeset_comments/index.rss.builder b/app/views/changeset_comments/feeds/show.rss.builder similarity index 100% rename from app/views/feeds/changeset_comments/index.rss.builder rename to app/views/changeset_comments/feeds/show.rss.builder diff --git a/app/views/feeds/changeset_comments/timeout.atom.builder b/app/views/changeset_comments/feeds/timeout.atom.builder similarity index 100% rename from app/views/feeds/changeset_comments/timeout.atom.builder rename to app/views/changeset_comments/feeds/timeout.atom.builder diff --git a/app/views/feeds/changeset_comments/timeout.html.erb b/app/views/changeset_comments/feeds/timeout.html.erb similarity index 100% rename from app/views/feeds/changeset_comments/timeout.html.erb rename to app/views/changeset_comments/feeds/timeout.html.erb diff --git a/config/locales/en.yml b/config/locales/en.yml index 6b37d6761..a435eb8a4 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -246,18 +246,6 @@ en: entry: comment: Comment full: Full note - feeds: - changeset_comments: - comment: - comment: "New comment on changeset #%{changeset_id} by %{author}" - commented_at_by_html: "Updated %{when} by %{user}" - comments: - comment: "New comment on changeset #%{changeset_id} by %{author}" - index: - title_all: OpenStreetMap changeset discussion - title_particular: "OpenStreetMap changeset #%{changeset_id} discussion" - timeout: - sorry: "Sorry, the list of changeset comments you requested took too long to retrieve." account: deletions: show: @@ -426,6 +414,18 @@ en: old_relations: not_found: sorry: "Sorry, relation #%{id} version %{version} could not be found." + changeset_comments: + feeds: + comment: + comment: "New comment on changeset #%{changeset_id} by %{author}" + commented_at_by_html: "Updated %{when} by %{user}" + comments: + comment: "New comment on changeset #%{changeset_id} by %{author}" + show: + title_all: OpenStreetMap changeset discussion + title_particular: "OpenStreetMap changeset #%{changeset_id} discussion" + timeout: + sorry: "Sorry, the list of changeset comments you requested took too long to retrieve." changesets: changeset_paging_nav: showing_page: "Page %{page}" diff --git a/config/routes.rb b/config/routes.rb index 817202486..676afc0fb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -126,8 +126,8 @@ OpenStreetMap::Application.routes.draw do resources :changesets, :path => "changeset", :id => /\d+/, :only => :show do match :subscribe, :unsubscribe, :on => :member, :via => [:get, :post] - namespace :feeds, :path => "" do - resources :changeset_comments, :path => "comments/feed", :only => :index, :defaults => { :format => "rss" } + namespace :changeset_comments, :as => :comments, :path => :comments do + resource :feed, :only => :show, :defaults => { :format => "rss" } end end resources :notes, :path => "note", :id => /\d+/, :only => [:show, :new] @@ -167,8 +167,10 @@ OpenStreetMap::Application.routes.draw do get "/communities" => "site#communities" get "/history" => "changesets#index" get "/history/feed" => "changesets#feed", :defaults => { :format => :atom } - namespace :feeds, :path => "" do - resources :changeset_comments, :path => "/history/comments/feed", :only => :index, :defaults => { :format => "rss" } + scope "/history" do + namespace :changeset_comments, :path => :comments, :as => :changesets_comments do + resource :feed, :only => :show, :defaults => { :format => "rss" } + end end get "/export" => "site#export" get "/login" => "sessions#new" diff --git a/test/controllers/feeds/changeset_comments_controller_test.rb b/test/controllers/changeset_comments/feeds_controller_test.rb similarity index 74% rename from test/controllers/feeds/changeset_comments_controller_test.rb rename to test/controllers/changeset_comments/feeds_controller_test.rb index a4149b0d5..20db62cef 100644 --- a/test/controllers/feeds/changeset_comments_controller_test.rb +++ b/test/controllers/changeset_comments/feeds_controller_test.rb @@ -1,17 +1,17 @@ require "test_helper" -module Feeds - class ChangesetCommentsControllerTest < ActionDispatch::IntegrationTest +module ChangesetComments + class FeedsControllerTest < ActionDispatch::IntegrationTest ## # test all routes which lead to this controller def test_routes assert_routing( { :path => "/changeset/1/comments/feed", :method => :get }, - { :controller => "feeds/changeset_comments", :action => "index", :changeset_id => "1", :format => "rss" } + { :controller => "changeset_comments/feeds", :action => "show", :changeset_id => "1", :format => "rss" } ) assert_routing( { :path => "/history/comments/feed", :method => :get }, - { :controller => "feeds/changeset_comments", :action => "index", :format => "rss" } + { :controller => "changeset_comments/feeds", :action => "show", :format => "rss" } ) end @@ -21,7 +21,7 @@ module Feeds changeset = create(:changeset, :closed) create_list(:changeset_comment, 3, :changeset => changeset) - get feeds_changeset_comments_path(:format => "rss") + get changesets_comments_feed_path(:format => "rss") assert_response :success assert_equal "application/rss+xml", @response.media_type assert_select "rss", :count => 1 do @@ -30,7 +30,7 @@ module Feeds end end - get feeds_changeset_comments_path(:format => "rss", :limit => 2) + get changesets_comments_feed_path(:format => "rss", :limit => 2) assert_response :success assert_equal "application/rss+xml", @response.media_type assert_select "rss", :count => 1 do @@ -39,7 +39,7 @@ module Feeds end end - get changeset_feeds_changeset_comments_path(changeset, :format => "rss") + get changeset_comments_feed_path(changeset, :format => "rss") assert_response :success assert_equal "application/rss+xml", @response.media_type last_comment_id = -1 @@ -62,10 +62,10 @@ module Feeds ## # test comments feed def test_feed_bad_limit - get feeds_changeset_comments_path(:format => "rss", :limit => 0) + get changesets_comments_feed_path(:format => "rss", :limit => 0) assert_response :bad_request - get feeds_changeset_comments_path(:format => "rss", :limit => 100001) + get changesets_comments_feed_path(:format => "rss", :limit => 100001) assert_response :bad_request end end -- 2.39.5