Get AtomParserTests running and passing.
This commit is contained in:
parent
e1f3da7b09
commit
96cbc51d26
@ -40,11 +40,11 @@ public struct FeedParser {
|
|||||||
|
|
||||||
case .rss:
|
case .rss:
|
||||||
let feed = RSSParser.parsedFeed(with: parserData)
|
let feed = RSSParser.parsedFeed(with: parserData)
|
||||||
return RSSFeedTransformer.parsedFeed(with: feed)
|
return RSSFeedTransformer.parsedFeed(with: feed, feedType: .rss)
|
||||||
|
|
||||||
case .atom:
|
case .atom:
|
||||||
let feed = AtomParser.parsedFeed(with: parserData)
|
let feed = AtomParser.parsedFeed(with: parserData)
|
||||||
return RSSFeedTransformer.parsedFeed(with: feed)
|
return RSSFeedTransformer.parsedFeed(with: feed, feedType: .atom)
|
||||||
|
|
||||||
case .unknown, .notAFeed:
|
case .unknown, .notAFeed:
|
||||||
return nil
|
return nil
|
||||||
|
@ -35,6 +35,6 @@ final class RSSAuthor {
|
|||||||
|
|
||||||
func isEmpty() -> Bool {
|
func isEmpty() -> Bool {
|
||||||
|
|
||||||
name != nil || url != nil || avatarURL != nil || emailAddress != nil
|
name == nil && url == nil && avatarURL == nil && emailAddress == nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,10 @@ import Foundation
|
|||||||
struct RSSFeedTransformer {
|
struct RSSFeedTransformer {
|
||||||
|
|
||||||
/// Turn an internal RSSFeed into a public ParsedFeed.
|
/// Turn an internal RSSFeed into a public ParsedFeed.
|
||||||
static func parsedFeed(with rssFeed: RSSFeed) -> ParsedFeed {
|
static func parsedFeed(with feed: RSSFeed, feedType: FeedType) -> ParsedFeed {
|
||||||
|
|
||||||
let items = parsedItems(rssFeed.articles)
|
let items = parsedItems(feed.articles)
|
||||||
return ParsedFeed(type: .rss, title: rssFeed.title, homePageURL: rssFeed.link, feedURL: rssFeed.urlString, language: rssFeed.language, feedDescription: nil, nextURL: nil, iconURL: nil, faviconURL: nil, authors: nil, expired: false, hubs: nil, items: items)
|
return ParsedFeed(type: feedType, title: feed.title, homePageURL: feed.link, feedURL: feed.urlString, language: feed.language, feedDescription: nil, nextURL: nil, iconURL: nil, faviconURL: nil, authors: nil, expired: false, hubs: nil, items: items)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,99 +9,99 @@
|
|||||||
import XCTest
|
import XCTest
|
||||||
import FeedParser
|
import FeedParser
|
||||||
|
|
||||||
//class AtomParserTests: XCTestCase {
|
class AtomParserTests: XCTestCase {
|
||||||
//
|
|
||||||
// func testDaringFireballPerformance() {
|
func testDaringFireballPerformance() {
|
||||||
//
|
|
||||||
// // 0.009 sec on my 2012 iMac.
|
// 0.009 sec on my 2012 iMac.
|
||||||
// let d = parserData("DaringFireball", "atom", "http://daringfireball.net/") //It’s actually an Atom feed
|
let d = parserData("DaringFireball", "atom", "http://daringfireball.net/") //It’s actually an Atom feed
|
||||||
// self.measure {
|
self.measure {
|
||||||
// let _ = try! FeedParser.parseSync(d)
|
let _ = try! FeedParser.parse(d)
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// func testAllThisPerformance() {
|
func testAllThisPerformance() {
|
||||||
//
|
|
||||||
// // 0.003 sec on my 2012 iMac.
|
// 0.003 sec on my 2012 iMac.
|
||||||
// let d = parserData("allthis", "atom", "http://leancrew.com/all-this")
|
let d = parserData("allthis", "atom", "http://leancrew.com/all-this")
|
||||||
// self.measure {
|
self.measure {
|
||||||
// let _ = try! FeedParser.parseSync(d)
|
let _ = try! FeedParser.parse(d)
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// func testGettingHomePageLink() async {
|
func testGettingHomePageLink() {
|
||||||
//
|
|
||||||
// let d = parserData("allthis", "atom", "http://leancrew.com/all-this")
|
let d = parserData("allthis", "atom", "http://leancrew.com/all-this")
|
||||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
let parsedFeed = try! FeedParser.parse(d)!
|
||||||
//
|
|
||||||
// XCTAssertTrue(parsedFeed.homePageURL == "http://leancrew.com/all-this")
|
XCTAssertTrue(parsedFeed.homePageURL == "http://leancrew.com/all-this")
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// func testDaringFireball() async {
|
func testDaringFireball() {
|
||||||
//
|
|
||||||
// let d = parserData("DaringFireball", "atom", "http://daringfireball.net/") //It’s actually an Atom feed
|
let d = parserData("DaringFireball", "atom", "http://daringfireball.net/") //It’s actually an Atom feed
|
||||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
let parsedFeed = try! FeedParser.parse(d)!
|
||||||
//
|
|
||||||
// for article in parsedFeed.items {
|
for article in parsedFeed.items {
|
||||||
//
|
|
||||||
// XCTAssertNotNil(article.url)
|
XCTAssertNotNil(article.url)
|
||||||
//
|
|
||||||
// XCTAssertTrue(article.uniqueID.hasPrefix("tag:daringfireball.net,2017:/"))
|
XCTAssertTrue(article.uniqueID.hasPrefix("tag:daringfireball.net,2017:/"))
|
||||||
//
|
|
||||||
// XCTAssertEqual(article.authors!.count, 1) // TODO: parse Atom authors
|
XCTAssertEqual(article.authors!.count, 1) // TODO: parse Atom authors
|
||||||
// let author = article.authors!.first!
|
let author = article.authors!.first!
|
||||||
// if author.name == "Daring Fireball Department of Commerce" {
|
if author.name == "Daring Fireball Department of Commerce" {
|
||||||
// XCTAssertNil(author.url)
|
XCTAssertNil(author.url)
|
||||||
// }
|
}
|
||||||
// else {
|
else {
|
||||||
// XCTAssertEqual(author.name, "John Gruber")
|
XCTAssertEqual(author.name, "John Gruber")
|
||||||
// XCTAssertEqual(author.url, "http://daringfireball.net/")
|
XCTAssertEqual(author.url, "http://daringfireball.net/")
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// XCTAssertNotNil(article.datePublished)
|
XCTAssertNotNil(article.datePublished)
|
||||||
// XCTAssert(article.attachments == nil)
|
XCTAssert(article.attachments == nil)
|
||||||
//
|
|
||||||
// XCTAssertEqual(article.language, "en")
|
XCTAssertEqual(article.language, "en")
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// func test4fsodonlineAttachments() async {
|
func test4fsodonlineAttachments() {
|
||||||
//
|
|
||||||
// // Thanks to Marco for finding me some Atom podcast feeds. Apparently they’re super-rare.
|
// Thanks to Marco for finding me some Atom podcast feeds. Apparently they’re super-rare.
|
||||||
//
|
|
||||||
// let d = parserData("4fsodonline", "atom", "http://4fsodonline.blogspot.com/")
|
let d = parserData("4fsodonline", "atom", "http://4fsodonline.blogspot.com/")
|
||||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
let parsedFeed = try! FeedParser.parse(d)!
|
||||||
//
|
|
||||||
// for article in parsedFeed.items {
|
for article in parsedFeed.items {
|
||||||
//
|
|
||||||
// XCTAssertTrue(article.attachments!.count > 0)
|
XCTAssertTrue(article.attachments!.count > 0)
|
||||||
// let attachment = article.attachments!.first!
|
let attachment = article.attachments!.first!
|
||||||
//
|
|
||||||
// XCTAssertTrue(attachment.url.hasPrefix("http://www.blogger.com/video-play.mp4?"))
|
XCTAssertTrue(attachment.url.hasPrefix("http://www.blogger.com/video-play.mp4?"))
|
||||||
// XCTAssertNil(attachment.sizeInBytes)
|
XCTAssertNil(attachment.sizeInBytes)
|
||||||
// XCTAssertEqual(attachment.mimeType!, "video/mp4")
|
XCTAssertEqual(attachment.mimeType!, "video/mp4")
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// func testExpertOpinionENTAttachments() async {
|
func testExpertOpinionENTAttachments() {
|
||||||
//
|
|
||||||
// // Another from Marco.
|
// Another from Marco.
|
||||||
//
|
|
||||||
// let d = parserData("expertopinionent", "atom", "http://expertopinionent.typepad.com/my-blog/")
|
let d = parserData("expertopinionent", "atom", "http://expertopinionent.typepad.com/my-blog/")
|
||||||
// let parsedFeed = try! await FeedParser.parse(d)!
|
let parsedFeed = try! FeedParser.parse(d)!
|
||||||
//
|
|
||||||
// for article in parsedFeed.items {
|
for article in parsedFeed.items {
|
||||||
//
|
|
||||||
// guard let attachments = article.attachments else {
|
guard let attachments = article.attachments else {
|
||||||
// continue
|
continue
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// XCTAssertEqual(attachments.count, 1)
|
XCTAssertEqual(attachments.count, 1)
|
||||||
// let attachment = attachments.first!
|
let attachment = attachments.first!
|
||||||
//
|
|
||||||
// XCTAssertTrue(attachment.url.hasSuffix(".mp3"))
|
XCTAssertTrue(attachment.url.hasSuffix(".mp3"))
|
||||||
// XCTAssertNil(attachment.sizeInBytes)
|
XCTAssertNil(attachment.sizeInBytes)
|
||||||
// XCTAssertEqual(attachment.mimeType!, "audio/mpeg")
|
XCTAssertEqual(attachment.mimeType!, "audio/mpeg")
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user