Skip to content

Commit 5b1e805

Browse files
committed
Add accessibility
1 parent 1a50685 commit 5b1e805

15 files changed

Lines changed: 161 additions & 157 deletions

phpunit.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<testsuites>
1717
<testsuite name="default">
1818
<directory>tests</directory>
19+
<exclude>tests/Result/AbstractResultTest.php</exclude>
1920
</testsuite>
2021
</testsuites>
2122

src/Any.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
declare(strict_types=1);
44

5-
65
namespace Phpro\AgentRules;
76

87
/**

src/Either.php

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

33
declare(strict_types=1);
44

5-
65
namespace Phpro\AgentRules;
76

8-
9-
107
/**
118
* @template T
129
*

src/Result/AbstractResult.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Phpro\AgentRules\Result;
66

7+
use Phpro\AgentRules\Source\Source;
78
use Phpro\AgentRules\Source\SourceMap;
89

910
abstract readonly class AbstractResult implements ResultInterface
@@ -21,6 +22,13 @@ public function sources(): SourceMap
2122
return $this->sources;
2223
}
2324

25+
public function addSources(Source ...$sources): static
26+
{
27+
$this->sources->add(...$sources);
28+
29+
return $this;
30+
}
31+
2432
#[\Override]
2533
public function jsonSerialize(): array
2634
{

src/Result/ResultInterface.php

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

33
declare(strict_types=1);
44

5-
65
namespace Phpro\AgentRules\Result;
76

8-
97
use Phpro\AgentRules\Source\SourceMap;
108

119
interface ResultInterface extends \JsonSerializable

src/RuleEngine.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
declare(strict_types=1);
44

5-
65
namespace Phpro\AgentRules;
76

87
/**

src/RuleInterface.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
declare(strict_types=1);
44

5-
65
namespace Phpro\AgentRules;
76

87
/**

src/RulesAnalyzer.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
declare(strict_types=1);
44

5-
65
namespace Phpro\AgentRules;
76

87
use Psl\Graph;

src/Sequence.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
declare(strict_types=1);
44

5-
65
namespace Phpro\AgentRules;
76

87
/**
Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,48 +4,28 @@
44

55
namespace Phpro\AgentRules\Tests\Result;
66

7-
use PHPUnit\Framework\Attributes\CoversClass;
8-
use PHPUnit\Framework\Attributes\Test;
97
use PHPUnit\Framework\TestCase;
10-
use Phpro\AgentRules\Result\CompleteResult;
8+
use Phpro\AgentRules\Result\ResultInterface;
119
use Phpro\AgentRules\Source\Source;
1210

13-
#[CoversClass(CompleteResult::class)]
14-
final class CompleteResultTest extends TestCase
11+
abstract class AbstractResultTestCase extends TestCase
1512
{
16-
#[Test]
17-
public function it_returns_complete_status(): void
18-
{
19-
$result = new CompleteResult('Task completed');
20-
21-
static::assertSame('complete', $result->getStatus());
22-
}
23-
24-
#[Test]
25-
public function it_includes_message_in_json_serialization(): void
26-
{
27-
$result = new CompleteResult('Task completed successfully');
13+
abstract protected function createResult(): ResultInterface;
2814

29-
$serialized = $result->jsonSerialize();
30-
31-
static::assertSame('complete', $serialized['status']);
32-
static::assertSame('Task completed successfully', $serialized['message']);
33-
}
15+
abstract protected function expectedStatus(): string;
3416

35-
#[Test]
36-
public function it_returns_empty_source_map(): void
17+
public function test_it_returns_empty_source_map(): void
3718
{
38-
$result = new CompleteResult('Task completed');
19+
$result = $this->createResult();
3920

4021
$sources = $result->sources()->sources();
4122

4223
static::assertCount(0, $sources);
4324
}
4425

45-
#[Test]
46-
public function it_can_add_sources_to_result(): void
26+
public function test_it_can_add_sources_to_result(): void
4727
{
48-
$result = new CompleteResult('Task completed');
28+
$result = $this->createResult();
4929
$source = new Source('Documentation', 'https://docs.example.com', 'See the docs for more info');
5030

5131
$result->sources()->add($source);
@@ -57,10 +37,9 @@ public function it_can_add_sources_to_result(): void
5737
static::assertSame('See the docs for more info', $sources[0]->content);
5838
}
5939

60-
#[Test]
61-
public function it_includes_sources_in_json_serialization(): void
40+
public function test_it_includes_sources_in_json_serialization(): void
6241
{
63-
$result = new CompleteResult('Task completed');
42+
$result = $this->createResult();
6443
$result->sources()->add(
6544
new Source('Docs', 'https://docs.example.com', 'See docs'),
6645
new Source('Help', 'https://help.example.com', 'Need help')
@@ -76,4 +55,27 @@ public function it_includes_sources_in_json_serialization(): void
7655
static::assertSame('See docs', $data['sources'][0]['content']);
7756
static::assertSame('Help', $data['sources'][1]['name']);
7857
}
58+
59+
public function test_it_can_add_multiple_sources_at_once(): void
60+
{
61+
$result = $this->createResult();
62+
63+
$returnValue = $result->addSources(
64+
new Source('API', 'https://api.example.com', 'API docs'),
65+
new Source('Guide', 'https://guide.example.com', 'User guide'),
66+
new Source('FAQ', 'https://faq.example.com', 'Frequently asked')
67+
);
68+
69+
static::assertSame($result, $returnValue);
70+
static::assertCount(3, $result->sources()->sources());
71+
}
72+
73+
public function test_it_includes_status_in_json_serialization(): void
74+
{
75+
$result = $this->createResult();
76+
77+
$serialized = $result->jsonSerialize();
78+
79+
static::assertSame($this->expectedStatus(), $serialized['status']);
80+
}
7981
}

0 commit comments

Comments
 (0)