Skip to content

Commit 6847868

Browse files
committed
Fix directives property in Message to be an array by default
1 parent ce5cbb9 commit 6847868

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

src/Surfaces/Message.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Message extends Surface
1818
private const DELETE_ORIGINAL = ['delete_original' => 'true'];
1919

2020
/** @var array|string[] A message can have a directive (e.g., response_type) included along with its blocks. */
21-
private $directives;
21+
private $directives = [];
2222

2323
/**
2424
* Configures message to send to the entire channel.

tests/Surfaces/MessageTest.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Jeremeamia\Slack\BlockKit\Tests\Surfaces;
6+
7+
use Jeremeamia\Slack\BlockKit\Surfaces\Message;
8+
use Jeremeamia\Slack\BlockKit\Tests\TestCase;
9+
10+
/**
11+
* @covers \Jeremeamia\Slack\BlockKit\Surfaces\Message
12+
*/
13+
class MessageTest extends TestCase
14+
{
15+
/**
16+
* @param Message $message
17+
* @param string $directiveKey
18+
* @param string $directiveValue
19+
* @dataProvider provideDirectivesUseCases
20+
*/
21+
public function testCanApplyDirectives(Message $message, string $directiveKey, string $directiveValue)
22+
{
23+
$data = $message->text('foo')->toArray();
24+
$this->assertArrayHasKey('blocks', $data);
25+
$this->assertArrayHasKey($directiveKey, $data);
26+
$this->assertEquals($directiveValue, $data[$directiveKey]);
27+
}
28+
29+
public function provideDirectivesUseCases()
30+
{
31+
return [
32+
[Message::new()->ephemeral(), 'response_type', 'ephemeral'],
33+
[Message::new()->inChannel(), 'response_type', 'in_channel'],
34+
[Message::new()->replaceOriginal(), 'replace_original', 'true'],
35+
[Message::new()->deleteOriginal(), 'delete_original', 'true'],
36+
];
37+
}
38+
39+
public function testDoesNotApplyDirectivesWhenNotSet()
40+
{
41+
$data = Message::new()->text('foo')->toArray();
42+
$this->assertArrayHasKey('blocks', $data);
43+
$this->assertArrayNotHasKey('response_type', $data);
44+
$this->assertArrayNotHasKey('replace_original', $data);
45+
$this->assertArrayNotHasKey('delete_original', $data);
46+
}
47+
}

0 commit comments

Comments
 (0)