@@ -184,6 +184,35 @@ class CachingTestCase extends Tester\TestCase
184184 }
185185
186186
187+ public function testPreferIfModifiedAgainstETag ()
188+ {
189+ $ this ->innerClient ->onRequest = function (Http \Request $ request ) {
190+ Assert::false ($ request ->hasHeader ('If-None-Match ' ));
191+ Assert::false ($ request ->hasHeader ('If-Modified-Since ' ));
192+
193+ return new Http \Response (200 , ['Last-Modified ' => 'today ' , 'ETag ' => 'e-tag ' ], "response- {$ request ->getContent ()}" );
194+ };
195+
196+ $ response = $ this ->client ->request (new Http \Request ('' , '' , [], '1 ' ));
197+ Assert::same ('response-1 ' , $ response ->getContent ());
198+ Assert::same (1 , $ this ->innerClient ->requestCount );
199+
200+
201+ $ this ->innerClient ->onRequest = function (Http \Request $ request ) {
202+ Assert::false ($ request ->hasHeader ('ETag ' ));
203+ Assert::same ('today ' , $ request ->getHeader ('If-Modified-Since ' ));
204+
205+ return new Http \Response (304 , [], "response- {$ request ->getContent ()}" );
206+ };
207+
208+ $ response = $ this ->client ->request (new Http \Request ('' , '' , [], '2 ' ));
209+ Assert::same ('response-1 ' , $ response ->getContent ());
210+ Assert::type ('Milo\Github\Http\Response ' , $ response ->getPrevious ());
211+ Assert::same (304 , $ response ->getPrevious ()->getCode ());
212+ Assert::same (2 , $ this ->innerClient ->requestCount );
213+ }
214+
215+
187216 public function testRepeatedRequest ()
188217 {
189218 $ request = new Http \Request ('' , '' , [], 'same ' );
0 commit comments