2323use Contao \FilesModel ;
2424use Contao \Image \ImageInterface ;
2525use Contao \Model \Collection ;
26+ use Contao \NewsArchiveModel ;
2627use Contao \NewsBundle \Event \FetchArticlesForFeedEvent ;
2728use Contao \NewsBundle \Event \TransformArticleForFeedEvent ;
2829use Contao \NewsBundle \EventListener \NewsFeedListener ;
3839use Symfony \Component \Filesystem \Path ;
3940use Symfony \Component \HttpFoundation \Request ;
4041use Symfony \Component \Routing \Generator \UrlGeneratorInterface ;
42+ use Symfony \Component \Security \Core \Authorization \AuthorizationCheckerInterface ;
4143
4244class NewsFeedListenerTest extends ContaoTestCase
4345{
@@ -57,6 +59,8 @@ public function testFetchesArticlesFromArchives(string $feedFeatured, bool|null
5759 $ imageFactory = $ this ->createMock (ImageFactoryInterface::class);
5860 $ cacheTags = $ this ->createMock (EntityCacheTags::class);
5961 $ newsModel = $ this ->createMock (NewsModel::class);
62+ $ normalArchive = $ this ->mockClassWithProperties (NewsArchiveModel::class, ['id ' => 1 , 'protected ' => 0 ]);
63+ $ protectedArchive = $ this ->mockClassWithProperties (NewsArchiveModel::class, ['id ' => 2 , 'protected ' => 1 ]);
6064
6165 $ collection = $ this ->createMock (Collection::class);
6266 $ collection
@@ -73,20 +77,35 @@ public function testFetchesArticlesFromArchives(string $feedFeatured, bool|null
7377 ->willReturn ($ collection )
7478 ;
7579
76- $ framework = $ this ->mockContaoFramework ([NewsModel::class => $ newsAdapter ]);
80+ $ newsArchiveAdapter = $ this ->mockAdapter (['findMultipleByIds ' ]);
81+ $ newsArchiveAdapter
82+ ->expects ($ this ->once ())
83+ ->method ('findMultipleByIds ' )
84+ ->with ([1 , 2 ])
85+ ->willReturn (new Collection ([$ normalArchive , $ protectedArchive ], 'tl_news_archive ' ))
86+ ;
87+
88+ $ framework = $ this ->mockContaoFramework ([NewsModel::class => $ newsAdapter , NewsArchiveModel::class => $ newsArchiveAdapter ]);
7789 $ feed = $ this ->createMock (Feed::class);
7890 $ request = $ this ->createMock (Request::class);
7991 $ urlGenerator = $ this ->createMock (ContentUrlGenerator::class);
8092
93+ $ authorizationChecker = $ this ->createMock (AuthorizationCheckerInterface::class);
94+ $ authorizationChecker
95+ ->expects ($ this ->once ())
96+ ->method ('isGranted ' )
97+ ->willReturn (false )
98+ ;
99+
81100 $ pageModel = $ this ->mockClassWithProperties (PageModel::class, [
82- 'newsArchives ' => serialize ([1 ]),
101+ 'newsArchives ' => serialize ([1 , 2 ]),
83102 'feedFeatured ' => $ feedFeatured ,
84103 'maxFeedItems ' => 0 ,
85104 ]);
86105
87106 $ event = new FetchArticlesForFeedEvent ($ feed , $ request , $ pageModel );
88107
89- $ listener = new NewsFeedListener ($ framework , $ imageFactory , $ urlGenerator , $ insertTags , $ this ->getTempDir (), $ cacheTags , 'UTF-8 ' );
108+ $ listener = new NewsFeedListener ($ framework , $ imageFactory , $ urlGenerator , $ insertTags , $ this ->getTempDir (), $ cacheTags , 'UTF-8 ' , $ authorizationChecker );
90109 $ listener ->onFetchArticlesForFeed ($ event );
91110
92111 $ this ->assertSame ([$ newsModel ], $ event ->getArticles ());
@@ -211,6 +230,7 @@ public function testTransformsArticlesToFeedItems(string $feedSource, array $hea
211230
212231 $ feed = $ this ->createMock (Feed::class);
213232 $ cacheTags = $ this ->createMock (EntityCacheTags::class);
233+ $ authorizationChecker = $ this ->createMock (AuthorizationCheckerInterface::class);
214234
215235 $ urlGenerator = $ this ->createMock (ContentUrlGenerator::class);
216236 $ urlGenerator
@@ -229,7 +249,7 @@ public function testTransformsArticlesToFeedItems(string $feedSource, array $hea
229249 $ baseUrl = 'example.org ' ;
230250 $ event = new TransformArticleForFeedEvent ($ article , $ feed , $ pageModel , $ request , $ baseUrl );
231251
232- $ listener = new NewsFeedListener ($ framework , $ imageFactory , $ urlGenerator , $ insertTags , $ this ->getTempDir (), $ cacheTags , 'UTF-8 ' );
252+ $ listener = new NewsFeedListener ($ framework , $ imageFactory , $ urlGenerator , $ insertTags , $ this ->getTempDir (), $ cacheTags , 'UTF-8 ' , $ authorizationChecker );
233253 $ listener ->onTransformArticleForFeed ($ event );
234254
235255 $ item = $ event ->getItem ();
0 commit comments