packages/sql-fixture/tests/Unit/Version/ReleaseNumberTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Version;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use SqlFixture\Version\ReleaseNumber as Subject;
10
11#[CoversClass(Subject::class)]
12final class ReleaseNumberTest extends TestCase
13{
14 public function testFromReportedDropsTheSuffix(): void
15 {
16 self::assertSame('8.0.36', Subject::fromReported('8.0.36-0ubuntu0.22.04.1')?->number);
17 self::assertSame('17.2', Subject::fromReported('17.2 (Debian 17.2-1.pgdg120+1)')?->number);
18 self::assertNull(Subject::fromReported('unknown'));
19 }
20
21 public function testIdPadsMissingParts(): void
22 {
23 self::assertSame(80036, (new Subject('8.0.36'))->id());
24 self::assertSame(170200, (new Subject('17.2'))->id());
25 self::assertSame(30000, (new Subject('3'))->id());
26 }
27
28 public function testSeriesKeepsEveryNumberButTheLast(): void
29 {
30 self::assertSame('8.0', (new Subject('8.0.36'))->series());
31 self::assertSame('17', (new Subject('17.2'))->series());
32 self::assertSame('3', (new Subject('3'))->series());
33 }
34}
35