WhatsappTemplateTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace CMText\RichContent\Templates\Whatsapp;
  3. use CMText\RichContent\Messages\MediaContent;
  4. use CMText\RichContent\Templates\TemplateContentBase;
  5. use PHPUnit\Framework\TestCase;
  6. class WhatsappTemplateTest extends TestCase
  7. {
  8. public function testAddComponents()
  9. {
  10. $whatsappTemplate = new WhatsappTemplate(
  11. 'my-namespace-id',
  12. 'template-name',
  13. new Language('en')
  14. );
  15. $whatsappTemplate->addComponents([
  16. new ComponentHeader([
  17. new ComponentParameterImage(
  18. new MediaContent(
  19. 'image name',
  20. 'image://location',
  21. 'image/beautiful'
  22. )
  23. )
  24. ]),
  25. new ComponentBody([
  26. new ComponentParameterText('body text')
  27. ]),
  28. new ComponentFooter([
  29. new ComponentParameterText('footer text')
  30. ]),
  31. new ComponentButtonQuickReply(
  32. 0,
  33. new ComponentParameterPayload('🤠')
  34. ),
  35. new ComponentButtonUrl(
  36. 1,
  37. new ComponentParameterText('https://cm.com/')
  38. )
  39. ]);
  40. $json = json_decode(
  41. json_encode($whatsappTemplate)
  42. );
  43. $this->assertCount(
  44. 5,
  45. $json->whatsapp->components
  46. );
  47. }
  48. public function test__construct()
  49. {
  50. // partial
  51. $whatsappTemplate = new WhatsappTemplate(
  52. 'my-namespace-id',
  53. 'template-name',
  54. new Language('en')
  55. );
  56. $this->assertInstanceOf(
  57. TemplateContentBase::class,
  58. $whatsappTemplate
  59. );
  60. // full
  61. $whatsappTemplate = new WhatsappTemplate(
  62. 'my-namespace-id',
  63. 'template-name',
  64. new Language('en'),
  65. [
  66. new ComponentParameterDatetime(
  67. 'now',
  68. new \DateTime()
  69. ),
  70. new ComponentParameterDatetime(
  71. 'some time ago',
  72. (new \DateTimeImmutable())->setTimestamp(rand(0, time()))
  73. ),
  74. ]
  75. );
  76. $this->assertInstanceOf(
  77. TemplateContentBase::class,
  78. $whatsappTemplate
  79. );
  80. }
  81. public function testTemplateWithoutComponents()
  82. {
  83. $whatsappTemplate = new WhatsappTemplate(
  84. 'my-namespace-id',
  85. 'template-name',
  86. new Language('en')
  87. );
  88. $json = json_decode(
  89. json_encode($whatsappTemplate)
  90. );
  91. $this->assertObjectHasAttribute(
  92. 'components',
  93. $json->whatsapp
  94. );
  95. }
  96. }