Example #1
0
 /**
  * @dataProvider getLanguages
  *
  * @param array $languages
  * @param string $expected
  * @param string $locale
  */
 public function testGetLocaleFromRequest(array $languages, $expected, $locale = '')
 {
     /* @var $request \PHPUnit_Framework_MockObject_MockObject|HttpRequest */
     $request = $this->getMockBuilder('\\Symfony\\Component\\HttpFoundation\\Request')->disableOriginalConstructor()->getMock();
     $request->expects($this->once())->method('getLanguages')->will($this->returnValue($languages));
     $request->expects($locale ? $this->once() : $this->never())->method('getLocale')->will($this->returnValue($locale));
     // validate languages
     $that = $this;
     for ($i = 0; $i < count($languages); ++$i) {
         $this->validator->expects($this->at($i))->method('validate')->will($this->returnCallback(function ($language, $constraint) use($that, $i, $languages, $locale) {
             $that->assertEquals($languages[$i], $language);
             $that->assertInstanceOf('\\Symfony\\Component\\Validator\\Constraints\\Locale', $constraint);
             $list = $that->getMock('\\Symfony\\Component\\Validator\\ConstraintViolationListInterface');
             $list->expects($that->once())->method('has')->will($this->returnValue($i + 1 < count($languages) || $locale))->with(0);
             return $list;
         }));
     }
     $listener = new Request($this->translatable, $this->translator, $this->validator, '');
     $this->assertEquals($expected, $listener->getLocale($request));
 }