packages/deriver/tests/Unit/Command/DeriveCommandTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Command;
6
7use Deriver\Command\DeriveCommand;
8use PHPUnit\Framework\Attributes\CoversNothing;
9use PHPUnit\Framework\TestCase;
10use Symfony\Component\Console\Tester\CommandTester;
11
12#[CoversNothing]
13final class DeriveCommandTest extends TestCase
14{
15    public function testExecuteReportsInvalidFormatsOnlyOnStandardError(): void
16    {
17        $tester = new CommandTester(new DeriveCommand());
18        self::assertSame(2, $tester->execute(['query' => 'answer#return', '--format' => 'xml'], ['capture_stderr_separately' => true]));
19        self::assertSame('', $tester->getDisplay());
20        self::assertStringContainsString('format must be text or json', $tester->getErrorOutput());
21    }
22
23    public function testExecuteReportsMissingConfigurations(): void
24    {
25        $tester = new CommandTester(new DeriveCommand());
26        self::assertSame(2, $tester->execute(['query' => 'answer#return', '--config' => '/nonexistent-deriver-config/deliver.yaml'], ['capture_stderr_separately' => true]));
27        self::assertStringContainsString('readable local YAML', $tester->getErrorOutput());
28    }
29}
30