MessageDispatchTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. declare(strict_types=1);
  3. namespace Luolongfei\Tests\Libs;
  4. use Luolongfei\Libs\Config;
  5. use Luolongfei\Libs\Connector\MessageServiceInterface;
  6. use Luolongfei\Libs\Message;
  7. use Luolongfei\Tests\TestCase;
  8. class DummyMessageSuccess implements MessageServiceInterface
  9. {
  10. public static int $calls = 0;
  11. public function send(string $content, string $subject = '', int $type = 1, array $data = [], ?string $recipient = null, ...$params)
  12. {
  13. self::$calls++;
  14. return true;
  15. }
  16. }
  17. class DummyMessageFailure implements MessageServiceInterface
  18. {
  19. public static int $calls = 0;
  20. public function send(string $content, string $subject = '', int $type = 1, array $data = [], ?string $recipient = null, ...$params)
  21. {
  22. self::$calls++;
  23. return false;
  24. }
  25. }
  26. final class MessageDispatchTest extends TestCase
  27. {
  28. protected function setUp(): void
  29. {
  30. parent::setUp();
  31. DummyMessageSuccess::$calls = 0;
  32. DummyMessageFailure::$calls = 0;
  33. }
  34. public function testMessageDispatchReturnsTrueWhenAnyChannelSucceeds(): void
  35. {
  36. $config = Config::getInstance();
  37. $this->setProperty($config, 'allConfig', [
  38. 'message' => [
  39. [
  40. 'enable' => 1,
  41. 'not_enabled_tips' => false,
  42. 'class' => DummyMessageFailure::class,
  43. 'name' => 'failure',
  44. ],
  45. [
  46. 'enable' => 1,
  47. 'not_enabled_tips' => false,
  48. 'class' => DummyMessageSuccess::class,
  49. 'name' => 'success',
  50. ],
  51. ],
  52. ]);
  53. $this->assertTrue(Message::send('hello world'));
  54. $this->assertSame(1, DummyMessageFailure::$calls);
  55. $this->assertSame(1, DummyMessageSuccess::$calls);
  56. }
  57. public function testMessageDispatchReturnsFalseWhenNoChannelSucceeds(): void
  58. {
  59. $config = Config::getInstance();
  60. $this->setProperty($config, 'allConfig', [
  61. 'message' => [
  62. [
  63. 'enable' => 1,
  64. 'not_enabled_tips' => false,
  65. 'class' => DummyMessageFailure::class,
  66. 'name' => 'failure',
  67. ],
  68. ],
  69. ]);
  70. $this->assertFalse(Message::send('hello world'));
  71. $this->assertSame(1, DummyMessageFailure::$calls);
  72. }
  73. }