NetNewsWire/Frameworks/RSParser/RSParserTests/AtomParserTests.swift

111 lines
2.9 KiB
Swift
Raw Normal View History

2017-06-27 15:56:03 +02:00
//
// AtomParserTests.swift
// RSParser
//
// Created by Brent Simmons on 6/26/17.
// Copyright © 2017 Ranchero Software, LLC. All rights reserved.
//
import XCTest
import RSParser
class AtomParserTests: XCTestCase {
func testDaringFireballPerformance() {
// 0.009 sec on my 2012 iMac.
let d = parserData("DaringFireball", "atom", "http://daringfireball.net/") //Its actually an Atom feed
self.measure {
let _ = try! FeedParser.parse(d)
}
}
func testAllThisPerformance() {
// 0.003 sec on my 2012 iMac.
let d = parserData("allthis", "atom", "http://leancrew.com/all-this")
self.measure {
let _ = try! FeedParser.parse(d)
}
}
func testGettingHomePageLink() {
let d = parserData("allthis", "atom", "http://leancrew.com/all-this")
let parsedFeed = try! FeedParser.parse(d)!
XCTAssertTrue(parsedFeed.homePageURL == "http://leancrew.com/all-this")
}
func testDaringFireball() {
let d = parserData("DaringFireball", "atom", "http://daringfireball.net/") //Its actually an Atom feed
let parsedFeed = try! FeedParser.parse(d)!
for article in parsedFeed.items {
XCTAssertNotNil(article.externalURL)
if !article.title!.hasPrefix("") {
XCTAssertNotNil(article.url)
XCTAssert(article.url!.hasPrefix("https://daringfireball.net/"))
}
XCTAssertTrue(article.uniqueID.hasPrefix("tag:daringfireball.net,2017:/"))
XCTAssertEqual(article.authors!.count, 1) // TODO: parse Atom authors
2017-12-19 22:24:19 +01:00
let author = article.authors!.first!
if author.name == "Daring Fireball Department of Commerce" {
XCTAssertNil(author.url)
}
else {
XCTAssertEqual(author.name, "John Gruber")
XCTAssertEqual(author.url, "http://daringfireball.net/")
}
XCTAssertNotNil(article.datePublished)
XCTAssert(article.attachments == nil)
}
}
func test4fsodonlineAttachments() {
// Thanks to Marco for finding me some Atom podcast feeds. Apparently theyre super-rare.
let d = parserData("4fsodonline", "atom", "http://4fsodonline.blogspot.com/")
let parsedFeed = try! FeedParser.parse(d)!
for article in parsedFeed.items {
XCTAssertTrue(article.attachments!.count > 0)
let attachment = article.attachments!.first!
XCTAssertTrue(attachment.url.hasPrefix("http://www.blogger.com/video-play.mp4?"))
XCTAssertNil(attachment.sizeInBytes)
XCTAssertEqual(attachment.mimeType!, "video/mp4")
}
}
func testExpertOpinionENTAttachments() {
// Another from Marco.
let d = parserData("expertopinionent", "atom", "http://expertopinionent.typepad.com/my-blog/")
let parsedFeed = try! FeedParser.parse(d)!
for article in parsedFeed.items {
guard let attachments = article.attachments else {
continue
}
XCTAssertEqual(attachments.count, 1)
let attachment = attachments.first!
XCTAssertTrue(attachment.url.hasSuffix(".mp3"))
XCTAssertNil(attachment.sizeInBytes)
XCTAssertEqual(attachment.mimeType!, "audio/mpeg")
}
}
2017-06-27 15:56:03 +02:00
}