Updated the code for latest changes done in Behat

This commit is contained in:
Christophe Coevoet
2014-01-05 00:48:09 +01:00
parent 2c521b68ad
commit 8f5332371a
7 changed files with 30 additions and 35 deletions

View File

@@ -14,7 +14,7 @@
"require": { "require": {
"php": ">=5.3.2", "php": ">=5.3.2",
"behat/behat": "~3.0-RC1@dev", "behat/behat": "~3.0-RC2@dev",
"behat/mink": ">=1.4.3,<1.6-dev", "behat/mink": ">=1.4.3,<1.6-dev",
"symfony/config": "~2.2" "symfony/config": "~2.2"
}, },

View File

@@ -19,14 +19,9 @@ class MinkAwareInitializerSpec extends ObjectBehavior
$this->shouldHaveType('Behat\Behat\Context\Initializer\ContextInitializer'); $this->shouldHaveType('Behat\Behat\Context\Initializer\ContextInitializer');
} }
function it_supports_mink_aware_contexts(MinkAwareContext $context) function it_does_nothing_for_basic_contexts(Context $context)
{ {
$this->supportsContext($context)->shouldBe(true); $this->initializeContext($context);
}
function it_does_not_support_basic_contexts(Context $context)
{
$this->supportsContext($context)->shouldBe(false);
} }
function it_injects_mink_and_parameters_in_mink_aware_contexts(MinkAwareContext $context, $mink) function it_injects_mink_and_parameters_in_mink_aware_contexts(MinkAwareContext $context, $mink)

View File

@@ -7,7 +7,6 @@ use Behat\Gherkin\Node\FeatureNode;
use Behat\Gherkin\Node\ScenarioNode; use Behat\Gherkin\Node\ScenarioNode;
use Behat\Mink\Mink; use Behat\Mink\Mink;
use PhpSpec\ObjectBehavior; use PhpSpec\ObjectBehavior;
use Prophecy\Argument;
class SessionsListenerSpec extends ObjectBehavior class SessionsListenerSpec extends ObjectBehavior
{ {

View File

@@ -40,20 +40,29 @@ class MinkAwareInitializer implements ContextInitializer
} }
/** /**
* Checks if initializer supports provided context. * Initializes provided context.
*
* @param Context $context
*/
public function initializeContext(Context $context)
{
if (!$context instanceof MinkAwareContext && !$this->usesMinkDictionary($context)) {
return;
}
$context->setMink($this->mink);
$context->setMinkParameters($this->parameters);
}
/**
* Checks whether the context uses the MinkDictionary trait.
* *
* @param Context $context * @param Context $context
* *
* @return Boolean * @return Boolean
*/ */
public function supportsContext(Context $context) private function usesMinkDictionary(Context $context)
{ {
// if context/subcontext implements MinkAwareContext
if ($context instanceof MinkAwareContext) {
return true;
}
// if context/subcontext uses MinkDictionary trait
$refl = new \ReflectionObject($context); $refl = new \ReflectionObject($context);
if (method_exists($refl, 'getTraitNames')) { if (method_exists($refl, 'getTraitNames')) {
if (in_array('Behat\\MinkExtension\\Context\\MinkDictionary', $refl->getTraitNames())) { if (in_array('Behat\\MinkExtension\\Context\\MinkDictionary', $refl->getTraitNames())) {
@@ -63,15 +72,4 @@ class MinkAwareInitializer implements ContextInitializer
return false; return false;
} }
/**
* Initializes provided context.
*
* @param Context $context
*/
public function initializeContext(Context $context)
{
$context->setMink($this->mink);
$context->setMinkParameters($this->parameters);
}
} }

View File

@@ -65,7 +65,7 @@ class FailureShowListener implements EventSubscriberInterface
return; return;
} }
if (!$event->getTestResult()->getCallResult()->getException() instanceof MinkException) { if (!$event->getTestResult()->getException() instanceof MinkException) {
return; return;
} }

View File

@@ -10,6 +10,8 @@
namespace Behat\MinkExtension\Listener; namespace Behat\MinkExtension\Listener;
use Behat\Behat\Tester\Event\AbstractScenarioTested;
use Behat\Behat\Tester\Event\ExampleTested;
use Behat\Behat\Tester\Event\ScenarioTested; use Behat\Behat\Tester\Event\ScenarioTested;
use Behat\Mink\Mink; use Behat\Mink\Mink;
use Behat\Testwork\Tester\Event\ExerciseCompleted; use Behat\Testwork\Tester\Event\ExerciseCompleted;
@@ -45,6 +47,7 @@ class SessionsListener implements EventSubscriberInterface
{ {
return array( return array(
ScenarioTested::BEFORE => array('prepareDefaultMinkSession', 10), ScenarioTested::BEFORE => array('prepareDefaultMinkSession', 10),
ExampleTested::BEFORE => array('prepareDefaultMinkSession', 10),
ExerciseCompleted::AFTER => array('tearDownMinkSessions', -10) ExerciseCompleted::AFTER => array('tearDownMinkSessions', -10)
); );
} }
@@ -60,9 +63,9 @@ class SessionsListener implements EventSubscriberInterface
* `@insulated` tag will cause Mink to stop current sessions before scenario * `@insulated` tag will cause Mink to stop current sessions before scenario
* instead of just soft-resetting them * instead of just soft-resetting them
* *
* @param ScenarioTested $event * @param AbstractScenarioTested $event
*/ */
public function prepareDefaultMinkSession(ScenarioTested $event) public function prepareDefaultMinkSession(AbstractScenarioTested $event)
{ {
$scenario = $event->getScenario(); $scenario = $event->getScenario();
$feature = $event->getFeature(); $feature = $event->getFeature();