diff --git a/test/unit/sources/tumblr_test.rb b/test/unit/sources/tumblr_test.rb index 30b9cb097..5469ef73d 100644 --- a/test/unit/sources/tumblr_test.rb +++ b/test/unit/sources/tumblr_test.rb @@ -7,223 +7,134 @@ module Sources end context "The source for a 'http://*.tumblr.com/post/*' photo post with a single image" do - setup do - @site = Source::Extractor.find("https://noizave.tumblr.com/post/162206271767") - end + commentary_desc = <<~EOS.chomp +

header

- should "get the artist name" do - assert_equal("noizave", @site.artist_name) - end +

plain bold italics strike

- should "get the profile" do - assert_equal("https://noizave.tumblr.com", @site.profile_url) - end + - should "get the tags" do - tags = ["tag", "red hair", "red-hair", "red_hair"] - assert_equal(tags, @site.tags.map(&:first)) - assert_equal(["red_hair", "tag"], @site.normalized_tags) - end +
  1. one
  2. +
  3. two
  4. +

quote

- should "get the commentary" do - desc = <<~EOS.chomp -

header

+

link

+ EOS -

plain bold italics strike

+ commentary_desc_dtext = <<~EOS.chomp + h2. header - + plain [b]bold[/b] [i]italics[/i] [s]strike[/s] -
  1. one
  2. -
  3. two
  4. -

quote

+ * one + * two -

link

