packages/requirements/tests/Unit/Config/DefinitionsTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Config;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use Requirements\Config\Definitions;
12use Requirements\Model\Item;
13use Requirements\Model\Source;
14
15#[CoversClass(Definitions::class)]
16#[UsesClass(Item::class)]
17#[UsesClass(Source::class)]
18#[Small]
19final class DefinitionsTest extends TestCase
20{
21 public function testHoldsItemsSourcesAndFiles(): void
22 {
23 $source = new Source('manual', 'source.html', 'html', 'main p');
24 $item = new Item('SPEC-001', 'specification', 'The parser shall require a leading letter.', 'supported', $source, [], [], [], [], [], '', 'sourced', '', '/project/definition.yaml', []);
25 $definitions = new Definitions(['SPEC-001' => $item], ['manual' => $source], ['/project/a.yaml', '/project/definition.yaml']);
26 self::assertSame(['SPEC-001' => $item], $definitions->items);
27 self::assertSame(['manual' => $source], $definitions->sources);
28 self::assertSame(['/project/a.yaml', '/project/definition.yaml'], $definitions->files);
29 }
30
31 public function testHoldsEmptyDefinitions(): void
32 {
33 $definitions = new Definitions([], [], []);
34 self::assertSame([], $definitions->items);
35 self::assertSame([], $definitions->sources);
36 self::assertSame([], $definitions->files);
37 }
38}
39