@@ -159,6 +159,37 @@ class CachingTestCase extends Tester\TestCase
159159 Assert::same (304 , $ response ->getPrevious ()->getCode ());
160160 }
161161
162+
163+ public function testRepeatedRequest ()
164+ {
165+ $ this ->innerClient ->onRequest = function (Milo \Github \Http \Request $ request ) {
166+ if ($ request ->hasHeader ('If-None-Match ' )) {
167+ return new Milo \Github \Http \Response (304 , [], 'inner-304 ' );
168+ }
169+
170+ return new Milo \Github \Http \Response (200 , ['ETag ' => '"test" ' ], 'inner-200 ' );
171+ };
172+
173+ $ request = new Milo \Github \Http \Request ('' , '' );
174+
175+ # Empty cache
176+ $ response = $ this ->client ->request ($ request );
177+ Assert::same ('inner-200 ' , $ response ->getContent ());
178+ Assert::null ($ response ->getPrevious ());
179+
180+ # From cache
181+ $ response = $ this ->client ->request ($ request );
182+ Assert::same ('inner-200 ' , $ response ->getContent ());
183+ Assert::type ('Milo\Github\Http\Response ' , $ response ->getPrevious ());
184+ Assert::same ('inner-304 ' , $ response ->getPrevious ()->getContent ());
185+
186+ # Again
187+ $ response = $ this ->client ->request ($ request );
188+ Assert::same ('inner-200 ' , $ response ->getContent ());
189+ Assert::type ('Milo\Github\Http\Response ' , $ response ->getPrevious ());
190+ Assert::same ('inner-304 ' , $ response ->getPrevious ()->getContent ());
191+ }
192+
162193}
163194
164195(new CachingTestCase )->run ();
0 commit comments