]> git.openstreetmap.org Git - rails.git/commitdiff
Rename Feeds::ChangesetCommentsController to ChangesetComments::FeedsController
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 28 Aug 2024 17:18:26 +0000 (18:18 +0100)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 28 Aug 2024 17:31:36 +0000 (18:31 +0100)
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
app/controllers/changeset_comments/feeds_controller.rb [moved from app/controllers/feeds/changeset_comments_controller.rb with 91% similarity]
app/views/changeset_comments/feeds/_comment.html.erb [moved from app/views/feeds/changeset_comments/_comment.html.erb with 100% similarity]
app/views/changeset_comments/feeds/_comment.rss.builder [moved from app/views/feeds/changeset_comments/_comment.rss.builder with 100% similarity]
app/views/changeset_comments/feeds/show.rss.builder [moved from app/views/feeds/changeset_comments/index.rss.builder with 100% similarity]
app/views/changeset_comments/feeds/timeout.atom.builder [moved from app/views/feeds/changeset_comments/timeout.atom.builder with 100% similarity]
app/views/changeset_comments/feeds/timeout.html.erb [moved from app/views/feeds/changeset_comments/timeout.html.erb with 100% similarity]
config/locales/en.yml
config/routes.rb
test/controllers/changeset_comments/feeds_controller_test.rb [moved from test/controllers/feeds/changeset_comments_controller_test.rb with 74% similarity]

index 7ee75f3bc4aa913b4291f92012f51093b14b32e1..f98b1b24ac354e3a2d9b9e6bcf861a73200c4f31 100644 (file)
@@ -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
similarity index 91%
rename from app/controllers/feeds/changeset_comments_controller.rb
rename to app/controllers/changeset_comments/feeds_controller.rb
index c6b35526016e42e3a4e3c0ed32c6192032552659..fef48bb188f885dbfac1188f0541002f16bba88b 100644 (file)
@@ -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
index 6b37d67616379fda0b791e5f75cb472ad5966be5..a435eb8a4dc722ae58aa18f3789fe3e9619c03e8 100644 (file)
@@ -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}"
index 817202486cd8a07a03bf996873fb04821cdda5a8..676afc0fb9aebee3226cf1b0a2eabaa1b8c3f96f 100644 (file)
@@ -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"
similarity index 74%
rename from test/controllers/feeds/changeset_comments_controller_test.rb
rename to test/controllers/changeset_comments/feeds_controller_test.rb
index a4149b0d55d6622c3f3662aa2cc345f86c4dbc13..20db62cefce8479bb56951aeebbb4135ab938459 100644 (file)
@@ -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