mirror of
https://github.com/chylex/Nextcloud-News.git
synced 2025-09-18 22:24:49 +02:00
.github
.tx
appinfo
bin
css
docs
img
js
l10n
lib
screenshots
src
templates
tests
Unit
Command
AfterUpdateTest.php
BeforeUpdateTest.php
ExploreGeneratorTest.php
FeedAddTest.php
FeedDeleteTest.php
FeedItemListTest.php
FeedListTest.php
FolderAddTest.php
FolderDeleteTest.php
FolderItemListTest.php
FolderListTest.php
ItemListTest.php
OpmlExportTest.php
ShowFeedTest.php
UpdateFeedTest.php
UpdateUserTest.php
Config
Controller
Db
Fetcher
Search
Service
Utility
api
command
test_helper
updater
bootstrap.php
.editorconfig
.eslintrc.js
.gitignore
.gitmodules
.mailmap
AUTHORS.md
CHANGELOG.md
CONTRIBUTING.md
COPYING
Makefile
README.md
babel.config.js
composer.json
composer.lock
mkdocs.yml
package-lock.json
package.json
phpstan.neon.dist
phpunit.xml
stylelint.config.js
webpack.config.js
141 lines
4.7 KiB
PHP
141 lines
4.7 KiB
PHP
<?php
|
|
/**
|
|
* @author Sean Molenaar <sean@seanmolenaar.eu>
|
|
*
|
|
* @license AGPL-3.0
|
|
*
|
|
* This code is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License, version 3,
|
|
* as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
*
|
|
*/
|
|
|
|
namespace OCA\News\Tests\Unit\Command;
|
|
|
|
use OCA\News\Command\Updater\AfterUpdate;
|
|
use OCA\News\Fetcher\Fetcher;
|
|
use OCA\News\Service\Exceptions\ServiceNotFoundException;
|
|
use OCA\News\Service\ItemServiceV2;
|
|
use PHPUnit\Framework\MockObject\MockObject;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
|
|
class AfterUpdateTest extends TestCase
|
|
{
|
|
/** @var MockObject|ItemServiceV2 */
|
|
protected $service;
|
|
/** @var MockObject|InputInterface */
|
|
protected $consoleInput;
|
|
/** @var MockObject|OutputInterface */
|
|
protected $consoleOutput;
|
|
|
|
/** @var AfterUpdate */
|
|
protected $command;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$this->service = $this->getMockBuilder(ItemServiceV2::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
$this->consoleInput = $this->getMockBuilder(InputInterface::class)
|
|
->getMock();
|
|
$this->consoleOutput = $this->getMockBuilder(OutputInterface::class)
|
|
->getMock();
|
|
|
|
$this->command = new AfterUpdate($this->service);
|
|
}
|
|
|
|
/**
|
|
* Test a valid call will work
|
|
*/
|
|
public function testValid()
|
|
{
|
|
$this->consoleInput->expects($this->once())
|
|
->method('getArgument')
|
|
->with('purge-count')
|
|
->willReturn('1');
|
|
$this->consoleInput->expects($this->once())
|
|
->method('getOption')
|
|
->with('purge-unread')
|
|
->willReturn(false);
|
|
|
|
$this->service->expects($this->exactly(1))
|
|
->method('purgeOverThreshold')
|
|
->with('1', false)
|
|
->willReturn(1);
|
|
|
|
$this->consoleOutput->expects($this->exactly(1))
|
|
->method('writeln')
|
|
->with('Removed 1 item(s)');
|
|
|
|
$result = $this->command->run($this->consoleInput, $this->consoleOutput);
|
|
$this->assertSame(0, $result);
|
|
}
|
|
|
|
/**
|
|
* Test a valid call will work
|
|
*/
|
|
public function testValidEmpty()
|
|
{
|
|
$this->consoleInput->expects($this->once())
|
|
->method('getArgument')
|
|
->with('purge-count')
|
|
->willReturn('1');
|
|
$this->consoleInput->expects($this->once())
|
|
->method('getOption')
|
|
->with('purge-unread')
|
|
->willReturn(false);
|
|
|
|
|
|
$this->service->expects($this->exactly(1))
|
|
->method('purgeOverThreshold')
|
|
->with('1', false)
|
|
->willReturn(null);
|
|
|
|
$this->consoleOutput->expects($this->exactly(1))
|
|
->method('writeln')
|
|
->with('No cleanup needed');
|
|
|
|
$result = $this->command->run($this->consoleInput, $this->consoleOutput);
|
|
$this->assertSame(0, $result);
|
|
}
|
|
|
|
/**
|
|
* Test a valid call will work
|
|
*/
|
|
public function testValidEmptyUnread()
|
|
{
|
|
$this->consoleInput->expects($this->once())
|
|
->method('getArgument')
|
|
->with('purge-count')
|
|
->willReturn('1');
|
|
$this->consoleInput->expects($this->once())
|
|
->method('getOption')
|
|
->with('purge-unread')
|
|
->willReturn(true);
|
|
|
|
|
|
$this->service->expects($this->exactly(1))
|
|
->method('purgeOverThreshold')
|
|
->with('1', true)
|
|
->willReturn(null);
|
|
|
|
$this->consoleOutput->expects($this->exactly(1))
|
|
->method('writeln')
|
|
->with('No cleanup needed');
|
|
|
|
$result = $this->command->run($this->consoleInput, $this->consoleOutput);
|
|
$this->assertSame(0, $result);
|
|
}
|
|
}
|