1111use Bunny \Message ;
1212use Bunny \Test \Library \ClientHelper ;
1313use PHPUnit \Framework \TestCase ;
14+ use React \Promise \Deferred ;
1415use WyriHaximus \React \PHPUnit \RunTestsInFibersTrait ;
16+ use function React \Async \await ;
1517use function str_repeat ;
1618
1719class ChannelTest extends TestCase
@@ -92,34 +94,46 @@ public function testPublish(): void
9294
9395 public function testConsume (): void
9496 {
97+ /**
98+ * @var Deferred<string> $deferred
99+ */
100+ $ deferred = new Deferred ();
95101 $ c = $ this ->helper ->createClient ();
96102
97103 $ ch = $ c ->connect ()->channel ();
98104 self ::assertTrue ($ c ->isConnected ());
99105 $ ch ->queueDeclare ('test_queue ' , false , false , false , true );
100106 self ::assertTrue ($ c ->isConnected ());
101- $ ch ->consume (static function (Message $ msg , Channel $ ch , Client $ c ): void {
102- self :: assertEquals ( ' hi ' , $ msg ->content );
107+ $ ch ->consume (static function (Message $ msg , Channel $ ch , Client $ c ) use ( $ deferred ) : void {
108+ $ deferred -> resolve ( $ msg ->content );
103109 });
104110 self ::assertTrue ($ c ->isConnected ());
105111 $ ch ->publish ('hi ' , [], '' , 'test_queue ' );
112+ self ::assertEquals ('hi ' , await ($ deferred ->promise ()));
113+
106114 self ::assertTrue ($ c ->isConnected ());
107115 $ c ->disconnect ();
108116 self ::assertFalse ($ c ->isConnected ());
109117 }
110118
111119 public function testHeaders (): void
112120 {
121+ /**
122+ * @var Deferred<bool> $deferred
123+ */
124+ $ deferred = new Deferred ();
113125 $ c = $ this ->helper ->createClient ();
114126
115127 $ ch = $ c ->connect ()->channel ();
116128 $ ch ->queueDeclare ('test_queue ' , false , false , false , true );
117- $ ch ->consume (static function (Message $ msg , Channel $ ch , Client $ c ): void {
129+ $ ch ->consume (static function (Message $ msg , Channel $ ch , Client $ c ) use ( $ deferred ) : void {
118130 self ::assertTrue ($ msg ->hasHeader ('content-type ' ));
119131 self ::assertEquals ('text/html ' , $ msg ->getHeader ('content-type ' ));
120132 self ::assertEquals ('<b>hi html</b> ' , $ msg ->content );
133+ $ deferred ->resolve (true );
121134 });
122135 $ ch ->publish ('<b>hi html</b> ' , ['content-type ' => 'text/html ' ], '' , 'test_queue ' );
136+ self ::assertTrue (await ($ deferred ->promise ()));
123137
124138 self ::assertTrue ($ c ->isConnected ());
125139 $ c ->disconnect ();
@@ -128,16 +142,22 @@ public function testHeaders(): void
128142
129143 public function testBigMessage (): void
130144 {
145+ /**
146+ * @var Deferred<bool> $deferred
147+ */
148+ $ deferred = new Deferred ();
131149 $ body = str_repeat ('a ' , 10 << 20 /* 10 MiB */ );
132150
133151 $ c = $ this ->helper ->createClient ();
134152
135153 $ ch = $ c ->connect ()->channel ();
136154 $ ch ->queueDeclare ('test_queue ' , false , false , false , true );
137- $ ch ->consume (static function (Message $ msg , Channel $ ch , Client $ c ) use ($ body ): void {
155+ $ ch ->consume (static function (Message $ msg , Channel $ ch , Client $ c ) use ($ body, $ deferred ): void {
138156 self ::assertEquals ($ body , $ msg ->content );
157+ $ deferred ->resolve (true );
139158 });
140159 $ ch ->publish ($ body , [], '' , 'test_queue ' );
160+ self ::assertTrue (await ($ deferred ->promise ()));
141161
142162 self ::assertTrue ($ c ->isConnected ());
143163 $ c ->disconnect ();
0 commit comments