Files
danbooru/test/unit/sources/plurk_test.rb
evazion 23b8350320 sources: add image_url?, page_url?, and profile_url? methods.
Add methods to Source::URL for determining whether a URL is an image
URL, a page URL, or a profile URL.

Also add more source URL tests and fix various URL parsing bugs.
2022-05-01 21:01:36 -05:00

121 lines
5.5 KiB
Ruby

require "test_helper"
module Sources
class PlurkTest < ActiveSupport::TestCase
context "The source for a Plurk picture" do
setup do
@post_url = "https://www.plurk.com/p/om6zv4"
@adult_post_url = "https://www.plurk.com/p/omc64y"
@image_url = "https://images.plurk.com/5wj6WD0r6y4rLN0DL3sqag.jpg"
@profile_url = "https://www.plurk.com/redeyehare"
@post1 = Source::Extractor.find(@post_url)
@post2 = Source::Extractor.find(@image_url)
@post3 = Source::Extractor.find(@profile_url)
@post4 = Source::Extractor.find(@adult_post_url)
end
should "not raise errors" do
assert_nothing_raised { @post1.to_h }
assert_nothing_raised { @post2.to_h }
assert_nothing_raised { @post3.to_h }
assert_nothing_raised { @post4.to_h }
end
should "get the artist name" do
assert_equal("紅眼兔", @post1.artist_name)
assert_equal("redeyehare", @post1.tag_name)
assert_equal("BOW99", @post4.tag_name)
end
should "get profile url" do
assert_equal(@profile_url, @post1.profile_url)
end
should "get the image url" do
assert_equal([@image_url], @post1.image_urls)
assert_equal([@image_url], @post2.image_urls)
end
should "get the image urls for an adult post" do
images = %w[
https://images.plurk.com/yfnumBJqqoQt50Em6xKwf.png
https://images.plurk.com/5NaqqO3Yi6bQW1wKXq1Dc2.png
https://images.plurk.com/3HzNcbMhCozHPk5YY8j9fI.png
https://images.plurk.com/2e0duwn8BpSW9MGuUvbrim.png
https://images.plurk.com/1OuiMDp82hYPEUn64CWFFB.png
https://images.plurk.com/3F3KzZOabeMYkgTeseEZ0r.png
https://images.plurk.com/7onKKTAIXkY4pASszrBys8.png
https://images.plurk.com/6aotmjLGbtMLiI3slN7ODv.png
https://images.plurk.com/6pzn7jE2nkj9EV7H25L0x1.png
https://images.plurk.com/yA8egjDuhy0eNG9yxRj1d.png
https://images.plurk.com/55tbTkH3cKTTYkZe9fu1Pv.png
https://images.plurk.com/5z64F9uUipJ0fMJWXNGHTw.png
https://images.plurk.com/6cwurMe6jymEu6INzmyg74.png
https://images.plurk.com/7zyTReS8UVyCFYtU1DJRYt.png
https://images.plurk.com/1PiRWGzaXozU15Scx1ZC4T.png
https://images.plurk.com/2xzB5qacdLVV75GhaFifaY.png
https://images.plurk.com/7uQENFmFNtWSKF0AAQKffr.png
https://images.plurk.com/7ChGLokdAezvbEjPCLUr8f.png
https://images.plurk.com/3AzjLxynamDGxNDTq4wt5x.png
https://images.plurk.com/3SYjvKc3IBbz6ZXWeG1pY8.png
https://images.plurk.com/7bk2kYN2fEVV0kiT5qoiuO.png
https://images.plurk.com/6mgCwWjSqOfi0BtSg6THcZ.png
https://images.plurk.com/3BwtMvr6S13gr96r5TLIFd.png
https://images.plurk.com/22CPzkRM71frDR5eRMPthC.png
https://images.plurk.com/1IFScoxA7m0FXNu6XirBwa.jpg
https://images.plurk.com/5v1ZXQxbS7ocV4BybwbCSs.jpg
https://images.plurk.com/4n1og7pg4KP3wRYSKpFzF7.png
https://images.plurk.com/5gK1PyPTrVYoeZBr10lEYu.png
https://images.plurk.com/3m8YZS3D9vaAH8Lw1LDTix.png
https://images.plurk.com/3oy7joPrEFm0Wlo7NplXOl.png
https://images.plurk.com/2IBA93ghmCJCJT72mQyLUK.png
https://images.plurk.com/16jqEhVqtuLJwnRjpIDRCr.png
https://images.plurk.com/7cKzaSigAvKc6DKNxeGmnH.png
https://images.plurk.com/ypfkOMsC24hIPGSEWjJ8A.png
https://images.plurk.com/5qW11yr06e9u3t5Zt9Jxmm.png
https://images.plurk.com/4H5st1xsFDSFgLd7gNXgD8.png
https://images.plurk.com/4nf49mWygwQyrYriZ453Qx.png
https://images.plurk.com/2Y0TXcYZkni94j7yxxosV9.png
https://images.plurk.com/5ih71C9XNJDq88wzKbBdNp.png
https://images.plurk.com/UmoZjSHx0Y4NYa3mgKffU.png
https://images.plurk.com/4IHGG5mQNw95vqClFEBoOM.png
https://images.plurk.com/5J3bRPjGBZV8fDxo7cTwGs.png
https://images.plurk.com/3uAjR5oBfe4d6MFThFQ0Gt.png
https://images.plurk.com/3fFJ8RN3HkmfcuUdn7OpnQ.png
https://images.plurk.com/sxkaWnhmDrCSsUEg6Kn9Y.png
https://images.plurk.com/1f3W8JnHlwpt3OlT4ZJhiu.gif
https://images.plurk.com/5lNGKqPCf6opXu21f5DdbU.gif
]
assert_equal(images, @post4.image_urls)
end
should "download an image" do
assert_downloaded(627_697, @post1.image_urls.sole)
assert_downloaded(627_697, @post2.image_urls.sole)
end
should "find the correct artist" do
@artist = FactoryBot.create(:artist, name: "redeyehare", url_string: @profile_url)
assert_equal([@artist], @post1.artists)
@adult_artist = FactoryBot.create(:artist, name: "bow", url_string: "https://www.plurk.com/BOW99")
assert_equal([@adult_artist], @post4.artists)
end
end
should "Parse Plurk URLs correctly" do
assert(Source::URL.image_url?("https://images.plurk.com/5wj6WD0r6y4rLN0DL3sqag.jpg"))
assert(Source::URL.image_url?("https://images.plurk.com/mx_5wj6WD0r6y4rLN0DL3sqag.jpg"))
assert(Source::URL.page_url?("https://www.plurk.com/p/om6zv4"))
assert(Source::URL.page_url?("https://www.plurk.com/m/p/okxzae"))
assert(Source::URL.profile_url?("https://www.plurk.com/m/redeyehare"))
assert(Source::URL.profile_url?("https://www.plurk.com/u/ddks2923"))
assert(Source::URL.profile_url?("https://www.plurk.com/m/u/leiy1225"))
assert(Source::URL.profile_url?("https://www.plurk.com/s/u/salmonroe13"))
assert(Source::URL.profile_url?("https://www.plurk.com/redeyehare"))
end
end
end