| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace App\Tests\Service\Cron\UI;
- use App\Service\Cron\UI\ConsoleUI;
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\Console\Output\OutputInterface;
- class MockableProgressBar {
- public function setProgress(int $step): void {}
- public function setMaxSteps(int $max): void {}
- }
- class TestableConsoleUI extends ConsoleUI {
- public function setProgressBar(MockableProgressBar $progressBar): void
- {
- $this->progressBar = $progressBar;
- }
- }
- class ConsoleUITest extends TestCase
- {
- private mixed $output;
- public function setUp(): void
- {
- $this->output = $this->getMockBuilder(OutputInterface::class)->disableOriginalConstructor()->getMock();
- $this->progressBar = $this->getMockBuilder(MockableProgressBar::class)->disableOriginalConstructor()->getMockForAbstractClass();
- }
- public function testPrint(): void
- {
- $consoleUI = $this->getMockBuilder(ConsoleUI::class)
- ->setConstructorArgs([$this->output])
- ->setMethodsExcept(['print'])
- ->getMock();
- $this->output->expects(self::once())->method('writeln')->with('foo');
- $consoleUI->print('foo');
- }
- public function testProgress(): void {
- $progressBar = $this->getMockBuilder(MockableProgressBar::class)->getMock();
- $consoleUI = $this->getMockBuilder(TestableConsoleUI::class)
- ->setConstructorArgs([$this->output])
- ->setMethodsExcept(['progress', 'setProgressBar'])
- ->getMock();
- $consoleUI->setProgressBar($progressBar);
- $progressBar->expects(self::once())
- ->method('setProgress')
- ->with(21);
- $progressBar->expects(self::once())
- ->method('setMaxSteps')
- ->with(100);
- $consoleUI->progress(21, 100);
- }
- public function testProgressEnd(): void {
- $progressBar = $this->getMockBuilder(MockableProgressBar::class)->getMock();
- $consoleUI = $this->getMockBuilder(TestableConsoleUI::class)
- ->setConstructorArgs([$this->output])
- ->setMethodsExcept(['progress', 'setProgressBar'])
- ->getMock();
- $consoleUI->setProgressBar($progressBar);
- $progressBar->expects(self::once())
- ->method('setProgress')
- ->with(100);
- $progressBar->expects(self::once())
- ->method('setMaxSteps')
- ->with(100);
- $consoleUI->expects(self::once())->method('print')->with('');
- $consoleUI->progress(100, 100);
- }
- }
|