Skip to content
Merged
21 changes: 0 additions & 21 deletions modules/mod_feed/mod_feed.php

This file was deleted.

2 changes: 1 addition & 1 deletion modules/mod_feed/mod_feed.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<description>MOD_FEED_XML_DESCRIPTION</description>
<namespace path="src">Joomla\Module\Feed</namespace>
<files>
<filename module="mod_feed">mod_feed.php</filename>
<folder module="mod_feed">services</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
Expand Down
41 changes: 41 additions & 0 deletions modules/mod_feed/services/provider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

/**
* @package Joomla.Site
* @subpackage mod_feed
*
* @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

\defined('_JEXEC') or die;

use Joomla\CMS\Extension\Service\Provider\HelperFactory;
use Joomla\CMS\Extension\Service\Provider\Module;
use Joomla\CMS\Extension\Service\Provider\ModuleDispatcherFactory;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;

/**
* The feed module service provider.
*
* @since __DEPLOY_VERSION__
*/
return new class () implements ServiceProviderInterface {
/**
* Registers the service provider with a DI container.
*
* @param Container $container The DI container.
*
* @return void
*
* @since __DEPLOY_VERSION__
*/
public function register(Container $container): void
{
$container->registerServiceProvider(new ModuleDispatcherFactory('\\Joomla\\Module\\Feed'));
$container->registerServiceProvider(new HelperFactory('\\Joomla\\Module\\Feed\\Site\\Helper'));

$container->registerServiceProvider(new Module());
}
};
47 changes: 47 additions & 0 deletions modules/mod_feed/src/Dispatcher/Dispatcher.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

/**
* @package Joomla.Site
* @subpackage mod_feed
*
* @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

namespace Joomla\Module\Feed\Site\Dispatcher;

use Joomla\CMS\Dispatcher\AbstractModuleDispatcher;
use Joomla\CMS\Helper\HelperFactoryAwareInterface;
use Joomla\CMS\Helper\HelperFactoryAwareTrait;

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
* Dispatcher class for mod_feed
*
* @since __DEPLOY_VERSION__
*/
class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareInterface
{
use HelperFactoryAwareTrait;

/**
* Returns the layout data.
*
* @return array
*
* @since __DEPLOY_VERSION__
*/
protected function getLayoutData(): array
{
$data = parent::getLayoutData();

$data['rssurl'] = $data['params']->get('rssurl', '');
$data['rssrtl'] = $data['params']->get('rssrtl', 0);
$data['feed'] = $this->getHelperFactory()->getHelper('FeedHelper')->getFeed($data['params']);

return $data;
}
}
18 changes: 18 additions & 0 deletions tests/System/integration/site/modules/mod_feed/Default.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
describe('Test in frontend that the feed module', () => {
['joomla.org'].forEach((file) => {
it('can display feed', () => {
cy.db_createModule({
title: 'automated test feed',
module: 'mod_feed',
params: `{"rssurl": "${Cypress.config('baseUrl')}/tests/System/data/com_newsfeeds/${file}.xml" }`,
})
.then(() => {
cy.visit('/');

cy.contains('automated test feed');
cy.get('ul.newsfeed').should('exist');
cy.get('ul.newsfeed').children().should('have.length', 3);
});
});
});
});