mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Make JSONFeedParserTests run.
This commit is contained in:
@@ -33,7 +33,7 @@ public struct FeedParser {
|
||||
switch type {
|
||||
|
||||
case .jsonFeed:
|
||||
return nil // TODO: try JSONFeedParser.parse(parserData)
|
||||
return try JSONFeedParser.parse(parserData)
|
||||
|
||||
case .rssInJSON:
|
||||
return nil // TODO: try RSSInJSONParser.parse(parserData)
|
||||
|
||||
@@ -9,116 +9,116 @@
|
||||
import XCTest
|
||||
import FeedParser
|
||||
|
||||
//class JSONFeedParserTests: XCTestCase {
|
||||
//
|
||||
// func testInessentialPerformance() {
|
||||
//
|
||||
// // 0.001 sec on my 2012 iMac.
|
||||
// let d = parserData("inessential", "json", "http://inessential.com/")
|
||||
// self.measure {
|
||||
// let _ = try! FeedParser.parseSync(d)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func testDaringFireballPerformance() {
|
||||
//
|
||||
// // 0.009 sec on my 2012 iMac.
|
||||
// let d = parserData("DaringFireball", "json", "http://daringfireball.net/")
|
||||
// self.measure {
|
||||
// let _ = try! FeedParser.parseSync(d)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func testGettingFaviconAndIconURLs() async {
|
||||
//
|
||||
// let d = parserData("DaringFireball", "json", "http://daringfireball.net/")
|
||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
||||
//
|
||||
// XCTAssert(parsedFeed.faviconURL == "https://daringfireball.net/graphics/favicon-64.png")
|
||||
// XCTAssert(parsedFeed.iconURL == "https://daringfireball.net/graphics/apple-touch-icon.png")
|
||||
// }
|
||||
//
|
||||
// func testAllThis() async {
|
||||
//
|
||||
// let d = parserData("allthis", "json", "http://leancrew.com/allthis/")
|
||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
||||
//
|
||||
// XCTAssertEqual(parsedFeed.items.count, 12)
|
||||
// }
|
||||
//
|
||||
// func testCurt() async {
|
||||
//
|
||||
// let d = parserData("curt", "json", "http://curtclifton.net/")
|
||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
||||
//
|
||||
// XCTAssertEqual(parsedFeed.items.count, 26)
|
||||
//
|
||||
// var didFindTwitterQuitterArticle = false
|
||||
// for article in parsedFeed.items {
|
||||
// if article.title == "Twitter Quitter" {
|
||||
// didFindTwitterQuitterArticle = true
|
||||
// XCTAssertTrue(article.contentHTML!.hasPrefix("<p>I’ve decided to close my Twitter account. William Van Hecke <a href=\"https://tinyletter.com/fet/letters/microcosmographia-xlxi-reasons-to-stay-on-twitter\">makes a convincing case</a>"))
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// XCTAssertTrue(didFindTwitterQuitterArticle)
|
||||
// }
|
||||
//
|
||||
// func testPixelEnvy() async {
|
||||
//
|
||||
// let d = parserData("pxlnv", "json", "http://pxlnv.com/")
|
||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
||||
// XCTAssertEqual(parsedFeed.items.count, 20)
|
||||
//
|
||||
// }
|
||||
//
|
||||
// func testRose() async {
|
||||
// let d = parserData("rose", "json", "http://www.rosemaryorchard.com/")
|
||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
||||
// XCTAssertEqual(parsedFeed.items.count, 84)
|
||||
// }
|
||||
//
|
||||
// func test3960() async {
|
||||
// let d = parserData("3960", "json", "http://journal.3960.org/")
|
||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
||||
// XCTAssertEqual(parsedFeed.items.count, 20)
|
||||
// XCTAssertEqual(parsedFeed.language, "de-DE")
|
||||
//
|
||||
// for item in parsedFeed.items {
|
||||
// XCTAssertEqual(item.language, "de-DE")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func testAuthors() async {
|
||||
// let d = parserData("authors", "json", "https://example.com/")
|
||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
||||
// XCTAssertEqual(parsedFeed.items.count, 4)
|
||||
//
|
||||
// let rootAuthors = Set([
|
||||
// ParsedAuthor(name: "Root Author 1", url: nil, avatarURL: nil, emailAddress: nil),
|
||||
// ParsedAuthor(name: "Root Author 2", url: nil, avatarURL: nil, emailAddress: nil)
|
||||
// ])
|
||||
// let itemAuthors = Set([
|
||||
// ParsedAuthor(name: "Item Author 1", url: nil, avatarURL: nil, emailAddress: nil),
|
||||
// ParsedAuthor(name: "Item Author 2", url: nil, avatarURL: nil, emailAddress: nil)
|
||||
// ])
|
||||
// let legacyItemAuthors = Set([
|
||||
// ParsedAuthor(name: "Legacy Item Author", url: nil, avatarURL: nil, emailAddress: nil)
|
||||
// ])
|
||||
//
|
||||
// XCTAssertEqual(parsedFeed.authors?.count, 2)
|
||||
// XCTAssertEqual(parsedFeed.authors, rootAuthors)
|
||||
//
|
||||
// let noAuthorsItem = parsedFeed.items.first { $0.uniqueID == "Item without authors" }!
|
||||
// XCTAssertEqual(noAuthorsItem.authors, nil)
|
||||
//
|
||||
// let legacyAuthorItem = parsedFeed.items.first { $0.uniqueID == "Item with legacy author" }!
|
||||
// XCTAssertEqual(legacyAuthorItem.authors, legacyItemAuthors)
|
||||
//
|
||||
// let modernAuthorsItem = parsedFeed.items.first { $0.uniqueID == "Item with modern authors" }!
|
||||
// XCTAssertEqual(modernAuthorsItem.authors, itemAuthors)
|
||||
//
|
||||
// let bothAuthorsItem = parsedFeed.items.first { $0.uniqueID == "Item with both" }!
|
||||
// XCTAssertEqual(bothAuthorsItem.authors, itemAuthors)
|
||||
// }
|
||||
//}
|
||||
class JSONFeedParserTests: XCTestCase {
|
||||
|
||||
func testInessentialPerformance() {
|
||||
|
||||
// 0.001 sec on my 2012 iMac.
|
||||
let d = parserData("inessential", "json", "http://inessential.com/")
|
||||
self.measure {
|
||||
let _ = try! FeedParser.parse(d)
|
||||
}
|
||||
}
|
||||
|
||||
func testDaringFireballPerformance() {
|
||||
|
||||
// 0.009 sec on my 2012 iMac.
|
||||
let d = parserData("DaringFireball", "json", "http://daringfireball.net/")
|
||||
self.measure {
|
||||
let _ = try! FeedParser.parse(d)
|
||||
}
|
||||
}
|
||||
|
||||
func testGettingFaviconAndIconURLs() async {
|
||||
|
||||
let d = parserData("DaringFireball", "json", "http://daringfireball.net/")
|
||||
let parsedFeed = try! FeedParser.parse(d)!
|
||||
|
||||
XCTAssert(parsedFeed.faviconURL == "https://daringfireball.net/graphics/favicon-64.png")
|
||||
XCTAssert(parsedFeed.iconURL == "https://daringfireball.net/graphics/apple-touch-icon.png")
|
||||
}
|
||||
|
||||
func testAllThis() async {
|
||||
|
||||
let d = parserData("allthis", "json", "http://leancrew.com/allthis/")
|
||||
let parsedFeed = try! FeedParser.parse(d)!
|
||||
|
||||
XCTAssertEqual(parsedFeed.items.count, 12)
|
||||
}
|
||||
|
||||
func testCurt() async {
|
||||
|
||||
let d = parserData("curt", "json", "http://curtclifton.net/")
|
||||
let parsedFeed = try! FeedParser.parse(d)!
|
||||
|
||||
XCTAssertEqual(parsedFeed.items.count, 26)
|
||||
|
||||
var didFindTwitterQuitterArticle = false
|
||||
for article in parsedFeed.items {
|
||||
if article.title == "Twitter Quitter" {
|
||||
didFindTwitterQuitterArticle = true
|
||||
XCTAssertTrue(article.contentHTML!.hasPrefix("<p>I’ve decided to close my Twitter account. William Van Hecke <a href=\"https://tinyletter.com/fet/letters/microcosmographia-xlxi-reasons-to-stay-on-twitter\">makes a convincing case</a>"))
|
||||
}
|
||||
}
|
||||
|
||||
XCTAssertTrue(didFindTwitterQuitterArticle)
|
||||
}
|
||||
|
||||
func testPixelEnvy() async {
|
||||
|
||||
let d = parserData("pxlnv", "json", "http://pxlnv.com/")
|
||||
let parsedFeed = try! FeedParser.parse(d)!
|
||||
XCTAssertEqual(parsedFeed.items.count, 20)
|
||||
|
||||
}
|
||||
|
||||
func testRose() async {
|
||||
let d = parserData("rose", "json", "http://www.rosemaryorchard.com/")
|
||||
let parsedFeed = try! FeedParser.parse(d)!
|
||||
XCTAssertEqual(parsedFeed.items.count, 84)
|
||||
}
|
||||
|
||||
func test3960() async {
|
||||
let d = parserData("3960", "json", "http://journal.3960.org/")
|
||||
let parsedFeed = try! FeedParser.parse(d)!
|
||||
XCTAssertEqual(parsedFeed.items.count, 20)
|
||||
XCTAssertEqual(parsedFeed.language, "de-DE")
|
||||
|
||||
for item in parsedFeed.items {
|
||||
XCTAssertEqual(item.language, "de-DE")
|
||||
}
|
||||
}
|
||||
|
||||
func testAuthors() async {
|
||||
let d = parserData("authors", "json", "https://example.com/")
|
||||
let parsedFeed = try! FeedParser.parse(d)!
|
||||
XCTAssertEqual(parsedFeed.items.count, 4)
|
||||
|
||||
let rootAuthors = Set([
|
||||
ParsedAuthor(name: "Root Author 1", url: nil, avatarURL: nil, emailAddress: nil),
|
||||
ParsedAuthor(name: "Root Author 2", url: nil, avatarURL: nil, emailAddress: nil)
|
||||
])
|
||||
let itemAuthors = Set([
|
||||
ParsedAuthor(name: "Item Author 1", url: nil, avatarURL: nil, emailAddress: nil),
|
||||
ParsedAuthor(name: "Item Author 2", url: nil, avatarURL: nil, emailAddress: nil)
|
||||
])
|
||||
let legacyItemAuthors = Set([
|
||||
ParsedAuthor(name: "Legacy Item Author", url: nil, avatarURL: nil, emailAddress: nil)
|
||||
])
|
||||
|
||||
XCTAssertEqual(parsedFeed.authors?.count, 2)
|
||||
XCTAssertEqual(parsedFeed.authors, rootAuthors)
|
||||
|
||||
let noAuthorsItem = parsedFeed.items.first { $0.uniqueID == "Item without authors" }!
|
||||
XCTAssertEqual(noAuthorsItem.authors, nil)
|
||||
|
||||
let legacyAuthorItem = parsedFeed.items.first { $0.uniqueID == "Item with legacy author" }!
|
||||
XCTAssertEqual(legacyAuthorItem.authors, legacyItemAuthors)
|
||||
|
||||
let modernAuthorsItem = parsedFeed.items.first { $0.uniqueID == "Item with modern authors" }!
|
||||
XCTAssertEqual(modernAuthorsItem.authors, itemAuthors)
|
||||
|
||||
let bothAuthorsItem = parsedFeed.items.first { $0.uniqueID == "Item with both" }!
|
||||
XCTAssertEqual(bothAuthorsItem.authors, itemAuthors)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user