/**
  * Check if ignored version skipping works as expected.
  *
  * @param string $version
  * @param array  $ignoredVersions
  * @param bool   $shouldSkip
  * @param string $expectedMessage
  *
  * @dataProvider getIgnoreVersionData()
  */
 public function testIgnoreVersion($version, $ignoredVersions, $shouldSkip, $expectedMessage = '')
 {
     $actualMessage = '';
     $skipped = false;
     $this->dummyBase = $this->getMockBuilder('ONGR\\ElasticsearchBundle\\Tests\\Unit\\Test\\ElasticsearchTestCaseDummy')->setMethods(['getIgnoredVersions', 'getContainer'])->disableOriginalConstructor()->getMock();
     $this->dummyBase->expects($this->any())->method('getContainer')->will($this->returnValue($this->containerMock));
     $this->dummyBase->expects($this->once())->method('getIgnoredVersions')->willReturn($ignoredVersions);
     $this->containerMock->expects($this->once())->method('has')->with('es.manager.default')->will($this->returnValue(true));
     $this->containerMock->expects($this->once())->method('get')->with('es.manager.default')->will($this->returnValue($this->managerMock));
     $this->managerMock->expects($this->once())->method('getConnection')->willReturn($this->connectionMock);
     $this->connectionMock->expects($shouldSkip ? $this->never() : $this->once())->method('dropAndCreateIndex');
     $this->connectionMock->expects($this->once())->method('getVersionNumber')->willReturn($version);
     $reflection = new \ReflectionMethod($this->dummyBase, 'setUp');
     $reflection->setAccessible(true);
     try {
         $reflection->invokeArgs($this->dummyBase, []);
     } catch (\PHPUnit_Framework_SkippedTestError $ex) {
         $actualMessage = $ex->getMessage();
         $skipped = true;
     }
     $this->assertEquals($shouldSkip, $skipped);
     $this->assertEquals($actualMessage, $expectedMessage);
 }