- EOS + * one + * two - assert_nil(@site.artist_commentary_title) - assert_equal(desc, @site.artist_commentary_desc) - end + [quote]quote[/quote] - should "get the dtext-ified commentary" do - desc = <<~EOS.chomp - h2. header + "link":[http://www.google.com] + EOS - plain [b]bold[/b] [i]italics[/i] [s]strike[/s] - - * one - * two - - * one - * two - - [quote]quote[/quote] - - "link":[http://www.google.com] - EOS - - assert_equal(desc, @site.dtext_artist_commentary_desc) - end - - should "get the image url" do - assert_equal(["https://media.tumblr.com/3bbfcbf075ddf969c996641b264086fd/tumblr_os2buiIOt51wsfqepo1_1280.png"], @site.image_urls) - end - - should "get the page url" do - assert_equal("https://noizave.tumblr.com/post/162206271767", @site.page_url) - end - - should "get the artist" do - CurrentUser.user = FactoryBot.create(:user) - CurrentUser.ip_addr = "127.0.0.1" - - @artist = FactoryBot.create(:artist, name: "noizave", url_string: "https://noizave.tumblr.com/") - assert_equal([@artist], @site.artists) - end + strategy_should_work( + "https://noizave.tumblr.com/post/162206271767", + image_urls: ["https://media.tumblr.com/3bbfcbf075ddf969c996641b264086fd/tumblr_os2buiIOt51wsfqepo1_1280.png"], + page_url: "https://noizave.tumblr.com/post/162206271767", + artist_name: "noizave", + profile_url: "https://noizave.tumblr.com", + tags: ["tag", "red hair", "red-hair", "red_hair"], + normalized_tags: ["red_hair", "tag"], + artist_commentary_title: nil, + artist_commentary_desc: commentary_desc, + dtext_artist_commentary_desc: commentary_desc_dtext + ) end context "The source for a 'http://*.tumblr.com/image/*' image page" do - setup do - @site = Source::Extractor.find("https://noizave.tumblr.com/image/162206271767") - end - - should "get the image url" do - assert_equal(["https://media.tumblr.com/3bbfcbf075ddf969c996641b264086fd/tumblr_os2buiIOt51wsfqepo1_1280.png"], @site.image_urls) - end - - should "get the page url" do - assert_equal("https://noizave.tumblr.com/post/162206271767", @site.page_url) - end - - should "get the tags" do - tags = ["tag", "red hair", "red-hair", "red_hair"] - assert_equal(tags, @site.tags.map(&:first)) - assert_equal(["red_hair", "tag"], @site.normalized_tags) - end + strategy_should_work( + "https://noizave.tumblr.com/image/162206271767", + image_urls: ["https://media.tumblr.com/3bbfcbf075ddf969c996641b264086fd/tumblr_os2buiIOt51wsfqepo1_1280.png"], + page_url: "https://noizave.tumblr.com/post/162206271767", + tags: ["tag", "red hair", "red-hair", "red_hair"], + normalized_tags: ["red_hair", "tag"] + ) end context "The source for a 'http://*.media.tumblr.com/$hash/tumblr_$id_540.jpg' image" do - setup do - @url = "https://78.media.tumblr.com/7c4d2c6843466f92c3dd0516e749ec35/tumblr_orwwptNBCE1wsfqepo2_540.jpg" - @ref = "https://noizave.tumblr.com/post/162094447052" - end - - context "with a referer" do - should "get all the metadata" do - site = Source::Extractor.find(@url, @ref) - - assert_equal("noizave", site.artist_name) - assert_equal("https://noizave.tumblr.com", site.profile_url) - assert_equal(["tag1", "tag2"], site.tags.map(&:first)) - assert_equal(@ref, site.page_url) - assert_equal(["https://media.tumblr.com/7c4d2c6843466f92c3dd0516e749ec35/tumblr_orwwptNBCE1wsfqepo2_1280.jpg"], site.image_urls) - end - end - - context "without a referer" do - should "still find all the relevant information" do - site = Source::Extractor.find(@url) - - assert_equal("noizave", site.artist_name) - assert_equal("https://noizave.tumblr.com", site.profile_url) - assert_equal(["tag1", "tag2"], site.tags.map(&:first)) - assert_equal(@ref, site.page_url) - assert_equal(["https://media.tumblr.com/7c4d2c6843466f92c3dd0516e749ec35/tumblr_orwwptNBCE1wsfqepo2_1280.jpg"], site.image_urls) - end - end + strategy_should_work( + "https://78.media.tumblr.com/7c4d2c6843466f92c3dd0516e749ec35/tumblr_orwwptNBCE1wsfqepo2_540.jpg", + image_urls: ["https://media.tumblr.com/7c4d2c6843466f92c3dd0516e749ec35/tumblr_orwwptNBCE1wsfqepo2_1280.jpg"], + page_url: "https://noizave.tumblr.com/post/162094447052", + artist_name: "noizave", + profile_url: "https://noizave.tumblr.com", + tags: ["tag1", "tag2"] + ) end context "The source for a 'http://*.tumblr.com/post/*' text post with inline images" do - setup do - @site = Source::Extractor.find("https://noizave.tumblr.com/post/162221502947") - end - - should "get the image urls" do - urls = %w[ + strategy_should_work( + "https://noizave.tumblr.com/post/162221502947", + image_urls: %w[ https://media.tumblr.com/afed9f5b3c33c39dc8c967e262955de2/tumblr_inline_os2zhkfhY01v11u29_1280.png https://media.tumblr.com/7c4d2c6843466f92c3dd0516e749ec35/tumblr_inline_os2zkg02xH1v11u29_1280.jpg - ] - - assert_equal(urls.sort, @site.image_urls.sort) - end - - should "get the commentary" do - desc = %r{

description

} - assert_equal("test post", @site.artist_commentary_title) - assert_match(desc, @site.artist_commentary_desc) - end + ], + dtext_artist_commentary_title: "test post", + artist_commentary_desc: %r{

description

} + ) end context "A video post with inline images" do - should "get the video and inline images" do - url = "https://noizave.tumblr.com/post/162222617101" - site = Source::Extractor.find(url) - urls = %w[ + strategy_should_work( + "https://noizave.tumblr.com/post/162222617101", + image_urls: %w[ https://va.media.tumblr.com/tumblr_os31dkexhK1wsfqep.mp4 https://media.tumblr.com/afed9f5b3c33c39dc8c967e262955de2/tumblr_inline_os31dclyCR1v11u29_1280.png ] - - assert_equal(urls, site.image_urls) - assert_equal(url, site.page_url) - end + ) end context "The source for a 'http://*.tumblr.com/post/*' answer post with inline images" do - setup do - @site = Source::Extractor.find("https://noizave.tumblr.com/post/171237880542/test-ask") - end - - should "get the image urls" do - urls = ["https://media.tumblr.com/cb481f031010e8ddad564b2150149c9a/tumblr_inline_p4nxoyLrSh1v11u29_1280.png"] - assert_equal(urls, @site.image_urls) - end - - should "get the commentary" do - assert_equal("Anonymous asked: test ask", @site.artist_commentary_title) - assert_match("test answer", @site.artist_commentary_desc) - end - - should "get the page url" do - assert_equal("https://noizave.tumblr.com/post/171237880542", @site.page_url) - end + strategy_should_work( + "https://noizave.tumblr.com/post/171237880542/test-ask", + image_urls: ["https://media.tumblr.com/cb481f031010e8ddad564b2150149c9a/tumblr_inline_p4nxoyLrSh1v11u29_1280.png"], + artist_commentary_title: "Anonymous asked: test ask", + dtext_artist_commentary_desc: "test answer", + page_url: "https://noizave.tumblr.com/post/171237880542" + ) end context "A Tumblr post with new image URLs" do - should "return the correct image url" do - image_url = "https://64.media.tumblr.com/3dfdab77d913ad1ea59f22407d6ac6f3/b1764aa0f9c378d0-23/s1280x1920/46f4af7ec94456f8fef380ee6311eb81178ce7e9.jpg" - page_url = "https://make-do5.tumblr.com/post/619663949657423872" - strategy = Source::Extractor.find(image_url, page_url) - - assert_match(%r{/3dfdab77d913ad1ea59f22407d6ac6f3/b1764aa0f9c378d0-23/s\d+x\d+/}i, image_url) - assert_equal(page_url, strategy.page_url) - assert_downloaded(7_428_704, strategy.image_urls.sole) - end + strategy_should_work( + "https://64.media.tumblr.com/3dfdab77d913ad1ea59f22407d6ac6f3/b1764aa0f9c378d0-23/s1280x1920/46f4af7ec94456f8fef380ee6311eb81178ce7e9.jpg", + referer: "https://make-do5.tumblr.com/post/619663949657423872", + page_url: "https://make-do5.tumblr.com/post/619663949657423872", + image_urls: [%r{/3dfdab77d913ad1ea59f22407d6ac6f3/b1764aa0f9c378d0-23/s\d+x\d+/}i], + download_size: 7_428_704 + ) end context "A deleted tumblr post" do - should "extract the info from the url" do - site = Source::Extractor.find("http://shimetsukage.tumblr.com/post/176805588268/20180809-ssb-coolboy") - - assert_nothing_raised { site.to_h } - assert_equal("shimetsukage", site.artist_name) - assert_equal("https://shimetsukage.tumblr.com", site.profile_url) - assert_equal("https://shimetsukage.tumblr.com/post/176805588268", site.page_url) - assert_equal([], site.image_urls) - assert_equal([], site.tags) - end + strategy_should_work( + "http://shimetsukage.tumblr.com/post/176805588268/20180809-ssb-coolboy", + deleted: true, + artist_name: "shimetsukage", + profile_url: "https://shimetsukage.tumblr.com", + page_url: "https://shimetsukage.tumblr.com/post/176805588268", + image_urls: [], + tags: [] + ) end - context "A download for a 'http://*.media.tumblr.com/$hash/tumblr_$id_$size.png' image" do - should "find the largest image" do - %w[100 250 400 500 500h 540 640 1280].each do |size| - page = "https://natsuki-teru.tumblr.com/post/178728919271" - image = "https://66.media.tumblr.com/b9395771b2d0435fe4efee926a5a7d9c/tumblr_pg2wu1L9DM1trd056o2_#{size}.png" - full = "https://media.tumblr.com/b9395771b2d0435fe4efee926a5a7d9c/tumblr_pg2wu1L9DM1trd056o2_1280.png" - site = Source::Extractor.find(image, page) - - assert_equal([full], site.image_urls) - end + %w[100 250 400 500 500h 540 640 1280].each do |size| + context "A download for a 'http://*.media.tumblr.com/$hash/tumblr_$id_#{size}.png' image" do + strategy_should_work( + "https://66.media.tumblr.com/b9395771b2d0435fe4efee926a5a7d9c/tumblr_pg2wu1L9DM1trd056o2_#{size}.png", + referer: "https://natsuki-teru.tumblr.com/post/178728919271", + image_urls: ["https://media.tumblr.com/b9395771b2d0435fe4efee926a5a7d9c/tumblr_pg2wu1L9DM1trd056o2_1280.png"] + ) end end @@ -232,7 +143,7 @@ module Sources "https://64.media.tumblr.com/3bbfcbf075ddf969c996641b264086fd/tumblr_os2buiIOt51wsfqepo1_400.png", referer: "https://noizave.tumblr.com/post/162206271767", image_urls: ["https://media.tumblr.com/3bbfcbf075ddf969c996641b264086fd/tumblr_os2buiIOt51wsfqepo1_1280.png"], - download_size: 3655, + download_size: 3655 ) end @@ -241,7 +152,7 @@ module Sources "http://media.tumblr.com/tumblr_m24kbxqKAX1rszquso1_250.jpg", referer: "https://noizave.tumblr.com/post/162206271767", image_urls: ["https://media.tumblr.com/tumblr_m24kbxqKAX1rszquso1_1280.jpg"], - download_size: 105_963, + download_size: 105_963 ) end @@ -251,7 +162,7 @@ module Sources image_urls: ["https://media.tumblr.com/701a535af224f89684d2cfcc097575ef/tumblr_pjsx70RakC1y0gqjko1_1280.pnj"], page_url: nil, artist_name: nil, - download_size: 296_595, + download_size: 296_595 ) end @@ -261,7 +172,7 @@ module Sources image_urls: ["https://va.media.tumblr.com/tumblr_pgohk0TjhS1u7mrsl.mp4"], page_url: nil, artist_name: nil, - download_size: 7_960_082, + download_size: 7_960_082 ) end @@ -281,9 +192,9 @@ module Sources end should "parse Tumblr URLs correctly" do - refute(Source::URL.image_url?("https://tumblr.com")) - refute(Source::URL.image_url?("https://www.tumblr.com")) - refute(Source::URL.image_url?("https://yogurtmedia.tumblr.com/post/45732863347")) + assert_not(Source::URL.image_url?("https://tumblr.com")) + assert_not(Source::URL.image_url?("https://www.tumblr.com")) + assert_not(Source::URL.image_url?("https://yogurtmedia.tumblr.com/post/45732863347")) assert(Source::URL.image_url?("http://data.tumblr.com/07e7bba538046b2b586433976290ee1f/tumblr_o3gg44HcOg1r9pi29o1_raw.jpg")) assert(Source::URL.image_url?("https://40.media.tumblr.com/de018501416a465d898d24ad81d76358/tumblr_nfxt7voWDX1rsd4umo1_r23_1280.jpg")) @@ -304,8 +215,8 @@ module Sources assert(Source::URL.image_url?("https://66.media.tumblr.com/5a2c3fe25c977e2281392752ab971c90/3dbfaec9b9e0c2e3-92/s500x750/4f92bbaaf95c0b4e7970e62b1d2e1415859dd659.png")) assert(Source::URL.image_url?("https://25.media.tumblr.com/91719d337b218681abc48cdc24e")) - refute(Source::URL.page_url?("https://25.media.tumblr.com/91719d337b218681abc48cdc24e")) - refute(Source::URL.profile_url?("https://25.media.tumblr.com/91719d337b218681abc48cdc24e")) + assert_not(Source::URL.page_url?("https://25.media.tumblr.com/91719d337b218681abc48cdc24e")) + assert_not(Source::URL.profile_url?("https://25.media.tumblr.com/91719d337b218681abc48cdc24e")) end end end