Skip to content

Commit 231118c

Browse files
committed
feat: add HasColor interface
1 parent 32ee970 commit 231118c

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

src/Enums/HasColor.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace Javaabu\Helpers\Enums;
4+
5+
interface HasColor
6+
{
7+
public function getColor(): string;
8+
}

src/Enums/IsStatusEnum.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Javaabu\Helpers\Enums;
44

5-
interface IsStatusEnum extends IsEnum
5+
interface IsStatusEnum extends IsEnum, HasColor
66
{
7-
public function getColor(): string;
87
}

tests/Unit/EnumsTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Javaabu\Helpers\Tests\Unit;
44

5+
use Javaabu\Helpers\Enums\HasColor;
6+
use Javaabu\Helpers\Enums\IsStatusEnum;
57
use Javaabu\Helpers\Enums\PublishStatuses;
68
use Javaabu\Helpers\Tests\TestCase;
79

@@ -18,4 +20,38 @@ public function it_can_generate_enum_label()
1820
'rejected' => 'Rejected',
1921
], PublishStatuses::getLabels());
2022
}
23+
24+
/** @test */
25+
public function it_can_see_that_an_enum_is_a_status_enum()
26+
{
27+
$this->assertTrue(in_array(IsStatusEnum::class, class_implements(PublishStatuses::class)));
28+
$this->assertTrue(method_exists(PublishStatuses::class, 'getLabel'));
29+
$this->assertTrue(method_exists(PublishStatuses::class, 'getLabels'));
30+
$this->assertTrue(method_exists(PublishStatuses::class, 'labels'));
31+
$this->assertTrue(method_exists(PublishStatuses::class, 'getColor'));
32+
}
33+
34+
/** @test */
35+
public function it_can_get_enum_color()
36+
{
37+
// Check if enum implements HasColor
38+
$this->assertTrue(in_array(HasColor::class, class_implements(PublishStatuses::class)));
39+
40+
$this->assertEquals('secondary', PublishStatuses::DRAFT->getColor());
41+
42+
$this->assertEquals(
43+
[
44+
'draft' => 'secondary',
45+
'pending' => 'info',
46+
'published' => 'success',
47+
'rejected' => 'danger',
48+
],
49+
[
50+
PublishStatuses::DRAFT->value => PublishStatuses::DRAFT->getColor(),
51+
PublishStatuses::PENDING->value => PublishStatuses::PENDING->getColor(),
52+
PublishStatuses::PUBLISHED->value => PublishStatuses::PUBLISHED->getColor(),
53+
PublishStatuses::REJECTED->value => PublishStatuses::REJECTED->getColor(),
54+
]
55+
);
56+
}
2157
}

0 commit comments

Comments
 (0)