packages/requirements/tests/Unit/Model/ProjectTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Model;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\Small;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use Requirements\Model\Project;
12use Requirements\Model\Source;
13use Requirements\Test\RunnerConfig;
14
15#[CoversClass(Project::class)]
16#[UsesClass(Source::class)]
17#[UsesClass(RunnerConfig::class)]
18#[Small]
19final class ProjectTest extends TestCase
20{
21 public function testHoldsEveryPart(): void
22 {
23 $source = new Source('manual', 'source.html', 'html', 'main p');
24 $runner = new RunnerConfig('phpunit', ['php', 'vendor/bin/phpunit'], '/project');
25 $project = new Project('/project', [], ['manual' => $source], ['unit' => $runner], ['service' => 'App\ServiceSource'], ['custom' => 'App\CustomRunner'], 80.0, 90.0, ['manual' => 70.0], ['/project/requirements.yaml', '/project/definition.yaml'], ['profile' => 'strict']);
26 self::assertSame('/project', $project->directory);
27 self::assertSame([], $project->items);
28 self::assertSame(['manual' => $source], $project->sources);
29 self::assertSame(['unit' => $runner], $project->runners);
30 self::assertSame(['service' => 'App\ServiceSource'], $project->sourceExtensions);
31 self::assertSame(['custom' => 'App\CustomRunner'], $project->runnerExtensions);
32 self::assertSame(80.0, $project->minimum);
33 self::assertSame(90.0, $project->diffMinimum);
34 self::assertSame(['manual' => 70.0], $project->sourceThresholds);
35 self::assertSame(['/project/requirements.yaml', '/project/definition.yaml'], $project->files);
36 self::assertSame(['profile' => 'strict'], $project->markdown);
37 }
38
39 public function testMarkdownOptionsDefaultToEmpty(): void
40 {
41 $project = new Project('/project', [], [], [], [], [], 0.0, 0.0, [], ['/project/requirements.yaml']);
42 self::assertSame([], $project->markdown);
43 }
44}
45