diff --git a/app/logical/d_text.rb b/app/logical/d_text.rb index a95c7293a..532b1bea5 100644 --- a/app/logical/d_text.rb +++ b/app/logical/d_text.rb @@ -28,7 +28,8 @@ class DText fragment = Nokogiri::HTML.fragment(html) fragment.css("a.dtext-wiki-link").each do |node| - name = node["href"][%r!\A/wiki_pages/(.*)\z!i, 1] + path = Addressable::URI.parse(node["href"]).path + name = path[%r!\A/wiki_pages/(.*)\z!i, 1] name = CGI.unescape(name) name = WikiPage.normalize_title(name) wiki = wiki_pages.find { |wiki| wiki.title == name } diff --git a/test/unit/d_text_test.rb b/test/unit/d_text_test.rb index 09769b09e..0c8cae591 100644 --- a/test/unit/d_text_test.rb +++ b/test/unit/d_text_test.rb @@ -55,6 +55,11 @@ class DTextTest < ActiveSupport::TestCase assert_match(/tag-type-#{Tag.categories.artist}/, DText.format_text("[[bkub]]")) end + should "parse wiki links correctly with the base_url option" do + create(:tag, name: "bkub", category: Tag.categories.artist, post_count: 42) + assert_match(/tag-type-#{Tag.categories.artist}/, DText.format_text("[[bkub]]", base_url: "http://www.example.com")) + end + should "mark links to nonexistent tags or wikis" do create(:tag, name: "no_wiki", post_count: 42) create(:tag, name: "empty_tag", post_count: 0) diff --git a/test/unit/dmail_test.rb b/test/unit/dmail_test.rb index e68d25dc8..7bffa9a23 100644 --- a/test/unit/dmail_test.rb +++ b/test/unit/dmail_test.rb @@ -153,9 +153,9 @@ class DmailTest < ActiveSupport::TestCase end should "send an email if the user wants it" do - user = FactoryBot.create(:user, :receive_email_notifications => true) + user = create(:user, receive_email_notifications: true) assert_difference("ActionMailer::Base.deliveries.size", 1) do - FactoryBot.create(:dmail, :to => user, :owner => user) + create(:dmail, to: user, owner: user, body: "test [[tagme]]") end end