packages/ztd-query-core/tests/Unit/ExecuteResultTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit;
6
7use PHPUnit\Framework\Attributes\CoversNothing;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\GenericExecuteResult;
10use ZtdQuery\Rewrite\QueryKind;
11
12#[CoversNothing]
13final class ExecuteResultTest extends TestCase
14{
15 public function testIsPassthroughSaysWhetherTheOriginalStatementStillHasToRun(): void
16 {
17 self::assertTrue(GenericExecuteResult::passthrough()->isPassthrough());
18 self::assertFalse(GenericExecuteResult::fromBufferedRows([], QueryKind::WRITE_SIMULATED)->isPassthrough());
19 }
20
21 public function testIsSuccessSaysWhetherTheStatementGotAsFarAsAResult(): void
22 {
23 self::assertTrue(GenericExecuteResult::fromBufferedRows([], QueryKind::READ)->isSuccess());
24 self::assertFalse(GenericExecuteResult::failure(QueryKind::READ)->isSuccess());
25 }
26
27 public function testKindSaysWhatWasRun(): void
28 {
29 self::assertSame(
30 QueryKind::WRITE_SIMULATED,
31 GenericExecuteResult::fromBufferedRows([], QueryKind::WRITE_SIMULATED)->kind(),
32 );
33 }
34
35 public function testFetchAnswersEachRowInTurnAndThenNothing(): void
36 {
37 $result = GenericExecuteResult::fromBufferedRows([['id' => 1], ['id' => 2]], QueryKind::READ);
38
39 self::assertSame(['id' => 1], $result->fetch());
40 self::assertSame(['id' => 2], $result->fetch());
41 self::assertFalse($result->fetch());
42 }
43
44 public function testFetchAllAnswersEveryRowLeft(): void
45 {
46 $result = GenericExecuteResult::fromBufferedRows([['id' => 1], ['id' => 2]], QueryKind::READ);
47 $result->fetch();
48
49 self::assertSame([['id' => 2]], $result->fetchAll());
50 }
51
52 public function testRowCountAnswersHowManyRowsTheStatementCameTo(): void
53 {
54 $result = GenericExecuteResult::fromBufferedRows([['id' => 1]], QueryKind::WRITE_SIMULATED, 4);
55
56 self::assertSame(4, $result->rowCount());
57 }
58
59 public function testHasResultSetSaysWhetherThereIsAnythingToFetch(): void
60 {
61 self::assertTrue(GenericExecuteResult::fromBufferedRows([['id' => 1]], QueryKind::READ)->hasResultSet());
62 self::assertFalse(
63 GenericExecuteResult::fromBufferedRows([], QueryKind::WRITE_SIMULATED)->hasResultSet(),
64 );
65 }
66}
67