diff --git a/app/logical/source/url/fandom.rb b/app/logical/source/url/fandom.rb index 5f377bd4b..59ba9bd36 100644 --- a/app/logical/source/url/fandom.rb +++ b/app/logical/source/url/fandom.rb @@ -150,6 +150,10 @@ def image_url? domain == "nocookie.net" end + def bad_source? + !image_url? && file.blank? + end + def full_image_url if wiki_db_name.present? && file.present? subdir = Digest::MD5.hexdigest(file) diff --git a/test/unit/sources/fandom_test.rb b/test/unit/sources/fandom_test.rb index 930f98bf0..778797dd1 100644 --- a/test/unit/sources/fandom_test.rb +++ b/test/unit/sources/fandom_test.rb @@ -158,6 +158,17 @@ class FandomTest < ActiveSupport::TestCase assert(Source::URL.profile_url?("https://typemoon.fandom.com")) assert(Source::URL.profile_url?("https://genshin-impact.fandom.com/pt-br")) end + + should "identify bad sources correctly" do + assert_not(Source::URL.parse("https://vignette.wikia.nocookie.net/valkyriecrusade/images/c/c5/Crimson_Hatsune_H.png/revision/latest?cb=20180702031954").bad_source?) + assert_not(Source::URL.parse("https://typemoon.fandom.com/wiki/Tamamo-no-Mae?file=Caster_Extra_Takeuchi_design_1.png").bad_source?) + assert_not(Source::URL.parse("https://typemoon.fandom.com/wiki/File:Memories_of_Trifas.png").bad_source?) + + assert(Source::URL.parse("https://typemoon.fandom.com").bad_source?) + assert(Source::URL.parse("https://typemoon.fandom.com/wiki/User:Lemostr00").bad_source?) + assert(Source::URL.parse("https://typemoon.fandom.com/f/p/4400000000000077950").bad_source?) + assert(Source::URL.parse("https://genshin-impact.fandom.com/wiki/Ningguang/Gallery").bad_source?) + end end end end