/**
  * @dataProvider visitDatasourceDataProvider
  * @param string $currency
  */
 public function testVisitDatasource($currency)
 {
     if ($currency) {
         /** @var \PHPUnit_Framework_MockObject_MockObject|Request $request */
         $request = $this->getMock('Symfony\\Component\\HttpFoundation\\Request');
         $this->extension->setRequest($request);
         $request->expects($this->once())->method('get')->with(ProductSelectionGridExtension::CURRENCY_KEY)->willReturn($currency);
     }
     $gridName = 'products-select-grid-frontend';
     $token = $this->getMock('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface');
     $token->expects($this->any())->method('getUser')->will($this->returnValue(new AccountUser()));
     /** @var \PHPUnit_Framework_MockObject_MockObject|DatagridConfiguration $config */
     $config = $this->getMockBuilder('Oro\\Bundle\\DataGridBundle\\Datagrid\\Common\\DatagridConfiguration')->disableOriginalConstructor()->getMock();
     $config->expects($this->once())->method('getName')->will($this->returnValue($gridName));
     $this->tokenStorage->expects($this->any())->method('getToken')->will($this->returnValue($token));
     $qb = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock();
     /** @var \PHPUnit_Framework_MockObject_MockObject|OrmDatasource $dataSource */
     $dataSource = $this->getMockBuilder('Oro\\Bundle\\DataGridBundle\\Datasource\\Orm\\OrmDatasource')->disableOriginalConstructor()->getMock();
     $dataSource->expects($this->once())->method('getQueryBuilder')->will($this->returnValue($qb, $currency));
     $this->productListModifier->expects($this->once())->method('applyPriceListLimitations')->with($qb);
     $this->extension->visitDatasource($config, $dataSource);
     // Check that limits are applied only once
     $this->extension->visitDatasource($config, $dataSource);
 }