| @@ -29,8 +29,8 @@ import 'package:webfeed/webfeed.dart'; | |||||
| To parse string into `RssFeed` object use: | To parse string into `RssFeed` object use: | ||||
| ``` | ``` | ||||
| var rssFeed = new RssFeed.parse(xmlString); // for parsing RSS feed | |||||
| var atomFeed = new AtomFeed.parse(xmlString); // for parsing Atom feed | |||||
| var rssFeed = RssFeed.parse(xmlString); // for parsing RSS feed | |||||
| var atomFeed = AtomFeed.parse(xmlString); // for parsing Atom feed | |||||
| ``` | ``` | ||||
| ### Preview | ### Preview | ||||
| @@ -1,7 +1,4 @@ | |||||
| analyzer: | analyzer: | ||||
| language: | |||||
| enablePreviewDart2: true | |||||
| strong-mode: true | |||||
| errors: | errors: | ||||
| unused_import: error | unused_import: error | ||||
| unused_local_variable: error | unused_local_variable: error | ||||
| @@ -35,3 +32,4 @@ linter: | |||||
| - prefer_typing_uninitialized_variables | - prefer_typing_uninitialized_variables | ||||
| - slash_for_doc_comments | - slash_for_doc_comments | ||||
| - type_init_formals | - type_init_formals | ||||
| - unnecessary_new | |||||
| @@ -45,7 +45,7 @@ class AtomFeed { | |||||
| try { | try { | ||||
| feedElement = document.findElements("feed").first; | feedElement = document.findElements("feed").first; | ||||
| } on StateError { | } on StateError { | ||||
| throw new ArgumentError("feed not found"); | |||||
| throw ArgumentError("feed not found"); | |||||
| } | } | ||||
| return AtomFeed( | return AtomFeed( | ||||
| @@ -14,6 +14,6 @@ class AtomGenerator { | |||||
| var uri = element.getAttribute("uri"); | var uri = element.getAttribute("uri"); | ||||
| var version = element.getAttribute("version"); | var version = element.getAttribute("version"); | ||||
| var value = element.text; | var value = element.text; | ||||
| return new AtomGenerator(uri, version, value); | |||||
| return AtomGenerator(uri, version, value); | |||||
| } | } | ||||
| } | } | ||||
| @@ -15,7 +15,7 @@ class Category { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Category( | |||||
| return Category( | |||||
| scheme: element.getAttribute("scheme"), | scheme: element.getAttribute("scheme"), | ||||
| label: element.getAttribute("label"), | label: element.getAttribute("label"), | ||||
| value: element.text, | value: element.text, | ||||
| @@ -19,14 +19,14 @@ class Community { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Community( | |||||
| starRating: new StarRating.parse( | |||||
| return Community( | |||||
| starRating: StarRating.parse( | |||||
| findElementOrNull(element, "media:starRating"), | findElementOrNull(element, "media:starRating"), | ||||
| ), | ), | ||||
| statistics: new Statistics.parse( | |||||
| statistics: Statistics.parse( | |||||
| findElementOrNull(element, "media:statistics"), | findElementOrNull(element, "media:statistics"), | ||||
| ), | ), | ||||
| tags: new Tags.parse( | |||||
| tags: Tags.parse( | |||||
| findElementOrNull(element, "media:tags"), | findElementOrNull(element, "media:tags"), | ||||
| ), | ), | ||||
| ); | ); | ||||
| @@ -34,7 +34,7 @@ class Content { | |||||
| }); | }); | ||||
| factory Content.parse(XmlElement element) { | factory Content.parse(XmlElement element) { | ||||
| return new Content( | |||||
| return Content( | |||||
| url: element.getAttribute("url"), | url: element.getAttribute("url"), | ||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| fileSize: int.tryParse(element.getAttribute("fileSize") ?? "0"), | fileSize: int.tryParse(element.getAttribute("fileSize") ?? "0"), | ||||
| @@ -13,7 +13,7 @@ class Copyright { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Copyright( | |||||
| return Copyright( | |||||
| url: element.getAttribute("url"), | url: element.getAttribute("url"), | ||||
| value: element.text, | value: element.text, | ||||
| ); | ); | ||||
| @@ -12,7 +12,7 @@ class Credit { | |||||
| }); | }); | ||||
| factory Credit.parse(XmlElement element) { | factory Credit.parse(XmlElement element) { | ||||
| return new Credit( | |||||
| return Credit( | |||||
| role: element.getAttribute("role"), | role: element.getAttribute("role"), | ||||
| scheme: element.getAttribute("scheme"), | scheme: element.getAttribute("scheme"), | ||||
| value: element.text, | value: element.text, | ||||
| @@ -13,7 +13,7 @@ class Description { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Description( | |||||
| return Description( | |||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| value: element.text, | value: element.text, | ||||
| ); | ); | ||||
| @@ -18,12 +18,12 @@ class Embed { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Embed( | |||||
| return Embed( | |||||
| url: element.getAttribute("url"), | url: element.getAttribute("url"), | ||||
| width: int.tryParse(element.getAttribute("width") ?? "0"), | width: int.tryParse(element.getAttribute("width") ?? "0"), | ||||
| height: int.tryParse(element.getAttribute("height") ?? "0"), | height: int.tryParse(element.getAttribute("height") ?? "0"), | ||||
| params: element.findElements("media:param").map((e) { | params: element.findElements("media:param").map((e) { | ||||
| return new Param.parse(e); | |||||
| return Param.parse(e); | |||||
| }).toList(), | }).toList(), | ||||
| ); | ); | ||||
| } | } | ||||
| @@ -22,17 +22,17 @@ class Group { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Group( | |||||
| return Group( | |||||
| contents: element.findElements("media:content").map((e) { | contents: element.findElements("media:content").map((e) { | ||||
| return new Content.parse(e); | |||||
| return Content.parse(e); | |||||
| }).toList(), | }).toList(), | ||||
| credits: element.findElements("media:credit").map((e) { | credits: element.findElements("media:credit").map((e) { | ||||
| return new Credit.parse(e); | |||||
| return Credit.parse(e); | |||||
| }).toList(), | }).toList(), | ||||
| category: new Category.parse( | |||||
| category: Category.parse( | |||||
| findElementOrNull(element, "media:category"), | findElementOrNull(element, "media:category"), | ||||
| ), | ), | ||||
| rating: new Rating.parse( | |||||
| rating: Rating.parse( | |||||
| findElementOrNull(element, "media:rating"), | findElementOrNull(element, "media:rating"), | ||||
| ), | ), | ||||
| ); | ); | ||||
| @@ -13,7 +13,7 @@ class Hash { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Hash( | |||||
| return Hash( | |||||
| algo: element.getAttribute("algo"), | algo: element.getAttribute("algo"), | ||||
| value: element.text, | value: element.text, | ||||
| ); | ); | ||||
| @@ -15,7 +15,7 @@ class License { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new License( | |||||
| return License( | |||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| href: element.getAttribute("href"), | href: element.getAttribute("href"), | ||||
| value: element.text, | value: element.text, | ||||
| @@ -78,48 +78,48 @@ class Media { | |||||
| }); | }); | ||||
| factory Media.parse(XmlElement element) { | factory Media.parse(XmlElement element) { | ||||
| return new Media( | |||||
| group: new Group.parse( | |||||
| return Media( | |||||
| group: Group.parse( | |||||
| findElementOrNull(element, "media:group"), | findElementOrNull(element, "media:group"), | ||||
| ), | ), | ||||
| contents: element.findElements("media:content").map((e) { | contents: element.findElements("media:content").map((e) { | ||||
| return new Content.parse(e); | |||||
| return Content.parse(e); | |||||
| }).toList(), | }).toList(), | ||||
| credits: element.findElements("media:credit").map((e) { | credits: element.findElements("media:credit").map((e) { | ||||
| return new Credit.parse(e); | |||||
| return Credit.parse(e); | |||||
| }).toList(), | }).toList(), | ||||
| category: new Category.parse( | |||||
| category: Category.parse( | |||||
| findElementOrNull(element, "media:category"), | findElementOrNull(element, "media:category"), | ||||
| ), | ), | ||||
| rating: new Rating.parse( | |||||
| rating: Rating.parse( | |||||
| findElementOrNull(element, "media:rating"), | findElementOrNull(element, "media:rating"), | ||||
| ), | ), | ||||
| title: new Title.parse( | |||||
| title: Title.parse( | |||||
| findElementOrNull(element, "media:title"), | findElementOrNull(element, "media:title"), | ||||
| ), | ), | ||||
| description: new Description.parse( | |||||
| description: Description.parse( | |||||
| findElementOrNull(element, "media:description"), | findElementOrNull(element, "media:description"), | ||||
| ), | ), | ||||
| keywords: findElementOrNull(element, "media:keywords")?.text, | keywords: findElementOrNull(element, "media:keywords")?.text, | ||||
| thumbnails: element.findElements("media:thumbnail").map((e) { | thumbnails: element.findElements("media:thumbnail").map((e) { | ||||
| return new Thumbnail.parse(e); | |||||
| return Thumbnail.parse(e); | |||||
| }).toList(), | }).toList(), | ||||
| hash: new Hash.parse( | |||||
| hash: Hash.parse( | |||||
| findElementOrNull(element, "media:hash"), | findElementOrNull(element, "media:hash"), | ||||
| ), | ), | ||||
| player: new Player.parse( | |||||
| player: Player.parse( | |||||
| findElementOrNull(element, "media:player"), | findElementOrNull(element, "media:player"), | ||||
| ), | ), | ||||
| copyright: new Copyright.parse( | |||||
| copyright: Copyright.parse( | |||||
| findElementOrNull(element, "media:copyright"), | findElementOrNull(element, "media:copyright"), | ||||
| ), | ), | ||||
| text: new Text.parse( | |||||
| text: Text.parse( | |||||
| findElementOrNull(element, "media:text"), | findElementOrNull(element, "media:text"), | ||||
| ), | ), | ||||
| restriction: new Restriction.parse( | |||||
| restriction: Restriction.parse( | |||||
| findElementOrNull(element, "media:restriction"), | findElementOrNull(element, "media:restriction"), | ||||
| ), | ), | ||||
| community: new Community.parse( | |||||
| community: Community.parse( | |||||
| findElementOrNull(element, "media:community"), | findElementOrNull(element, "media:community"), | ||||
| ), | ), | ||||
| comments: findElementOrNull(element, "media:comments") | comments: findElementOrNull(element, "media:comments") | ||||
| @@ -128,7 +128,7 @@ class Media { | |||||
| return e.text; | return e.text; | ||||
| })?.toList() ?? | })?.toList() ?? | ||||
| [], | [], | ||||
| embed: new Embed.parse( | |||||
| embed: Embed.parse( | |||||
| findElementOrNull(element, "media:embed"), | findElementOrNull(element, "media:embed"), | ||||
| ), | ), | ||||
| responses: findElementOrNull(element, "media:responses") | responses: findElementOrNull(element, "media:responses") | ||||
| @@ -143,25 +143,25 @@ class Media { | |||||
| return e.text; | return e.text; | ||||
| })?.toList() ?? | })?.toList() ?? | ||||
| [], | [], | ||||
| status: new Status.parse( | |||||
| status: Status.parse( | |||||
| findElementOrNull(element, "media:status"), | findElementOrNull(element, "media:status"), | ||||
| ), | ), | ||||
| prices: element.findElements("media:price").map((e) { | prices: element.findElements("media:price").map((e) { | ||||
| return new Price.parse(e); | |||||
| return Price.parse(e); | |||||
| }).toList(), | }).toList(), | ||||
| license: new License.parse( | |||||
| license: License.parse( | |||||
| findElementOrNull(element, "media:license"), | findElementOrNull(element, "media:license"), | ||||
| ), | ), | ||||
| peerLink: new PeerLink.parse( | |||||
| peerLink: PeerLink.parse( | |||||
| findElementOrNull(element, "media:peerLink"), | findElementOrNull(element, "media:peerLink"), | ||||
| ), | ), | ||||
| rights: new Rights.parse( | |||||
| rights: Rights.parse( | |||||
| findElementOrNull(element, "media:rights"), | findElementOrNull(element, "media:rights"), | ||||
| ), | ), | ||||
| scenes: findElementOrNull(element, "media:scenes") | scenes: findElementOrNull(element, "media:scenes") | ||||
| ?.findElements("media:scene") | ?.findElements("media:scene") | ||||
| ?.map((e) { | ?.map((e) { | ||||
| return new Scene.parse(e); | |||||
| return Scene.parse(e); | |||||
| })?.toList() ?? | })?.toList() ?? | ||||
| [], | [], | ||||
| ); | ); | ||||
| @@ -13,7 +13,7 @@ class Param { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Param( | |||||
| return Param( | |||||
| name: element.getAttribute("name"), | name: element.getAttribute("name"), | ||||
| value: element.text, | value: element.text, | ||||
| ); | ); | ||||
| @@ -15,7 +15,7 @@ class PeerLink { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new PeerLink( | |||||
| return PeerLink( | |||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| href: element.getAttribute("href"), | href: element.getAttribute("href"), | ||||
| value: element.text, | value: element.text, | ||||
| @@ -17,7 +17,7 @@ class Player { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Player( | |||||
| return Player( | |||||
| url: element.getAttribute("url"), | url: element.getAttribute("url"), | ||||
| width: int.tryParse(element.getAttribute("width") ?? "0"), | width: int.tryParse(element.getAttribute("width") ?? "0"), | ||||
| height: int.tryParse(element.getAttribute("height") ?? "0"), | height: int.tryParse(element.getAttribute("height") ?? "0"), | ||||
| @@ -14,7 +14,7 @@ class Price { | |||||
| }); | }); | ||||
| factory Price.parse(XmlElement element) { | factory Price.parse(XmlElement element) { | ||||
| return new Price( | |||||
| return Price( | |||||
| price: double.tryParse(element.getAttribute("price") ?? "0"), | price: double.tryParse(element.getAttribute("price") ?? "0"), | ||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| info: element.getAttribute("info"), | info: element.getAttribute("info"), | ||||
| @@ -13,7 +13,7 @@ class Rating { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Rating( | |||||
| return Rating( | |||||
| scheme: element.getAttribute("scheme"), | scheme: element.getAttribute("scheme"), | ||||
| value: element.text, | value: element.text, | ||||
| ); | ); | ||||
| @@ -15,7 +15,7 @@ class Restriction { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Restriction( | |||||
| return Restriction( | |||||
| relationship: element.getAttribute("relationship"), | relationship: element.getAttribute("relationship"), | ||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| value: element.text, | value: element.text, | ||||
| @@ -11,7 +11,7 @@ class Rights { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Rights( | |||||
| return Rights( | |||||
| status: element.getAttribute("status"), | status: element.getAttribute("status"), | ||||
| ); | ); | ||||
| } | } | ||||
| @@ -18,7 +18,7 @@ class Scene { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Scene( | |||||
| return Scene( | |||||
| title: findElementOrNull(element, "sceneTitle")?.text, | title: findElementOrNull(element, "sceneTitle")?.text, | ||||
| description: findElementOrNull(element, "sceneDescription")?.text, | description: findElementOrNull(element, "sceneDescription")?.text, | ||||
| startTime: findElementOrNull(element, "sceneStartTime")?.text, | startTime: findElementOrNull(element, "sceneStartTime")?.text, | ||||
| @@ -14,7 +14,7 @@ class StarRating { | |||||
| }); | }); | ||||
| factory StarRating.parse(XmlElement element) { | factory StarRating.parse(XmlElement element) { | ||||
| return new StarRating( | |||||
| return StarRating( | |||||
| average: double.tryParse(element.getAttribute("average") ?? "0"), | average: double.tryParse(element.getAttribute("average") ?? "0"), | ||||
| count: int.tryParse(element.getAttribute("count") ?? "0"), | count: int.tryParse(element.getAttribute("count") ?? "0"), | ||||
| min: int.tryParse(element.getAttribute("min") ?? "0"), | min: int.tryParse(element.getAttribute("min") ?? "0"), | ||||
| @@ -10,7 +10,7 @@ class Statistics { | |||||
| }); | }); | ||||
| factory Statistics.parse(XmlElement element) { | factory Statistics.parse(XmlElement element) { | ||||
| return new Statistics( | |||||
| return Statistics( | |||||
| views: int.tryParse(element.getAttribute("views") ?? "0"), | views: int.tryParse(element.getAttribute("views") ?? "0"), | ||||
| favorites: int.tryParse(element.getAttribute("favorites") ?? "0"), | favorites: int.tryParse(element.getAttribute("favorites") ?? "0"), | ||||
| ); | ); | ||||
| @@ -13,7 +13,7 @@ class Status { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Status( | |||||
| return Status( | |||||
| state: element.getAttribute("state"), | state: element.getAttribute("state"), | ||||
| reason: element.getAttribute("reason"), | reason: element.getAttribute("reason"), | ||||
| ); | ); | ||||
| @@ -13,7 +13,7 @@ class Tags { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Tags( | |||||
| return Tags( | |||||
| tags: element.text, | tags: element.text, | ||||
| weight: int.tryParse(element.getAttribute("weight") ?? "1"), | weight: int.tryParse(element.getAttribute("weight") ?? "1"), | ||||
| ); | ); | ||||
| @@ -19,7 +19,7 @@ class Text { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Text( | |||||
| return Text( | |||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| lang: element.getAttribute("lang"), | lang: element.getAttribute("lang"), | ||||
| start: element.getAttribute("start"), | start: element.getAttribute("start"), | ||||
| @@ -14,7 +14,7 @@ class Thumbnail { | |||||
| }); | }); | ||||
| factory Thumbnail.parse(XmlElement element) { | factory Thumbnail.parse(XmlElement element) { | ||||
| return new Thumbnail( | |||||
| return Thumbnail( | |||||
| url: element.getAttribute("url"), | url: element.getAttribute("url"), | ||||
| width: element.getAttribute("width"), | width: element.getAttribute("width"), | ||||
| height: element.getAttribute("height"), | height: element.getAttribute("height"), | ||||
| @@ -13,7 +13,7 @@ class Title { | |||||
| if (element == null) { | if (element == null) { | ||||
| return null; | return null; | ||||
| } | } | ||||
| return new Title( | |||||
| return Title( | |||||
| type: element.getAttribute("type"), | type: element.getAttribute("type"), | ||||
| value: element.text, | value: element.text, | ||||
| ); | ); | ||||
| @@ -1,6 +1,6 @@ | |||||
| import 'package:xml/xml.dart'; | import 'package:xml/xml.dart'; | ||||
| final _imagesRegExp = new RegExp( | |||||
| final _imagesRegExp = RegExp( | |||||
| "<img\\s.*?src=(?:'|\")([^'\">]+)(?:'|\")", | "<img\\s.*?src=(?:'|\")([^'\">]+)(?:'|\")", | ||||
| multiLine: true, | multiLine: true, | ||||
| caseSensitive: false, | caseSensitive: false, | ||||
| @@ -6,18 +6,18 @@ import 'package:webfeed/webfeed.dart'; | |||||
| void main() { | void main() { | ||||
| test("parse Invalid.xml", () { | test("parse Invalid.xml", () { | ||||
| var xmlString = new File("test/xml/Invalid.xml").readAsStringSync(); | |||||
| var xmlString = File("test/xml/Invalid.xml").readAsStringSync(); | |||||
| try { | try { | ||||
| new AtomFeed.parse(xmlString); | |||||
| AtomFeed.parse(xmlString); | |||||
| fail("Should throw Argument Error"); | fail("Should throw Argument Error"); | ||||
| } on ArgumentError {} | } on ArgumentError {} | ||||
| }); | }); | ||||
| test("parse Atom.xml", () { | test("parse Atom.xml", () { | ||||
| var xmlString = new File("test/xml/Atom.xml").readAsStringSync(); | |||||
| var xmlString = File("test/xml/Atom.xml").readAsStringSync(); | |||||
| var feed = new AtomFeed.parse(xmlString); | |||||
| var feed = AtomFeed.parse(xmlString); | |||||
| expect(feed.id, "foo-bar-id"); | expect(feed.id, "foo-bar-id"); | ||||
| expect(feed.title, "Foo bar news"); | expect(feed.title, "Foo bar news"); | ||||
| @@ -89,9 +89,9 @@ void main() { | |||||
| expect(item.rights, "This is rights 1"); | expect(item.rights, "This is rights 1"); | ||||
| }); | }); | ||||
| test("parse Atom-Media.xml", () { | test("parse Atom-Media.xml", () { | ||||
| var xmlString = new File("test/xml/Atom-Media.xml").readAsStringSync(); | |||||
| var xmlString = File("test/xml/Atom-Media.xml").readAsStringSync(); | |||||
| var feed = new AtomFeed.parse(xmlString); | |||||
| var feed = AtomFeed.parse(xmlString); | |||||
| expect(feed.id, "foo-bar-id"); | expect(feed.id, "foo-bar-id"); | ||||
| expect(feed.title, "Foo bar news"); | expect(feed.title, "Foo bar news"); | ||||
| expect(feed.updated, DateTime.utc(2018, 4, 6, 13, 2, 46)); | expect(feed.updated, DateTime.utc(2018, 4, 6, 13, 2, 46)); | ||||
| @@ -8,17 +8,17 @@ import 'package:webfeed/webfeed.dart'; | |||||
| void main() { | void main() { | ||||
| test("parse Invalid.xml", () { | test("parse Invalid.xml", () { | ||||
| var xmlString = new File("test/xml/Invalid.xml").readAsStringSync(); | |||||
| var xmlString = File("test/xml/Invalid.xml").readAsStringSync(); | |||||
| try { | try { | ||||
| new RssFeed.parse(xmlString); | |||||
| RssFeed.parse(xmlString); | |||||
| fail("Should throw Argument Error"); | fail("Should throw Argument Error"); | ||||
| } on ArgumentError {} | } on ArgumentError {} | ||||
| }); | }); | ||||
| test("parse RSS.xml", () { | test("parse RSS.xml", () { | ||||
| var xmlString = new File("test/xml/RSS.xml").readAsStringSync(); | |||||
| var xmlString = File("test/xml/RSS.xml").readAsStringSync(); | |||||
| var feed = new RssFeed.parse(xmlString); | |||||
| var feed = RssFeed.parse(xmlString); | |||||
| expect(feed.title, "News - Foo bar News"); | expect(feed.title, "News - Foo bar News"); | ||||
| expect(feed.description, | expect(feed.description, | ||||
| @@ -90,9 +90,9 @@ void main() { | |||||
| feed.items.first.content.images.first, "https://test.com/image_link"); | feed.items.first.content.images.first, "https://test.com/image_link"); | ||||
| }); | }); | ||||
| test("parse RSS-Media.xml", () { | test("parse RSS-Media.xml", () { | ||||
| var xmlString = new File("test/xml/RSS-Media.xml").readAsStringSync(); | |||||
| var xmlString = File("test/xml/RSS-Media.xml").readAsStringSync(); | |||||
| var feed = new RssFeed.parse(xmlString); | |||||
| var feed = RssFeed.parse(xmlString); | |||||
| expect(feed.title, "Song Site"); | expect(feed.title, "Song Site"); | ||||
| expect( | expect( | ||||
| feed.description, "Media RSS example with new fields added in v1.5.0"); | feed.description, "Media RSS example with new fields added in v1.5.0"); | ||||