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).
This commit is contained in:
parent
a948f2bc24
commit
10a4c5cf6e
10 changed files with 32 additions and 30 deletions
|
@ -16,7 +16,7 @@ class Ability
|
||||||
|
|
||||||
if Settings.status != "database_offline"
|
if Settings.status != "database_offline"
|
||||||
can [:index, :feed, :show], Changeset
|
can [:index, :feed, :show], Changeset
|
||||||
can :index, ChangesetComment
|
can :show, ChangesetComment
|
||||||
can [:confirm, :confirm_resend, :confirm_email], :confirmation
|
can [:confirm, :confirm_resend, :confirm_email], :confirmation
|
||||||
can [:index, :rss, :show], DiaryEntry
|
can [:index, :rss, :show], DiaryEntry
|
||||||
can :index, DiaryComment
|
can :index, DiaryComment
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
module Feeds
|
module ChangesetComments
|
||||||
class ChangesetCommentsController < ApplicationController
|
class FeedsController < ApplicationController
|
||||||
before_action :authorize_web
|
before_action :authorize_web
|
||||||
before_action :set_locale
|
before_action :set_locale
|
||||||
|
|
||||||
authorize_resource
|
authorize_resource :changeset_comment
|
||||||
|
|
||||||
before_action -> { check_database_readable(:need_api => true) }
|
before_action -> { check_database_readable(:need_api => true) }
|
||||||
around_action :web_timeout
|
around_action :web_timeout
|
||||||
|
|
||||||
##
|
##
|
||||||
# Get a feed of recent changeset comments
|
# Get a feed of recent changeset comments
|
||||||
def index
|
def show
|
||||||
if params[:changeset_id]
|
if params[:changeset_id]
|
||||||
# Extract the arguments
|
# Extract the arguments
|
||||||
changeset_id = params[:changeset_id].to_i
|
changeset_id = params[:changeset_id].to_i
|
|
@ -246,18 +246,6 @@ en:
|
||||||
entry:
|
entry:
|
||||||
comment: Comment
|
comment: Comment
|
||||||
full: Full note
|
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:
|
account:
|
||||||
deletions:
|
deletions:
|
||||||
show:
|
show:
|
||||||
|
@ -426,6 +414,18 @@ en:
|
||||||
old_relations:
|
old_relations:
|
||||||
not_found:
|
not_found:
|
||||||
sorry: "Sorry, relation #%{id} version %{version} could not be 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:
|
changesets:
|
||||||
changeset_paging_nav:
|
changeset_paging_nav:
|
||||||
showing_page: "Page %{page}"
|
showing_page: "Page %{page}"
|
||||||
|
|
|
@ -126,8 +126,8 @@ OpenStreetMap::Application.routes.draw do
|
||||||
resources :changesets, :path => "changeset", :id => /\d+/, :only => :show do
|
resources :changesets, :path => "changeset", :id => /\d+/, :only => :show do
|
||||||
match :subscribe, :unsubscribe, :on => :member, :via => [:get, :post]
|
match :subscribe, :unsubscribe, :on => :member, :via => [:get, :post]
|
||||||
|
|
||||||
namespace :feeds, :path => "" do
|
namespace :changeset_comments, :as => :comments, :path => :comments do
|
||||||
resources :changeset_comments, :path => "comments/feed", :only => :index, :defaults => { :format => "rss" }
|
resource :feed, :only => :show, :defaults => { :format => "rss" }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
resources :notes, :path => "note", :id => /\d+/, :only => [:show, :new]
|
resources :notes, :path => "note", :id => /\d+/, :only => [:show, :new]
|
||||||
|
@ -167,8 +167,10 @@ OpenStreetMap::Application.routes.draw do
|
||||||
get "/communities" => "site#communities"
|
get "/communities" => "site#communities"
|
||||||
get "/history" => "changesets#index"
|
get "/history" => "changesets#index"
|
||||||
get "/history/feed" => "changesets#feed", :defaults => { :format => :atom }
|
get "/history/feed" => "changesets#feed", :defaults => { :format => :atom }
|
||||||
namespace :feeds, :path => "" do
|
scope "/history" do
|
||||||
resources :changeset_comments, :path => "/history/comments/feed", :only => :index, :defaults => { :format => "rss" }
|
namespace :changeset_comments, :path => :comments, :as => :changesets_comments do
|
||||||
|
resource :feed, :only => :show, :defaults => { :format => "rss" }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
get "/export" => "site#export"
|
get "/export" => "site#export"
|
||||||
get "/login" => "sessions#new"
|
get "/login" => "sessions#new"
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
require "test_helper"
|
require "test_helper"
|
||||||
|
|
||||||
module Feeds
|
module ChangesetComments
|
||||||
class ChangesetCommentsControllerTest < ActionDispatch::IntegrationTest
|
class FeedsControllerTest < ActionDispatch::IntegrationTest
|
||||||
##
|
##
|
||||||
# test all routes which lead to this controller
|
# test all routes which lead to this controller
|
||||||
def test_routes
|
def test_routes
|
||||||
assert_routing(
|
assert_routing(
|
||||||
{ :path => "/changeset/1/comments/feed", :method => :get },
|
{ :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(
|
assert_routing(
|
||||||
{ :path => "/history/comments/feed", :method => :get },
|
{ :path => "/history/comments/feed", :method => :get },
|
||||||
{ :controller => "feeds/changeset_comments", :action => "index", :format => "rss" }
|
{ :controller => "changeset_comments/feeds", :action => "show", :format => "rss" }
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ module Feeds
|
||||||
changeset = create(:changeset, :closed)
|
changeset = create(:changeset, :closed)
|
||||||
create_list(:changeset_comment, 3, :changeset => changeset)
|
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_response :success
|
||||||
assert_equal "application/rss+xml", @response.media_type
|
assert_equal "application/rss+xml", @response.media_type
|
||||||
assert_select "rss", :count => 1 do
|
assert_select "rss", :count => 1 do
|
||||||
|
@ -30,7 +30,7 @@ module Feeds
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get feeds_changeset_comments_path(:format => "rss", :limit => 2)
|
get changesets_comments_feed_path(:format => "rss", :limit => 2)
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_equal "application/rss+xml", @response.media_type
|
assert_equal "application/rss+xml", @response.media_type
|
||||||
assert_select "rss", :count => 1 do
|
assert_select "rss", :count => 1 do
|
||||||
|
@ -39,7 +39,7 @@ module Feeds
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get changeset_feeds_changeset_comments_path(changeset, :format => "rss")
|
get changeset_comments_feed_path(changeset, :format => "rss")
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_equal "application/rss+xml", @response.media_type
|
assert_equal "application/rss+xml", @response.media_type
|
||||||
last_comment_id = -1
|
last_comment_id = -1
|
||||||
|
@ -62,10 +62,10 @@ module Feeds
|
||||||
##
|
##
|
||||||
# test comments feed
|
# test comments feed
|
||||||
def test_feed_bad_limit
|
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
|
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
|
assert_response :bad_request
|
||||||
end
|
end
|
||||||
end
|
end
|
Loading…
Add table
Reference in a new issue