packages/sql-catalog/tests/Unit/Cli/CommandResultTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Cli;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use SqlCatalog\Cli\CommandResult;
11use SqlCatalog\Cli\ExitCode;
12
13#[CoversClass(CommandResult::class)]
14#[UsesClass(ExitCode::class)]
15final class CommandResultTest extends TestCase
16{
17    public function testOkWritesOnlyToStandardOutput(): void
18    {
19        $result = CommandResult::ok('done');
20        self::assertSame(ExitCode::Success, $result->exitCode);
21        self::assertSame('done', $result->output);
22        self::assertSame('', $result->error);
23    }
24
25    public function testFailureWritesOnlyToStandardErrorAndEndsWithANewline(): void
26    {
27        $result = CommandResult::failure(ExitCode::InvalidCommandLine, "bad\n\n");
28        self::assertSame(ExitCode::InvalidCommandLine, $result->exitCode);
29        self::assertSame('', $result->output);
30        self::assertSame("bad\n", $result->error);
31    }
32}
33