From 9e439fcf6e2d901a46c9ad96127ab3ca26cf1ebd Mon Sep 17 00:00:00 2001 From: Christopher Wray <53663762+cwray-tech@users.noreply.github.com> Date: Tue, 3 Nov 2020 01:10:46 -0700 Subject: [PATCH] Fix Bug: Series index page showing series with 0 articles -#9658 (#11227) * added join to index collections controller * + collections test to not show empty series --- app/controllers/collections_controller.rb | 2 +- .../collections/user_views_collections_spec.rb | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/controllers/collections_controller.rb b/app/controllers/collections_controller.rb index e44c48618..18abeb6cb 100644 --- a/app/controllers/collections_controller.rb +++ b/app/controllers/collections_controller.rb @@ -1,7 +1,7 @@ class CollectionsController < ApplicationController def index @user = User.find_by!(username: params[:username]) - @collections = @user.collections.order(created_at: :desc) + @collections = @user.collections.joins(:articles).distinct.order(created_at: :desc) end def show diff --git a/spec/system/collections/user_views_collections_spec.rb b/spec/system/collections/user_views_collections_spec.rb index e078e5409..5e7f55742 100644 --- a/spec/system/collections/user_views_collections_spec.rb +++ b/spec/system/collections/user_views_collections_spec.rb @@ -2,17 +2,26 @@ require "rails_helper" RSpec.describe "Visiting collections", type: :system do let(:user) { create(:user) } - let!(:collection1) { create(:collection, :with_articles, user: user) } - let!(:collection2) { create(:collection, user: user) } + let!(:collection1_with_articles) { create(:collection, :with_articles, user: user) } + let!(:collection2_with_articles) { create(:collection, :with_articles, user: user) } + + let!(:collection1_without_articles) { create(:collection, user: user) } + let!(:collection2_without_articles) { create(:collection, user: user) } before do sign_in user visit user_series_path(user.username) end - it "shows all collections", :aggregate_failures do - [collection1, collection2].each do |collection| + it "shows all collections with articles", :aggregate_failures do + [collection1_with_articles, collection2_with_articles].each do |collection| expect(page.body).to have_link("#{collection.slug} (#{collection.articles.published.size} Part Series)") end end + + it "does not show collections without articles", :aggregate_failures do + [collection1_without_articles, collection2_without_articles].each do |collection| + expect(page.body).not_to have_link("#{collection.slug} (#{collection.articles.published.size} Part Series)") + end + end end