packages/ztd-query-core/tests/Unit/Sql/TransactionTargetTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Sql;
6
7use PHPUnit\Framework\Attributes\CoversNothing;
8use PHPUnit\Framework\TestCase;
9use Tests\Fake\RecordingTransactionTarget;
10use ZtdQuery\Sql\TransactionStatement;
11
12#[CoversNothing]
13final class TransactionTargetTest extends TestCase
14{
15    public function testBeginIsWhatABeginStatementAsksTheTargetFor(): void
16    {
17        $target = new RecordingTransactionTarget();
18
19        TransactionStatement::begin()->apply($target);
20
21        self::assertSame(['begin'], $target->asked);
22    }
23
24    public function testCommitIsWhatACommitStatementAsksTheTargetFor(): void
25    {
26        $target = new RecordingTransactionTarget();
27
28        TransactionStatement::commit()->apply($target);
29
30        self::assertSame(['commit'], $target->asked);
31    }
32
33    public function testRollBackIsWhatARollbackStatementAsksTheTargetFor(): void
34    {
35        $target = new RecordingTransactionTarget();
36
37        TransactionStatement::rollback()->apply($target);
38
39        self::assertSame(['rollBack'], $target->asked);
40    }
41
42    public function testSavepointCarriesTheNameTheStatementNamed(): void
43    {
44        $target = new RecordingTransactionTarget();
45
46        TransactionStatement::savepoint('sp')->apply($target);
47
48        self::assertSame(['savepoint sp'], $target->asked);
49    }
50
51    public function testRollBackToCarriesTheNameTheStatementNamed(): void
52    {
53        $target = new RecordingTransactionTarget();
54
55        TransactionStatement::rollbackTo('sp')->apply($target);
56
57        self::assertSame(['rollBackTo sp'], $target->asked);
58    }
59
60    public function testReleaseCarriesTheNameTheStatementNamed(): void
61    {
62        $target = new RecordingTransactionTarget();
63
64        TransactionStatement::release('sp')->apply($target);
65
66        self::assertSame(['release sp'], $target->asked);
67    }
68}
69