From 0c5452cdc34f908685233a371f260df772de8dcb Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 1 Oct 2018 19:47:39 -0500 Subject: [PATCH] Fix #3937: Blank lines in tagbox if certain taggroups are absent --- app/presenters/tag_set_presenter.rb | 2 +- test/unit/tag_set_presenter_test.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 test/unit/tag_set_presenter_test.rb diff --git a/app/presenters/tag_set_presenter.rb b/app/presenters/tag_set_presenter.rb index 42432d778..abffc282a 100644 --- a/app/presenters/tag_set_presenter.rb +++ b/app/presenters/tag_set_presenter.rb @@ -58,7 +58,7 @@ class TagSetPresenter < Presenter def split_tag_list_text(category_list: TagCategory.categorized_list) category_list.map do |category| tags_for_category(category).map(&:name).join(" ") - end.join(" \n") + end.reject(&:blank?).join(" \n") end def humanized_essential_tag_string(category_list: TagCategory.humanized_list, default: "") diff --git a/test/unit/tag_set_presenter_test.rb b/test/unit/tag_set_presenter_test.rb new file mode 100644 index 000000000..eaa898ed0 --- /dev/null +++ b/test/unit/tag_set_presenter_test.rb @@ -0,0 +1,27 @@ +require 'test_helper' + +class TagSetPresenterTest < ActiveSupport::TestCase + context "TagSetPresenter" do + setup do + FactoryBot.create(:tag, name: "bkub", category: Tag.categories.artist) + FactoryBot.create(:tag, name: "chen", category: Tag.categories.character) + FactoryBot.create(:tag, name: "cirno", category: Tag.categories.character) + FactoryBot.create(:tag, name: "solo", category: Tag.categories.general) + FactoryBot.create(:tag, name: "touhou", category: Tag.categories.copyright) + + @categories = %w[copyright character artist meta general] + end + + context "#split_tag_list_text method" do + should "list all categories in order" do + text = TagSetPresenter.new(%w[bkub chen cirno solo touhou]).split_tag_list_text(category_list: @categories) + assert_equal("touhou \nchen cirno \nbkub \nsolo", text) + end + + should "skip empty categories" do + text = TagSetPresenter.new(%w[bkub solo]).split_tag_list_text(category_list: @categories) + assert_equal("bkub \nsolo", text) + end + end + end +end