diff --git a/Modules/Parser/Tests/ParserTests/HTMLMetadataTests.swift b/Modules/Parser/Tests/ParserTests/HTMLMetadataTests.swift index 12343f615..4133a9a8c 100644 --- a/Modules/Parser/Tests/ParserTests/HTMLMetadataTests.swift +++ b/Modules/Parser/Tests/ParserTests/HTMLMetadataTests.swift @@ -7,146 +7,147 @@ // import XCTest +import HTMLParser -//class HTMLMetadataTests: XCTestCase { -// -// func testDaringFireball() { -// -// let d = parserData("DaringFireball", "html", "http://daringfireball.net/") -// let metadata = RSHTMLMetadataParser.htmlMetadata(with: d) -// -// XCTAssertEqual(metadata.favicons.first?.urlString, "http://daringfireball.net/graphics/favicon.ico?v=005") -// -// XCTAssertEqual(metadata.feedLinks.count, 1) -// -// let feedLink = metadata.feedLinks.first! -// XCTAssertNil(feedLink.title) -// XCTAssertEqual(feedLink.type, "application/atom+xml") -// XCTAssertEqual(feedLink.urlString, "http://daringfireball.net/feeds/main") -// } -// -// func testDaringFireballPerformance() { -// -// // 0.002 sec on my 2012 iMac -// let d = parserData("DaringFireball", "html", "http://daringfireball.net/") -// self.measure { -// let _ = RSHTMLMetadataParser.htmlMetadata(with: d) -// } -// } -// -// func testFurbo() { -// -// let d = parserData("furbo", "html", "http://furbo.org/") -// let metadata = RSHTMLMetadataParser.htmlMetadata(with: d) -// -// XCTAssertEqual(metadata.favicons.first?.urlString, "http://furbo.org/favicon.ico") -// -// XCTAssertEqual(metadata.feedLinks.count, 1) -// -// let feedLink = metadata.feedLinks.first! -// XCTAssertEqual(feedLink.title, "Iconfactory News Feed") -// XCTAssertEqual(feedLink.type, "application/rss+xml") -// } -// -// func testFurboPerformance() { -// -// // 0.001 sec on my 2012 iMac -// let d = parserData("furbo", "html", "http://furbo.org/") -// self.measure { -// let _ = RSHTMLMetadataParser.htmlMetadata(with: d) -// } -// } -// -// func testInessential() { -// -// let d = parserData("inessential", "html", "http://inessential.com/") -// let metadata = RSHTMLMetadataParser.htmlMetadata(with: d) -// -// XCTAssertNil(metadata.favicons.first?.urlString) -// -// XCTAssertEqual(metadata.feedLinks.count, 1) -// let feedLink = metadata.feedLinks.first! -// XCTAssertEqual(feedLink.title, "RSS") -// XCTAssertEqual(feedLink.type, "application/rss+xml") -// XCTAssertEqual(feedLink.urlString, "http://inessential.com/xml/rss.xml") -// -// XCTAssertEqual(metadata.appleTouchIcons.count, 0); -// } -// -// func testInessentialPerformance() { -// -// // 0.001 sec on my 2012 iMac -// let d = parserData("inessential", "html", "http://inessential.com/") -// self.measure { -// let _ = RSHTMLMetadataParser.htmlMetadata(with: d) -// } -// } -// -// func testCocoPerformance() { -// -// // 0.004 sec on my 2012 iMac -// let d = parserData("coco", "html", "https://www.theatlantic.com/entertainment/archive/2017/11/coco-is-among-pixars-best-movies-in-years/546695/") -// self.measure { -// let _ = RSHTMLMetadataParser.htmlMetadata(with: d) -// } -// } -// -// func testSixColors() { -// -// let d = parserData("sixcolors", "html", "http://sixcolors.com/") -// let metadata = RSHTMLMetadataParser.htmlMetadata(with: d) -// -// XCTAssertEqual(metadata.favicons.first?.urlString, "https://sixcolors.com/images/favicon.ico") -// -// XCTAssertEqual(metadata.feedLinks.count, 1); -// let feedLink = metadata.feedLinks.first! -// XCTAssertEqual(feedLink.title, "RSS"); -// XCTAssertEqual(feedLink.type, "application/rss+xml"); -// XCTAssertEqual(feedLink.urlString, "http://feedpress.me/sixcolors"); -// -// XCTAssertEqual(metadata.appleTouchIcons.count, 6); -// let icon = metadata.appleTouchIcons[3]; -// XCTAssertEqual(icon.rel, "apple-touch-icon"); -// XCTAssertEqual(icon.sizes, "120x120"); -// XCTAssertEqual(icon.urlString, "https://sixcolors.com/apple-touch-icon-120.png"); -// } -// -// func testSixColorsPerformance() { -// -// // 0.002 sec on my 2012 iMac -// let d = parserData("sixcolors", "html", "http://sixcolors.com/") -// self.measure { -// let _ = RSHTMLMetadataParser.htmlMetadata(with: d) -// } -// } -// -// func testCocoOGImage() { -// -// let d = parserData("coco", "html", "https://www.theatlantic.com/entertainment/archive/2017/11/coco-is-among-pixars-best-movies-in-years/546695/") -// let metadata = RSHTMLMetadataParser.htmlMetadata(with: d) -// let openGraphData = metadata.openGraphProperties -// let image = openGraphData.images.first! -// XCTAssert(image.url == "https://cdn.theatlantic.com/assets/media/img/mt/2017/11/1033101_first_full_length_trailer_arrives_pixars_coco/facebook.jpg?1511382177") -// } -// -// func testCocoTwitterImage() { -// -// let d = parserData("coco", "html", "https://www.theatlantic.com/entertainment/archive/2017/11/coco-is-among-pixars-best-movies-in-years/546695/") -// let metadata = RSHTMLMetadataParser.htmlMetadata(with: d) -// let twitterData = metadata.twitterProperties -// let imageURL = twitterData.imageURL! -// XCTAssert(imageURL == "https://cdn.theatlantic.com/assets/media/img/mt/2017/11/1033101_first_full_length_trailer_arrives_pixars_coco/facebook.jpg?1511382177") -// } -// -// func testYouTube() { -// // YouTube is a special case — the feed links appear after the head section, in the body section. -// let d = parserData("YouTubeTheVolvoRocks", "html", "https://www.youtube.com/user/TheVolvorocks") -// let metadata = RSHTMLMetadataParser.htmlMetadata(with: d) -// -// XCTAssertEqual(metadata.feedLinks.count, 1); -// let feedLink = metadata.feedLinks.first! -// XCTAssertEqual(feedLink.title, "RSS"); -// XCTAssertEqual(feedLink.type, "application/rss+xml"); -// XCTAssertEqual(feedLink.urlString, "https://www.youtube.com/feeds/videos.xml?channel_id=UCct7QF2jcWRY6dhXWMSq9LQ"); -// } -//} +final class HTMLMetadataTests: XCTestCase { + + func testDaringFireball() { + + let d = parserData("DaringFireball", "html", "http://daringfireball.net/") + let metadata = HTMLMetadataParser.metadata(with: d) + + XCTAssertEqual(metadata.favicons?.first?.urlString, "http://daringfireball.net/graphics/favicon.ico?v=005") + + XCTAssertEqual(metadata.feedLinks?.count, 1) + + let feedLink: HTMLMetadataFeedLink = (metadata.feedLinks?.first!)! + XCTAssertNil(feedLink.title) + XCTAssertEqual(feedLink.type, "application/atom+xml") + XCTAssertEqual(feedLink.urlString, "http://daringfireball.net/feeds/main") + } + + func testDaringFireballPerformance() { + + // 0.002 sec on my 2012 iMac + let d = parserData("DaringFireball", "html", "http://daringfireball.net/") + self.measure { + let _ = HTMLMetadataParser.metadata(with: d) + } + } + + func testFurbo() { + + let d = parserData("furbo", "html", "http://furbo.org/") + let metadata = HTMLMetadataParser.metadata(with: d) + + XCTAssertEqual(metadata.favicons?.first?.urlString, "http://furbo.org/favicon.ico") + + XCTAssertEqual(metadata.feedLinks?.count, 1) + + let feedLink = (metadata.feedLinks?.first!)! + XCTAssertEqual(feedLink.title, "Iconfactory News Feed") + XCTAssertEqual(feedLink.type, "application/rss+xml") + } + + func testFurboPerformance() { + + // 0.001 sec on my 2012 iMac + let d = parserData("furbo", "html", "http://furbo.org/") + self.measure { + let _ = HTMLMetadataParser.metadata(with: d) + } + } + + func testInessential() { + + let d = parserData("inessential", "html", "http://inessential.com/") + let metadata = HTMLMetadataParser.metadata(with: d) + + XCTAssertNil(metadata.favicons?.first?.urlString) + + XCTAssertEqual(metadata.feedLinks?.count, 1) + let feedLink = (metadata.feedLinks?.first!)! + XCTAssertEqual(feedLink.title, "RSS") + XCTAssertEqual(feedLink.type, "application/rss+xml") + XCTAssertEqual(feedLink.urlString, "http://inessential.com/xml/rss.xml") + + XCTAssertEqual(metadata.appleTouchIcons?.count ?? 0, 0); + } + + func testInessentialPerformance() { + + // 0.001 sec on my 2012 iMac + let d = parserData("inessential", "html", "http://inessential.com/") + self.measure { + let _ = HTMLMetadataParser.metadata(with: d) + } + } + + func testCocoPerformance() { + + // 0.004 sec on my 2012 iMac + let d = parserData("coco", "html", "https://www.theatlantic.com/entertainment/archive/2017/11/coco-is-among-pixars-best-movies-in-years/546695/") + self.measure { + let _ = HTMLMetadataParser.metadata(with: d) + } + } + + func testSixColors() { + + let d = parserData("sixcolors", "html", "http://sixcolors.com/") + let metadata = HTMLMetadataParser.metadata(with: d) + + XCTAssertEqual(metadata.favicons?.first?.urlString, "https://sixcolors.com/images/favicon.ico") + + XCTAssertEqual(metadata.feedLinks?.count, 1); + let feedLink = (metadata.feedLinks?.first!)! + XCTAssertEqual(feedLink.title, "RSS"); + XCTAssertEqual(feedLink.type, "application/rss+xml"); + XCTAssertEqual(feedLink.urlString, "http://feedpress.me/sixcolors"); + + XCTAssertEqual(metadata.appleTouchIcons!.count, 6); + let icon = metadata.appleTouchIcons![3]; + XCTAssertEqual(icon.rel, "apple-touch-icon"); + XCTAssertEqual(icon.sizes, "120x120"); + XCTAssertEqual(icon.urlString, "https://sixcolors.com/apple-touch-icon-120.png"); + } + + func testSixColorsPerformance() { + + // 0.002 sec on my 2012 iMac + let d = parserData("sixcolors", "html", "http://sixcolors.com/") + self.measure { + let _ = HTMLMetadataParser.metadata(with: d) + } + } + + func testCocoOGImage() { + + let d = parserData("coco", "html", "https://www.theatlantic.com/entertainment/archive/2017/11/coco-is-among-pixars-best-movies-in-years/546695/") + let metadata = HTMLMetadataParser.metadata(with: d) + let openGraphData = metadata.openGraphProperties! + let image = openGraphData.image! + XCTAssert(image.url == "https://cdn.theatlantic.com/assets/media/img/mt/2017/11/1033101_first_full_length_trailer_arrives_pixars_coco/facebook.jpg?1511382177") + } + + func testCocoTwitterImage() { + + let d = parserData("coco", "html", "https://www.theatlantic.com/entertainment/archive/2017/11/coco-is-among-pixars-best-movies-in-years/546695/") + let metadata = HTMLMetadataParser.metadata(with: d) + let twitterData = metadata.twitterProperties! + let imageURL = twitterData.imageURL! + XCTAssert(imageURL == "https://cdn.theatlantic.com/assets/media/img/mt/2017/11/1033101_first_full_length_trailer_arrives_pixars_coco/facebook.jpg?1511382177") + } + + func testYouTube() { + // YouTube is a special case — the feed links appear after the head section, in the body section. + let d = parserData("YouTubeTheVolvoRocks", "html", "https://www.youtube.com/user/TheVolvorocks") + let metadata = HTMLMetadataParser.metadata(with: d) + + XCTAssertEqual(metadata.feedLinks!.count, 1); + let feedLink = metadata.feedLinks!.first! + XCTAssertEqual(feedLink.title, "RSS"); + XCTAssertEqual(feedLink.type, "application/rss+xml"); + XCTAssertEqual(feedLink.urlString, "https://www.youtube.com/feeds/videos.xml?channel_id=UCct7QF2jcWRY6dhXWMSq9LQ"); + } +}