diff --git a/app/controllers/internal/classified_listings_controller.rb b/app/controllers/internal/classified_listings_controller.rb
index 7c6ccad81..110f216ee 100644
--- a/app/controllers/internal/classified_listings_controller.rb
+++ b/app/controllers/internal/classified_listings_controller.rb
@@ -7,6 +7,7 @@ class Internal::ClassifiedListingsController < Internal::ApplicationController
ClassifiedListing.includes(%i[user classified_listing_category]).
page(params[:page]).order("bumped_at DESC").per(50)
+ @classified_listings = @classified_listings.published unless include_unpublished?
@classified_listings = @classified_listings.where(category: params[:filter]) if params[:filter].present?
end
@@ -46,4 +47,8 @@ class Internal::ClassifiedListingsController < Internal::ApplicationController
unpublish_listing if listing_params[:published] == "0"
publish_listing if listing_params[:published] == "1"
end
+
+ def include_unpublished?
+ params[:include_unpublished] == "1"
+ end
end
diff --git a/app/views/internal/classified_listings/index.html.erb b/app/views/internal/classified_listings/index.html.erb
index 4496311c2..d047c0ece 100644
--- a/app/views/internal/classified_listings/index.html.erb
+++ b/app/views/internal/classified_listings/index.html.erb
@@ -11,7 +11,12 @@
<%= label_tag(:filter, "Category") %>
- <%= select_tag(:filter, options_for_select([""] + ClassifiedListing.categories_available.keys, params[:filter])) %>
+ <%= select_tag(:filter, options_for_select(ClassifiedListing.categories_available.keys, params[:filter]), include_blank: true) %>
+
+
+ <%= label_tag(:include_unpublished, "Include unpublished listings") %>
+ <%= hidden_field_tag(:include_unpublished, 0) %>
+ <%= check_box_tag(:include_unpublished, 1, params[:include_unpublished] == "1") %>
<%= submit_tag("Filter") %>
diff --git a/spec/requests/internal/classified_listings_spec.rb b/spec/requests/internal/classified_listings_spec.rb
index 81b736b50..95569a5db 100644
--- a/spec/requests/internal/classified_listings_spec.rb
+++ b/spec/requests/internal/classified_listings_spec.rb
@@ -11,11 +11,25 @@ RSpec.describe "/internal/listings", type: :request do
end
it "clears listing cache" do
- put "/internal/listings/#{classified_listing.id}", params: {
+ put internal_listing_path(id: classified_listing.id), params: {
classified_listing: { title: "updated" }
}
sidekiq_perform_enqueued_jobs
expect(CacheBuster).to have_received(:bust_classified_listings)
end
+
+ describe "GET /internal/listings" do
+ let(:unpublished_listing) { create(:classified_listing, published: false) }
+
+ it "filters unpublished listings by default" do
+ get internal_listings_path
+ expect(response.body).not_to match(unpublished_listing.title)
+ end
+
+ it "includes unpublished listings when asked to" do
+ get internal_listings_path, params: { include_unpublished: "1" }
+ expect(response.body).to match(unpublished_listing.title)
+ end
+ end
end
end