|
19 | 19 | namespace LINE\Tests\LINEBot; |
20 | 20 |
|
21 | 21 | use LINE\LINEBot; |
22 | | -use LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder; |
23 | | -use LINE\LINEBot\TemplateActionBuilder\PostbackTemplateActionBuilder; |
24 | | -use LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder; |
25 | 22 | use LINE\LINEBot\Constant\ActionType; |
26 | 23 | use LINE\LINEBot\Constant\MessageType; |
27 | 24 | use LINE\LINEBot\Constant\TemplateType; |
28 | 25 | use LINE\LINEBot\MessageBuilder\TemplateBuilder\ButtonTemplateBuilder; |
| 26 | +use LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder; |
| 27 | +use LINE\LINEBot\TemplateActionBuilder\PostbackTemplateActionBuilder; |
| 28 | +use LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder; |
29 | 29 | use LINE\Tests\LINEBot\Util\DummyHttpClient; |
30 | 30 |
|
31 | 31 | class SendTemplateTest extends \PHPUnit_Framework_TestCase |
@@ -147,4 +147,51 @@ public function testPushTemplate() |
147 | 147 | $this->assertTrue($res->isSucceeded()); |
148 | 148 | $this->assertEquals(200, $res->getJSONDecodedBody()['status']); |
149 | 149 | } |
| 150 | + |
| 151 | + public function testPushTemplateWithText() |
| 152 | + { |
| 153 | + // Support text field on postback template |
| 154 | + // Ref: https://github.com/line/line-bot-sdk-php/issues/47 |
| 155 | + $mock = function ($testRunner, $httpMethod, $url, $data) { |
| 156 | + /** @var \PHPUnit_Framework_TestCase $testRunner */ |
| 157 | + $testRunner->assertEquals('POST', $httpMethod); |
| 158 | + $testRunner->assertEquals('https://api.line.me/v2/bot/message/push', $url); |
| 159 | + |
| 160 | + $testRunner->assertEquals('DESTINATION', $data['to']); |
| 161 | + $testRunner->assertEquals(1, count($data['messages'])); |
| 162 | + |
| 163 | + $message = $data['messages'][0]; |
| 164 | + $template = $message['template']; |
| 165 | + $actions = $template['actions']; |
| 166 | + |
| 167 | + $testRunner->assertEquals(3, count($actions)); |
| 168 | + $testRunner->assertEquals(ActionType::POSTBACK, $actions[0]['type']); |
| 169 | + $testRunner->assertEquals('postback label', $actions[0]['label']); |
| 170 | + $testRunner->assertEquals('post=back', $actions[0]['data']); |
| 171 | + $testRunner->assertEquals('extend text', $actions[0]['text']); |
| 172 | + |
| 173 | + return ['status' => 200]; |
| 174 | + }; |
| 175 | + $bot = new LINEBot(new DummyHttpClient($this, $mock), ['channelSecret' => 'CHANNEL-SECRET']); |
| 176 | + $res = $bot->pushMessage( |
| 177 | + 'DESTINATION', |
| 178 | + new LINEBot\MessageBuilder\TemplateMessageBuilder( |
| 179 | + 'alt test', |
| 180 | + new ButtonTemplateBuilder( |
| 181 | + 'button title', |
| 182 | + 'button button', |
| 183 | + 'https://example.com/thumbnail.jpg', |
| 184 | + [ |
| 185 | + new PostbackTemplateActionBuilder('postback label', 'post=back', 'extend text'), // <= Test here |
| 186 | + new MessageTemplateActionBuilder('message label', 'test message'), |
| 187 | + new UriTemplateActionBuilder('uri label', 'https://example.com'), |
| 188 | + ] |
| 189 | + ) |
| 190 | + ) |
| 191 | + ); |
| 192 | + |
| 193 | + $this->assertEquals(200, $res->getHTTPStatus()); |
| 194 | + $this->assertTrue($res->isSucceeded()); |
| 195 | + $this->assertEquals(200, $res->getJSONDecodedBody()['status']); |
| 196 | + } |
150 | 197 | } |
0 commit comments