--- /dev/null
+<?php
+
+namespace spec\Drupal\DrupalExtension\Listener;
+
+use Behat\Behat\EventDispatcher\Event\ScenarioTested;
+use Behat\Gherkin\Node\FeatureNode;
+use Behat\Gherkin\Node\ScenarioNode;
+use Behat\Testwork\Environment\Environment;
+use Behat\Testwork\Suite\Suite;
+
+use Drupal\DrupalDriverManager;
+
+use PhpSpec\ObjectBehavior;
+use Prophecy\Argument;
+
+class DriverListenerSpec extends ObjectBehavior
+{
+ function let(DrupalDriverManager $drupal, ScenarioTested $event, FeatureNode $feature, ScenarioNode $scenario, Suite $suite, Environment $environment)
+ {
+ $parameters = array(
+ 'default_driver' => 'blackbox',
+ 'api_driver' => 'drupal_driver',
+ );
+ $this->beConstructedWith($drupal, $parameters);
+
+ $event->getFeature()->willReturn($feature);
+ $event->getScenario()->willReturn($scenario);
+ $event->getEnvironment()->willReturn($environment);
+
+ $feature->getTags()->willReturn(array('api'));
+ $feature->hasTag('api')->willReturn(TRUE);
+
+ $scenario->getTags()->willReturn(array());
+ }
+
+ function it_should_be_an_event_subscriber()
+ {
+ $this->shouldHaveType('Symfony\Component\EventDispatcher\EventSubscriberInterface');
+ }
+
+ function it_resets_the_default_drupal_driver_before_scenarios($event, $drupal, $environment, $feature, $scenario)
+ {
+ $drupal->setDefaultDriverName('drupal_driver')->shouldBeCalled();
+ $drupal->setEnvironment($environment)->shouldBeCalled();
+ $event->getEnvironment()->shouldBeCalled();
+ $event->getFeature()->shouldBeCalled();
+ $event->getScenario()->shouldBeCalled();
+ $feature->getTags()->shouldBeCalled();
+ $scenario->getTags()->shouldBeCalled();
+ $this->prepareDefaultDrupalDriver($event);
+ }
+
+ function it_subscribes_to_scenarios_and_outlines()
+ {
+ $subscribedEvents = array(
+ 'tester.scenario_tested.before' => array('prepareDefaultDrupalDriver', 11),
+ 'tester.example_tested.before' => array('prepareDefaultDrupalDriver', 11),
+ );
+ $this->getSubscribedEvents()->shouldReturn($subscribedEvents);;
+ }
+}