diff --git a/src/Entities/Entity.php b/src/Entities/Entity.php index d1ac6b64..78ddf370 100644 --- a/src/Entities/Entity.php +++ b/src/Entities/Entity.php @@ -57,7 +57,7 @@ public function __construct(array $data, string $bot_username = '') * * @return array */ - public function jsonSerialize() + public function jsonSerialize(): array { return $this->getRawData(); } @@ -161,6 +161,7 @@ public function __call($method, $args) // Limit setters to specific classes. if ($this instanceof InlineEntity || $this instanceof InputMedia || $this instanceof Keyboard || $this instanceof KeyboardButton) { $this->$property_name = $args[0]; + $this->raw_data[$property_name] = $args[0]; return $this; } diff --git a/tests/Unit/Entities/KeyboardTest.php b/tests/Unit/Entities/KeyboardTest.php index f5ed2e6c..12b56ab9 100644 --- a/tests/Unit/Entities/KeyboardTest.php +++ b/tests/Unit/Entities/KeyboardTest.php @@ -186,4 +186,23 @@ public function testKeyboardAddRows(): void $keyboard = $keyboard_obj->getProperty('keyboard'); self::assertSame('Button Text 4', $keyboard[2][0]->getText()); } + + public function testSetterMethods(): void + { + $keyboard = (new Keyboard( + [ + ['text' => 'One'] + ] + ))->setResizeKeyboard(true); + + $array = json_decode($keyboard->toJson(), true); + + $this->assertIsArray($array); + + $this->assertArrayHasKey('keyboard', $array); + $this->assertArrayHasKey('resize_keyboard', $array); + + $this->assertIsArray($array['keyboard']); + $this->assertEquals(true, $array['resize_keyboard']); + } }