From fb5d01c725bd31b8c42f2c80b6a283ee0910ab28 Mon Sep 17 00:00:00 2001 From: Elf Sundae Date: Mon, 4 Sep 2017 13:44:03 +0800 Subject: [PATCH] Add setClient --- src/Message.php | 21 ++++++++++++++++++--- tests/MessageTest.php | 26 ++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/Message.php b/src/Message.php index a977801..47c9b3e 100644 --- a/src/Message.php +++ b/src/Message.php @@ -69,9 +69,7 @@ class Message implements JsonSerializable */ public function __construct(Client $client = null) { - if ($this->client = $client) { - $this->configureDefaults($client->getMessageDefaults(), true); - } + $this->setClient($client); } /** @@ -84,6 +82,23 @@ public function getClient() return $this->client; } + /** + * Set the BearyChat Client instance. + * + * @param \ElfSundae\BearyChat\Client $client + * @return $this + */ + public function setClient($client) + { + if ($client instanceof Client && $this->client != $client) { + $this->configureDefaults($client->getMessageDefaults(), true); + } + + $this->client = $client; + + return $this; + } + /** * Get the text. * diff --git a/tests/MessageTest.php b/tests/MessageTest.php index 9181ee9..b4e3363 100644 --- a/tests/MessageTest.php +++ b/tests/MessageTest.php @@ -521,6 +521,32 @@ public function testAddImage() ], $message->toArray()); } + public function testSetClient() + { + $message = new Message; + $client = m::mock(Client::class) + ->shouldReceive('getMessageDefaults') + ->once() + ->andReturn(['user' => 'elf']) + ->mock(); + $message->setClient($client); + $this->assertSame($client, $message->getClient()); + $this->assertSame('elf', $message->getUser()); + + $message->setClient(null); + $this->assertNull($message->getClient()); + + $client = m::mock(Client::class) + ->shouldReceive('getMessageDefaults') + ->once() + ->andReturn(['user' => 'sundae', 'markdown' => false]) + ->mock(); + $message->setClient($client); + $this->assertSame($client, $message->getClient()); + $this->assertSame('elf', $message->getUser()); + $this->assertSame(false, $message->getMarkdown()); + } + protected function getClient($defaults = ['user' => 'elf', 'notification' => 'noti', 'attachment_color' => '#f00']) { return m::mock(Client::class)