瀏覽代碼

[RequestHandler] fixed assertion in getFormat when format is associated with only one mime-type + phpunit tests

Pascal Borreli 15 年之前
父節點
當前提交
dd7817ae62

+ 1 - 1
src/Symfony/Components/RequestHandler/Request.php

@@ -353,7 +353,7 @@ class Request implements RequestInterface
 
     foreach (static::$formats as $format => $mimeTypes)
     {
-      if (in_array($mimeType, $mimeTypes))
+      if (in_array($mimeType, (array) $mimeTypes))
       {
         return $format;
       }

+ 15 - 0
tests/Symfony/Tests/Components/RequestHandler/RequestTest.php

@@ -63,4 +63,19 @@ class RequestTest extends \PHPUnit_Framework_TestCase
     $this->assertEquals(array('foo' => 'foobar'), $dup->getPathParameters(), '->duplicate() overrides the path parameters if provided');
     $this->assertEquals('foobar', $dup->getHttpHeader('foo'), '->duplicate() overrides the HTTP header if provided');
   }
+
+  /**
+   * @covers Symfony\Components\RequestHandler\Request::getFormat
+   */
+  public function testGetFormat()
+  {
+    $request = new Request();
+
+    $this->assertEquals(null, $request->getFormat(null), '->getFormat() returns null when mime-type is null');
+    $this->assertEquals(null, $request->getFormat('unexistant-mime-type'), '->getFormat() returns null when mime-type is unknown');
+    $this->assertEquals('txt', $request->getFormat('text/plain'), '->getFormat() returns correct format when mime-type have one format only');
+    $this->assertEquals('js', $request->getFormat('application/javascript'), '->getFormat() returns correct format when format have multiple mime-type (first)');
+    $this->assertEquals('js', $request->getFormat('application/x-javascript'), '->getFormat() returns correct format when format have multiple mime-type');
+    $this->assertEquals('js', $request->getFormat('text/javascript'), '->getFormat() returns correct format when format have multiple mime-type (last)');
+  }
 }