22// code is governed by a MIT license that can be found in the LICENSE file.
33
44import 'package:podcast_search/podcast_search.dart' ;
5- import 'package:podcast_search/src/feed/feed.dart' ;
65import 'package:podcast_search/src/model/medium.dart' ;
76import 'package:test/test.dart' ;
87
98void main () {
109 group ('Podcast load test' , () {
1110 test ('Load podcast' , () async {
1211 var podcast = await Feed .loadFeed (
13- url: 'https://podcasts.files.bbci.co.uk/p06tqsg3.rss' );
12+ url: 'https://podcasts.files.bbci.co.uk/p06tqsg3.rss' ,
13+ );
1414
1515 expect (podcast.title, 'Forest 404' );
1616 });
1717
1818 test ('Load invalid podcast - unknown host' , () async {
1919 await expectLater (
20- () =>
21- Feed . loadFeed (url : 'https://pc.files.bbci.co.uk/p06tqsg3.rss' ),
22- throwsA ( const TypeMatcher < PodcastFailedException >()) );
20+ () => Feed . loadFeed (url : 'https://pc.files.bbci.co.uk/p06tqsg3.rss' ),
21+ throwsA ( const TypeMatcher < PodcastFailedException >() ),
22+ );
2323 });
2424
2525 test ('Load invalid podcast - invalid RSS call 404' , () async {
2626 await expectLater (
27- () => Feed .loadFeed (url: 'https://bbc.co.uk/abcdp06tqsg3.rss' ),
28- throwsA (const TypeMatcher <PodcastFailedException >()));
27+ () => Feed .loadFeed (url: 'https://bbc.co.uk/abcdp06tqsg3.rss' ),
28+ throwsA (const TypeMatcher <PodcastFailedException >()),
29+ );
2930 });
3031 });
3132
3233 group ('Podcast local file load test' , () {
3334 test ('Load podcast' , () async {
34- var podcast =
35- await Feed .loadFeedFile (file: 'test_resources/podcast1.rss' );
35+ var podcast = await Feed .loadFeedFile (
36+ file: 'test_resources/podcast1.rss' ,
37+ );
3638
3739 expect (podcast.title, 'Podcast Load Test 1' );
3840 expect (podcast.description, 'Unit test podcast test 1' );
@@ -56,8 +58,9 @@ void main() {
5658
5759 group ('Block tag test' , () {
5860 test ('Load podcast with block tags' , () async {
59- var podcast =
60- await Feed .loadFeedFile (file: 'test_resources/podcast1.rss' );
61+ var podcast = await Feed .loadFeedFile (
62+ file: 'test_resources/podcast1.rss' ,
63+ );
6164
6265 expect (podcast.block.length, 3 );
6366 expect (podcast.block[0 ].block, true );
@@ -72,23 +75,41 @@ void main() {
7275
7376 test ('Load podcast with no block tags' , () async {
7477 var podcast = await Feed .loadFeedFile (
75- file: 'test_resources/podcast-no-block.rss' );
78+ file: 'test_resources/podcast-no-block.rss' ,
79+ );
7680
7781 expect (podcast.block.length, 0 );
7882 });
7983 });
8084
85+ group ('Basic item test' , () {
86+ test ('Load podcast item' , () async {
87+ var podcast = await Feed .loadFeedFile (
88+ file: 'test_resources/podcast1.rss' ,
89+ );
90+
91+ expect (podcast.episodes[0 ].length, 1024000 );
92+ expect (podcast.episodes[0 ].mimeType, 'audio/mpeg' );
93+ expect (
94+ podcast.episodes[0 ].contentUrl,
95+ 'https://nowhere.com/podcastsearchtest1/podcast1/episode001.mp3' ,
96+ );
97+ });
98+ });
99+
81100 group ('Remote item test' , () {
82101 test ('No remote items' , () async {
83102 var podcast = await Feed .loadFeedFile (
84- file: 'test_resources/podcast-no-block.rss' );
103+ file: 'test_resources/podcast-no-block.rss' ,
104+ );
85105
86106 expect (podcast.remoteItems.length, 0 );
87107 });
88108
89109 test ('Load podcast 3 remote items' , () async {
90110 var podcast = await Feed .loadFeedFile (
91- file: 'test_resources/podcast-remote-item.rss' );
111+ file: 'test_resources/podcast-remote-item.rss' ,
112+ );
92113
93114 expect (podcast.remoteItems.length, 3 );
94115
@@ -108,30 +129,35 @@ void main() {
108129
109130 expect (item3.feedGuid, '917393e3-1b1e-5cef-ace4-edaa54e1f812' );
110131 expect (item3.itemGuid, 'asdf089j0-ep240-20230511' );
111- expect (item3.feedUrl,
112- 'https://feeds.example.org/917393e3-1b1e-5cef-ace4-edaa54e1f811/rss.xml' );
132+ expect (
133+ item3.feedUrl,
134+ 'https://feeds.example.org/917393e3-1b1e-5cef-ace4-edaa54e1f811/rss.xml' ,
135+ );
113136 expect (item3.medium, 'music' );
114137 });
115138 });
116139
117140 group ('Medium test' , () {
118141 test ('No medium' , () async {
119- var podcast =
120- await Feed .loadFeedFile (file: 'test_resources/podcast1.rss' );
142+ var podcast = await Feed .loadFeedFile (
143+ file: 'test_resources/podcast1.rss' ,
144+ );
121145
122146 expect (podcast.medium, Medium .podcast);
123147 });
124148
125149 test ('Audiobook medium' , () async {
126150 var podcast = await Feed .loadFeedFile (
127- file: 'test_resources/podcast-medium-audiobook.rss' );
151+ file: 'test_resources/podcast-medium-audiobook.rss' ,
152+ );
128153
129154 expect (podcast.medium, Medium .audiobook);
130155 });
131156
132157 test ('Music list medium' , () async {
133158 var podcast = await Feed .loadFeedFile (
134- file: 'test_resources/podcast-medium-music-list.rss' );
159+ file: 'test_resources/podcast-medium-music-list.rss' ,
160+ );
135161
136162 expect (podcast.medium, Medium .musicL);
137163 expect (podcast.remoteItems.length, 2 );
@@ -141,14 +167,16 @@ void main() {
141167 group ('Alternate enclosures' , () {
142168 test ('No alternate enclosures' , () async {
143169 var podcast = await Feed .loadFeedFile (
144- file: 'test_resources/podcast-alternate-enclosure.rss' );
170+ file: 'test_resources/podcast-alternate-enclosure.rss' ,
171+ );
145172
146173 expect (podcast.episodes[0 ].alternateEnclosures.length, 0 );
147174 });
148175
149176 test ('Load episode 2 alternate enclosures' , () async {
150177 var podcast = await Feed .loadFeedFile (
151- file: 'test_resources/podcast-alternate-enclosure.rss' );
178+ file: 'test_resources/podcast-alternate-enclosure.rss' ,
179+ );
152180
153181 var episode2 = podcast.episodes[1 ];
154182
@@ -187,8 +215,10 @@ void main() {
187215 expect (source2.contentType, 'audio/opus' );
188216
189217 expect (integrity? .type, 'sri' );
190- expect (integrity? .value, 'sha384-ExVqijgYHm15PqQqdXfW95x+Rs6C+d6E/ICxyQOeFevnxNLR/wtJNrNYTjIysUBo' );
218+ expect (
219+ integrity? .value,
220+ 'sha384-ExVqijgYHm15PqQqdXfW95x+Rs6C+d6E/ICxyQOeFevnxNLR/wtJNrNYTjIysUBo' ,
221+ );
191222 });
192223 });
193-
194224}
0 commit comments