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