Skip to content

Commit

Permalink
Merge branch '7785-member-routes' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
gbp committed Jan 9, 2024
2 parents 68e2647 + f2ed33b commit fe50c2c
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 15 deletions.
12 changes: 6 additions & 6 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,10 @@ def matches?(request)
match '/request/:url_title/new' => 'request#show',
:as => :show_new_request,
:via => :get
match '/details/request/:url_title' => 'request#details',
match '/request/:url_title/details' => 'request#details',
:as => :details_request,
:via => :get
match '/similar/request/:url_title' => 'request#similar',
match '/request/:url_title/similar' => 'request#similar',
:as => :similar_request,
:via => :get

Expand Down Expand Up @@ -151,7 +151,7 @@ def matches?(request)
:as => :info_request_event,
:via => :get

match '/upload/request/:url_title' => 'request#upload_response',
match '/request/:url_title/upload' => 'request#upload_response',
:as => :upload_response,
:via => [:get, :post]
match '/request/:url_title/download' => 'request#download_entire_request',
Expand Down Expand Up @@ -395,7 +395,7 @@ def matches?(request)
:via => :get

#### Comment controller
match '/annotate/request/:url_title' => 'comment#new',
match '/request/:url_title/annotate' => 'comment#new',
:as => :new_comment,
:type => 'request',
:via => [:get, :post]
Expand All @@ -413,7 +413,7 @@ def matches?(request)
#### Track controller
# /track/ is for setting up an email alert for the item
# /feed/ is a direct RSS feed of the item
match '/:feed/request/:url_title' => 'track#track_request',
match '/request/:url_title/:feed' => 'track#track_request',
:as => :track_request,
:feed => /(track|feed)/,
:via => :get
Expand Down Expand Up @@ -504,7 +504,7 @@ def matches?(request)
match '/categorise/play' => 'request_game#play',
:as => :categorise_play,
:via => [:get, :post]
match '/categorise/request/:url_title' => 'request_game#show',
match '/request/:url_title/categorise' => 'request_game#show',
:as => :categorise_request,
:via => :get
match '/categorise/stop' => 'request_game#stop',
Expand Down
33 changes: 31 additions & 2 deletions config/routes/redirects.rb
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
info_request_redirect = redirect do |params, request|
# find request
info_request = InfoRequest.find(params.fetch(:id))
if params[:url_title]
info_request = InfoRequest.find_by(url_title: params[:url_title])
end
info_request ||= InfoRequest.find(params[:id]) if params[:id]
raise ActiveRecord::RecordNotFound unless info_request

# check if current user can read the request
ability = Ability.new(User.authenticate_from_session(request.session))
raise ActiveRecord::RecordNotFound if ability.cannot?(:read, info_request)

# split path components
prefix = params[:prefix]&.split('/') # prefix is optional
suffix = params[:suffix]&.split('/') # suffix is optional

# encode path components
encoded_parts = [
*params[:locale], 'request', info_request.url_title, *suffix
*params[:locale], 'request', info_request.url_title, *prefix, *suffix
].map do |part|
if RUBY_VERSION < '3.1'
URI.encode_www_form_component(part).gsub('+', '%20')
Expand Down Expand Up @@ -44,3 +49,27 @@
get '/request/:id(/*suffix)',
constraints: { id: /\d+/, suffix: %r(widget(/new)?) },
to: info_request_redirect

get '/:prefix/request/:url_title',
constraints: { prefix: 'details' },
to: info_request_redirect

get '/:prefix/request/:url_title',
constraints: { prefix: 'similar' },
to: info_request_redirect

get '/:prefix/request/:url_title',
constraints: { prefix: 'upload' },
to: info_request_redirect

get '/:prefix/request/:url_title',
constraints: { prefix: 'annotate' },
to: info_request_redirect

get '/:prefix/request/:url_title',
constraints: { prefix: /(track|feed)/ },
to: info_request_redirect

get '/:prefix/request/:url_title',
constraints: { prefix: 'categorise' },
to: info_request_redirect
2 changes: 2 additions & 0 deletions doc/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
## Highlighted Features

* Display metadata on admin attachment views (Graeme Porteous)
* Change request URL patterns to be member routes (Alexander Griffen, Graeme
Porteous)
* Change request URL patterns to only use titles rather than request IDs
(Alexander Griffen, Graeme Porteous)
* Colourise holding pen guess scores (Gareth Rees)
Expand Down
6 changes: 3 additions & 3 deletions spec/integration/track_alerts_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
user = FactoryBot.create(:user, last_daily_track_email: 3.days.ago)
user_session = login(user)
using_session(user_session) do
visit "track/request/#{info_request.url_title}"
visit "request/#{info_request.url_title}/track"
end

other_user = FactoryBot.create(:user)
Expand Down Expand Up @@ -67,13 +67,13 @@
locale: 'es')
user_session = login(user)
using_session(user_session) do
visit "es/track/request/#{info_request.url_title}"
visit "es/request/#{info_request.url_title}/track"
end

other_user = FactoryBot.create(:user, locale: 'en')
other_user_session = login(other_user)
using_session(other_user_session) do
visit "annotate/request/#{info_request.url_title}"
visit "request/#{info_request.url_title}/annotate"
fill_in "comment[body]", with: 'test comment'
click_button 'Preview your annotation'
click_button 'Post annotation'
Expand Down
2 changes: 1 addition & 1 deletion spec/jobs/notify_cache_job_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
allow(AlaveteliConfiguration).to receive(:varnish_hosts).
and_return(['varnish'])

stub_request(:purge, /^http:\/\/test\.host(\/(en|es|fr|en_GB))?\/(|body|((feed\/)?body|(feed\/|details\/)?request|(feed\/)?user)\/[a-z0-9_]+|user\/[a-z0-9_]+\/wall)$/).
stub_request(:purge, /^http:\/\/test\.host(\/(en|es|fr|en_GB))?\/(|body|((feed\/)?body|request|(feed\/)?user)\/[a-z0-9_]+(\/feed|\/details)?|user\/[a-z0-9_]+\/wall)$/).
to_return(status: 200, body: "", headers: {})
stub_request(:ban, 'http://test.host/').
with(headers:
Expand Down
4 changes: 2 additions & 2 deletions spec/models/info_request_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,9 @@
'/',
'/body/' + request.public_body.url_name,
'/request/' + request.url_title,
'/details/request/' + request.url_title,
'/request/' + request.url_title + '/details',
'^/list',
'/feed/request/' + request.url_title,
'/request/' + request.url_title + '/feed',
'^/feed/list/',
'/feed/body/' + request.public_body.url_name,
'/feed/user/' + request.user.url_name,
Expand Down
2 changes: 1 addition & 1 deletion spec/views/request_game/play.html.erb_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@

it 'should show the correct url for a request' do
render
expect(response).to include("/categorise/request/a_test_request")
expect(response).to include("/request/a_test_request/categorise")
end
end

0 comments on commit fe50c2c

Please sign in to comment.