diff --git a/app/controllers/classified_listings_controller.rb b/app/controllers/classified_listings_controller.rb index 87aaca1a7..628360e8f 100644 --- a/app/controllers/classified_listings_controller.rb +++ b/app/controllers/classified_listings_controller.rb @@ -12,6 +12,7 @@ class ClassifiedListingsController < ApplicationController @displayed_classified_listing = published_listings.find_by(slug: params[:slug]) if params[:slug] if params[:view] == "moderate" + not_found unless @displayed_classified_listing return redirect_to "/internal/listings/#{@displayed_classified_listing.id}/edit" end diff --git a/spec/requests/classified_listings_spec.rb b/spec/requests/classified_listings_spec.rb index 8368193ce..a53db700d 100644 --- a/spec/requests/classified_listings_spec.rb +++ b/spec/requests/classified_listings_spec.rb @@ -63,6 +63,19 @@ RSpec.describe "ClassifiedListings", type: :request do expect(response.body).not_to include(CGI.escapeHTML(expired_listing.title)) end end + + context "when view is moderate" do + it "redirects to internal/listings/:id/edit" do + get "/listings", params: { view: "moderate", slug: listing.slug } + expect(response.redirect_url).to include("/internal/listings/#{listing.id}/edit") + end + + it "without a slug raises an ActiveRecord::RecordNotFound error" do + expect do + get "/listings", params: { view: "moderate" } + end.to raise_error(ActiveRecord::RecordNotFound) + end + end end describe "GET /listings/new" do