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