[ new FeatureFakeTool('lit/divi-outline', true, [DiviFeature::PageRead]), new FeatureFakeTool('lit/divi-insert', true, [DiviFeature::PageRead, DiviFeature::PageWrite]), new FeatureFakeTool('lit/divi-presets-assign', false, [DiviFeature::PresetWrite]), new FeatureFakeTool('lit/content-create', true, []), ]); } public function testToolsAreNamedAsTheClientSeesThem(): void { $tools = self::overview()->toolsByFeature(); self::assertSame(['lit-divi-outline', 'lit-divi-insert'], $tools['page-read']); self::assertSame(['lit-divi-insert'], $tools['page-write']); self::assertSame(['lit/divi-presets-assign'], $tools['preset-write']); } public function testAToolWithoutFeaturesIsLeftOut(): void { $overview = new FeatureOverview(static fn (): array => [new FeatureFakeTool('lit/content-create', true, [])]); self::assertSame([], $overview->toolsByFeature()); } public function testRowsCarryTheMatrixAndTheToolsOfEachFeature(): void { $matrix = MatrixFixtures::with( DiviFeature::PageWrite, ReleaseState::Incompatible, 'code', 'Seiten: et_pb_x() fehlt' ); $rows = array_column(self::overview()->rows($matrix), null, 'id'); self::assertCount(count(DiviFeature::cases()), $rows); self::assertSame( [ 'id' => 'page-write', 'label' => 'Seiten schreiben', 'state' => 'incompatible', 'problems' => ['Seiten: et_pb_x() fehlt'], 'source' => null, 'tools' => ['lit-divi-insert'], ], $rows['page-write'] ); self::assertSame('released', $rows['page-read']['state']); self::assertSame('code', $rows['page-read']['source']); self::assertSame([], $rows['catalog']['tools']); } public function testWithoutToolsEveryRowHasAnEmptyToolList(): void { foreach (FeatureOverview::withoutTools()->rows(MatrixFixtures::released()) as $row) { self::assertSame([], $row['tools']); } } }