mirror of
https://github.com/silverstripe/silverstripe-behat-extension
synced 2024-10-22 17:05:32 +02:00
Update for framework namespacing
This commit is contained in:
parent
ce9f6c9403
commit
faca1e6f71
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace SilverStripe\BehatExtension\Compiler;
|
namespace SilverStripe\BehatExtension\Compiler;
|
||||||
|
|
||||||
|
use SilverStripe\Dev\SapphireTest;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
||||||
|
|
||||||
@ -22,12 +23,7 @@ class CoreInitializationPass implements CompilerPassInterface
|
|||||||
$_GET['flush'] = 1;
|
$_GET['flush'] = 1;
|
||||||
require_once $frameworkPath . '/core/Core.php';
|
require_once $frameworkPath . '/core/Core.php';
|
||||||
|
|
||||||
if (class_exists('TestRunner')) {
|
SapphireTest::use_test_manifest();
|
||||||
// 3.x compat
|
|
||||||
\TestRunner::use_test_manifest();
|
|
||||||
} else {
|
|
||||||
\SapphireTest::use_test_manifest();
|
|
||||||
}
|
|
||||||
|
|
||||||
unset($_GET['flush']);
|
unset($_GET['flush']);
|
||||||
|
|
||||||
|
@ -58,8 +58,8 @@ class MinkExtensionBaseUrlPass implements CompilerPassInterface
|
|||||||
* Try to auto-detect host for webroot based on _ss_environment.php data (unless explicitly set in behat.yml)
|
* Try to auto-detect host for webroot based on _ss_environment.php data (unless explicitly set in behat.yml)
|
||||||
* Copied logic from Core.php, because it needs to be executed prior to {@link SilverStripeAwareInitializer}.
|
* Copied logic from Core.php, because it needs to be executed prior to {@link SilverStripeAwareInitializer}.
|
||||||
*
|
*
|
||||||
* @param String Absolute start path to search upwards from
|
* @param string $path Absolute start path to search upwards from
|
||||||
* @return Boolean Absolute path to environment file
|
* @return string Absolute path to environment file
|
||||||
*/
|
*/
|
||||||
protected function findEnvironmentConfigFile($path)
|
protected function findEnvironmentConfigFile($path)
|
||||||
{
|
{
|
||||||
@ -85,8 +85,8 @@ class MinkExtensionBaseUrlPass implements CompilerPassInterface
|
|||||||
/**
|
/**
|
||||||
* Copied logic from Core.php, because it needs to be executed prior to {@link SilverStripeAwareInitializer}.
|
* Copied logic from Core.php, because it needs to be executed prior to {@link SilverStripeAwareInitializer}.
|
||||||
*
|
*
|
||||||
* @param String Absolute start path to search upwards from
|
* @param string $path Absolute start path to search upwards from
|
||||||
* @param Array Map of paths to host names
|
* @param array $mapping Map of paths to host names
|
||||||
* @return String URL
|
* @return String URL
|
||||||
*/
|
*/
|
||||||
protected function findBaseUrlFromMapping($path, $mapping)
|
protected function findBaseUrlFromMapping($path, $mapping)
|
||||||
|
@ -2,13 +2,12 @@
|
|||||||
|
|
||||||
namespace SilverStripe\BehatExtension\Console\Processor;
|
namespace SilverStripe\BehatExtension\Console\Processor;
|
||||||
|
|
||||||
|
use SilverStripe\Core\Manifest\SS_ClassLoader;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
use Symfony\Component\Console\Command\Command;
|
use Symfony\Component\Console\Command\Command;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
use Symfony\Component\Console\Input\InputOption;
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
|
||||||
use Behat\Behat\Console\Processor\InitProcessor as BaseProcessor;
|
use Behat\Behat\Console\Processor\InitProcessor as BaseProcessor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,7 +77,7 @@ class InitProcessor extends BaseProcessor
|
|||||||
// Can't use 'behat.paths.base' since that's locked at this point to base folder (not module)
|
// Can't use 'behat.paths.base' since that's locked at this point to base folder (not module)
|
||||||
$pathSuffix = $this->container->getParameter('behat.silverstripe_extension.context.path_suffix');
|
$pathSuffix = $this->container->getParameter('behat.silverstripe_extension.context.path_suffix');
|
||||||
$currentModuleName = null;
|
$currentModuleName = null;
|
||||||
$modules = \SS_ClassLoader::instance()->getManifest()->getModules();
|
$modules = SS_ClassLoader::instance()->getManifest()->getModules();
|
||||||
$currentModuleName = $this->container->getParameter('behat.silverstripe_extension.module');
|
$currentModuleName = $this->container->getParameter('behat.silverstripe_extension.module');
|
||||||
|
|
||||||
// get module from short notation if path starts from @
|
// get module from short notation if path starts from @
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
namespace SilverStripe\BehatExtension\Console\Processor;
|
namespace SilverStripe\BehatExtension\Console\Processor;
|
||||||
|
|
||||||
|
use SilverStripe\Core\Manifest\SS_ClassLoader;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
use Symfony\Component\Console\Command\Command;
|
use Symfony\Component\Console\Command\Command;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
|
||||||
use Behat\Behat\Console\Processor\LocatorProcessor as BaseProcessor;
|
use Behat\Behat\Console\Processor\LocatorProcessor as BaseProcessor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,7 +61,7 @@ class LocatorProcessor extends BaseProcessor
|
|||||||
$pathSuffix = $this->container->getParameter('behat.silverstripe_extension.context.path_suffix');
|
$pathSuffix = $this->container->getParameter('behat.silverstripe_extension.context.path_suffix');
|
||||||
|
|
||||||
$currentModuleName = null;
|
$currentModuleName = null;
|
||||||
$modules = \SS_ClassLoader::instance()->getManifest()->getModules();
|
$modules = SS_ClassLoader::instance()->getManifest()->getModules();
|
||||||
|
|
||||||
// get module specified in behat.yml
|
// get module specified in behat.yml
|
||||||
$currentModuleName = $this->container->getParameter('behat.silverstripe_extension.module');
|
$currentModuleName = $this->container->getParameter('behat.silverstripe_extension.module');
|
||||||
|
@ -6,11 +6,10 @@ use Behat\Behat\Context\BehatContext;
|
|||||||
use Behat\Behat\Context\Step;
|
use Behat\Behat\Context\Step;
|
||||||
use Behat\Behat\Event\StepEvent;
|
use Behat\Behat\Event\StepEvent;
|
||||||
use Behat\Behat\Event\ScenarioEvent;
|
use Behat\Behat\Event\ScenarioEvent;
|
||||||
|
|
||||||
use Behat\Mink\Driver\Selenium2Driver;
|
use Behat\Mink\Driver\Selenium2Driver;
|
||||||
|
use SilverStripe\Assets\File;
|
||||||
|
use SilverStripe\Assets\Filesystem;
|
||||||
|
|
||||||
use Behat\Gherkin\Node\PyStringNode;
|
|
||||||
use Behat\Gherkin\Node\TableNode;
|
|
||||||
|
|
||||||
// PHPUnit
|
// PHPUnit
|
||||||
require_once BASE_PATH . '/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php';
|
require_once BASE_PATH . '/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php';
|
||||||
@ -60,6 +59,7 @@ class BasicContext extends BehatContext
|
|||||||
/**
|
/**
|
||||||
* Get Mink session from MinkContext
|
* Get Mink session from MinkContext
|
||||||
*
|
*
|
||||||
|
* @param string $name
|
||||||
* @return \Behat\Mink\Session
|
* @return \Behat\Mink\Session
|
||||||
*/
|
*/
|
||||||
public function getSession($name = null)
|
public function getSession($name = null)
|
||||||
@ -274,10 +274,10 @@ JS;
|
|||||||
*/
|
*/
|
||||||
public function cleanAssetsAfterScenario(ScenarioEvent $event)
|
public function cleanAssetsAfterScenario(ScenarioEvent $event)
|
||||||
{
|
{
|
||||||
foreach (\File::get() as $file) {
|
foreach (File::get() as $file) {
|
||||||
$file->delete();
|
$file->delete();
|
||||||
}
|
}
|
||||||
\Filesystem::removeFolder(ASSETS_PATH, true);
|
Filesystem::removeFolder(ASSETS_PATH, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function takeScreenshot(StepEvent $event)
|
public function takeScreenshot(StepEvent $event)
|
||||||
@ -298,7 +298,7 @@ JS;
|
|||||||
return;
|
return;
|
||||||
} // quit silently when path is not set
|
} // quit silently when path is not set
|
||||||
|
|
||||||
\Filesystem::makeFolder($path);
|
Filesystem::makeFolder($path);
|
||||||
$path = realpath($path);
|
$path = realpath($path);
|
||||||
|
|
||||||
if (!file_exists($path)) {
|
if (!file_exists($path)) {
|
||||||
|
@ -18,6 +18,7 @@ class ModuleContextClassGuesser implements ClassGuesserInterface
|
|||||||
* Initializes guesser.
|
* Initializes guesser.
|
||||||
*
|
*
|
||||||
* @param string $namespaceSuffix
|
* @param string $namespaceSuffix
|
||||||
|
* @param string $contextClass
|
||||||
*/
|
*/
|
||||||
public function __construct($namespaceSuffix, $contextClass)
|
public function __construct($namespaceSuffix, $contextClass)
|
||||||
{
|
{
|
||||||
@ -28,7 +29,8 @@ class ModuleContextClassGuesser implements ClassGuesserInterface
|
|||||||
/**
|
/**
|
||||||
* Sets bundle namespace to use for guessing.
|
* Sets bundle namespace to use for guessing.
|
||||||
*
|
*
|
||||||
* @param string $namespace
|
* @param string $namespaceBase
|
||||||
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function setNamespaceBase($namespaceBase)
|
public function setNamespaceBase($namespaceBase)
|
||||||
{
|
{
|
||||||
|
@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
namespace SilverStripe\BehatExtension\Context;
|
namespace SilverStripe\BehatExtension\Context;
|
||||||
|
|
||||||
use Behat\Behat\Context\ClosuredContextInterface;
|
|
||||||
use Behat\Behat\Context\TranslatedContextInterface;
|
|
||||||
use Behat\Behat\Context\BehatContext;
|
use Behat\Behat\Context\BehatContext;
|
||||||
use Behat\Behat\Context\Step;
|
use Behat\Behat\Context\Step;
|
||||||
use Behat\Behat\Event\FeatureEvent;
|
|
||||||
use Behat\Behat\Event\ScenarioEvent;
|
use Behat\Behat\Event\ScenarioEvent;
|
||||||
use Behat\Behat\Exception\PendingException;
|
|
||||||
use Behat\Gherkin\Node\PyStringNode;
|
|
||||||
use Behat\Gherkin\Node\TableNode;
|
use Behat\Gherkin\Node\TableNode;
|
||||||
|
use Behat\Mink\Session;
|
||||||
|
use SilverStripe\BehatExtension\Utility\TestMailer;
|
||||||
|
use SilverStripe\Control\Email\Email;
|
||||||
|
use SilverStripe\Core\Config\Config;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use Symfony\Component\DomCrawler\Crawler;
|
use Symfony\Component\DomCrawler\Crawler;
|
||||||
|
|
||||||
// PHPUnit
|
// PHPUnit
|
||||||
@ -23,6 +23,9 @@ class EmailContext extends BehatContext
|
|||||||
{
|
{
|
||||||
protected $context;
|
protected $context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var TestMailer
|
||||||
|
*/
|
||||||
protected $mailer;
|
protected $mailer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,6 +47,9 @@ class EmailContext extends BehatContext
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Mink session from MinkContext
|
* Get Mink session from MinkContext
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @return Session
|
||||||
*/
|
*/
|
||||||
public function getSession($name = null)
|
public function getSession($name = null)
|
||||||
{
|
{
|
||||||
@ -57,9 +63,9 @@ class EmailContext extends BehatContext
|
|||||||
{
|
{
|
||||||
// Also set through the 'supportbehat' extension
|
// Also set through the 'supportbehat' extension
|
||||||
// to ensure its available both in CLI execution and the tested browser session
|
// to ensure its available both in CLI execution and the tested browser session
|
||||||
$this->mailer = new \SilverStripe\BehatExtension\Utility\TestMailer();
|
$this->mailer = new TestMailer();
|
||||||
\Email::set_mailer($this->mailer);
|
Injector::inst()->registerService($this->mailer, 'SilverStripe\\Control\\Email\\Mailer');
|
||||||
\Config::inst()->update("Email", "send_all_emails_to", null);
|
Email::config()->update("send_all_emails_to", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6,7 +6,13 @@ use Behat\Behat\Context\BehatContext;
|
|||||||
use Behat\Behat\Event\ScenarioEvent;
|
use Behat\Behat\Event\ScenarioEvent;
|
||||||
use Behat\Gherkin\Node\PyStringNode;
|
use Behat\Gherkin\Node\PyStringNode;
|
||||||
use Behat\Gherkin\Node\TableNode;
|
use Behat\Gherkin\Node\TableNode;
|
||||||
use SilverStripe\Filesystem\Storage\AssetStore;
|
use SilverStripe\Assets\Folder;
|
||||||
|
use SilverStripe\Assets\Storage\AssetStore;
|
||||||
|
use SilverStripe\Core\ClassInfo;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
|
use SilverStripe\Dev\FixtureFactory;
|
||||||
|
use SilverStripe\Dev\SapphireTest;
|
||||||
|
use SilverStripe\Dev\YamlFixture;
|
||||||
use SilverStripe\ORM\DB;
|
use SilverStripe\ORM\DB;
|
||||||
use SilverStripe\ORM\DataObject;
|
use SilverStripe\ORM\DataObject;
|
||||||
use SilverStripe\ORM\Versioning\Versioned;
|
use SilverStripe\ORM\Versioning\Versioned;
|
||||||
@ -23,7 +29,7 @@ class FixtureContext extends BehatContext
|
|||||||
protected $context;
|
protected $context;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \FixtureFactory
|
* @var FixtureFactory
|
||||||
*/
|
*/
|
||||||
protected $fixtureFactory;
|
protected $fixtureFactory;
|
||||||
|
|
||||||
@ -55,20 +61,23 @@ class FixtureContext extends BehatContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \FixtureFactory
|
* @return FixtureFactory
|
||||||
*/
|
*/
|
||||||
public function getFixtureFactory()
|
public function getFixtureFactory()
|
||||||
{
|
{
|
||||||
if (!$this->fixtureFactory) {
|
if (!$this->fixtureFactory) {
|
||||||
$this->fixtureFactory = \Injector::inst()->create('FixtureFactory', 'FixtureContextFactory');
|
$this->fixtureFactory = Injector::inst()->create(
|
||||||
|
'SilverStripe\\Dev\\FixtureFactory',
|
||||||
|
'FixtureContextFactory'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
return $this->fixtureFactory;
|
return $this->fixtureFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \FixtureFactory $factory
|
* @param FixtureFactory $factory
|
||||||
*/
|
*/
|
||||||
public function setFixtureFactory(\FixtureFactory $factory)
|
public function setFixtureFactory(FixtureFactory $factory)
|
||||||
{
|
{
|
||||||
$this->fixtureFactory = $factory;
|
$this->fixtureFactory = $factory;
|
||||||
}
|
}
|
||||||
@ -94,9 +103,9 @@ class FixtureContext extends BehatContext
|
|||||||
*/
|
*/
|
||||||
public function beforeDatabaseDefaults(ScenarioEvent $event)
|
public function beforeDatabaseDefaults(ScenarioEvent $event)
|
||||||
{
|
{
|
||||||
\SapphireTest::empty_temp_db();
|
SapphireTest::empty_temp_db();
|
||||||
DB::get_conn()->quiet();
|
DB::get_conn()->quiet();
|
||||||
$dataClasses = \ClassInfo::subclassesFor('SilverStripe\\ORM\\DataObject');
|
$dataClasses = ClassInfo::subclassesFor('SilverStripe\\ORM\\DataObject');
|
||||||
array_shift($dataClasses);
|
array_shift($dataClasses);
|
||||||
foreach ($dataClasses as $dataClass) {
|
foreach ($dataClasses as $dataClass) {
|
||||||
\singleton($dataClass)->requireDefaultRecords();
|
\singleton($dataClass)->requireDefaultRecords();
|
||||||
@ -108,7 +117,7 @@ class FixtureContext extends BehatContext
|
|||||||
*/
|
*/
|
||||||
public function afterResetDatabase(ScenarioEvent $event)
|
public function afterResetDatabase(ScenarioEvent $event)
|
||||||
{
|
{
|
||||||
\SapphireTest::empty_temp_db();
|
SapphireTest::empty_temp_db();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -406,7 +415,7 @@ class FixtureContext extends BehatContext
|
|||||||
|
|
||||||
// Save fixtures into database
|
// Save fixtures into database
|
||||||
// TODO Run prepareAsset() for each File and Folder record
|
// TODO Run prepareAsset() for each File and Folder record
|
||||||
$yamlFixture = new \YamlFixture($yaml);
|
$yamlFixture = new YamlFixture($yaml);
|
||||||
$yamlFixture->writeInto($this->getFixtureFactory());
|
$yamlFixture->writeInto($this->getFixtureFactory());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -595,7 +604,7 @@ class FixtureContext extends BehatContext
|
|||||||
*/
|
*/
|
||||||
protected function prepareFixture($class, $identifier, $data = array())
|
protected function prepareFixture($class, $identifier, $data = array())
|
||||||
{
|
{
|
||||||
if ($class == 'File' || is_subclass_of($class, 'File')) {
|
if ($class == 'SilverStripe\\Assets\\File' || is_subclass_of($class, 'SilverStripe\\Assets\\File')) {
|
||||||
$data = $this->prepareAsset($class, $identifier, $data);
|
$data = $this->prepareAsset($class, $identifier, $data);
|
||||||
}
|
}
|
||||||
return $data;
|
return $data;
|
||||||
@ -611,11 +620,11 @@ class FixtureContext extends BehatContext
|
|||||||
$sourcePath = $this->joinPaths($this->getFilesPath(), basename($relativeTargetPath));
|
$sourcePath = $this->joinPaths($this->getFilesPath(), basename($relativeTargetPath));
|
||||||
|
|
||||||
// Create file or folder on filesystem
|
// Create file or folder on filesystem
|
||||||
if ($class == 'Folder' || is_subclass_of($class, 'Folder')) {
|
if ($class == 'SilverStripe\\Assets\\Folder' || is_subclass_of($class, 'SilverStripe\\Assets\\Folder')) {
|
||||||
$parent = \Folder::find_or_make($relativeTargetPath);
|
$parent = Folder::find_or_make($relativeTargetPath);
|
||||||
$data['ID'] = $parent->ID;
|
$data['ID'] = $parent->ID;
|
||||||
} else {
|
} else {
|
||||||
$parent = \Folder::find_or_make(dirname($relativeTargetPath));
|
$parent = Folder::find_or_make(dirname($relativeTargetPath));
|
||||||
if (!file_exists($sourcePath)) {
|
if (!file_exists($sourcePath)) {
|
||||||
throw new \InvalidArgumentException(sprintf(
|
throw new \InvalidArgumentException(sprintf(
|
||||||
'Source file for "%s" cannot be found in "%s"',
|
'Source file for "%s" cannot be found in "%s"',
|
||||||
@ -676,11 +685,11 @@ class FixtureContext extends BehatContext
|
|||||||
// Try direct mapping
|
// Try direct mapping
|
||||||
$class = str_replace(' ', '', ucwords($type));
|
$class = str_replace(' ', '', ucwords($type));
|
||||||
if (class_exists($class) && is_subclass_of($class, 'SilverStripe\\ORM\\DataObject')) {
|
if (class_exists($class) && is_subclass_of($class, 'SilverStripe\\ORM\\DataObject')) {
|
||||||
return \ClassInfo::class_name($class);
|
return ClassInfo::class_name($class);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fall back to singular names
|
// Fall back to singular names
|
||||||
foreach (array_values(\ClassInfo::subclassesFor('SilverStripe\\ORM\\DataObject')) as $candidate) {
|
foreach (array_values(ClassInfo::subclassesFor('SilverStripe\\ORM\\DataObject')) as $candidate) {
|
||||||
if (strcasecmp(singleton($candidate)->singular_name(), $type) === 0) {
|
if (strcasecmp(singleton($candidate)->singular_name(), $type) === 0) {
|
||||||
return $candidate;
|
return $candidate;
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@ namespace SilverStripe\BehatExtension\Context\Initializer;
|
|||||||
|
|
||||||
use Behat\Behat\Context\Initializer\InitializerInterface;
|
use Behat\Behat\Context\Initializer\InitializerInterface;
|
||||||
use Behat\Behat\Context\ContextInterface;
|
use Behat\Behat\Context\ContextInterface;
|
||||||
|
|
||||||
use SilverStripe\BehatExtension\Context\SilverStripeAwareContextInterface;
|
use SilverStripe\BehatExtension\Context\SilverStripeAwareContextInterface;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of the Behat/SilverStripeExtension
|
* This file is part of the Behat/SilverStripeExtension
|
||||||
@ -28,7 +28,7 @@ class SilverStripeAwareInitializer implements InitializerInterface
|
|||||||
private $databaseName;
|
private $databaseName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $ajaxSteps;
|
protected $ajaxSteps;
|
||||||
|
|
||||||
@ -59,6 +59,8 @@ class SilverStripeAwareInitializer implements InitializerInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes initializer.
|
* Initializes initializer.
|
||||||
|
*
|
||||||
|
* @param string $frameworkPath
|
||||||
*/
|
*/
|
||||||
public function __construct($frameworkPath)
|
public function __construct($frameworkPath)
|
||||||
{
|
{
|
||||||
@ -66,7 +68,7 @@ class SilverStripeAwareInitializer implements InitializerInterface
|
|||||||
|
|
||||||
file_put_contents('php://stdout', "Creating test session environment" . PHP_EOL);
|
file_put_contents('php://stdout', "Creating test session environment" . PHP_EOL);
|
||||||
|
|
||||||
$testEnv = \Injector::inst()->get('TestSessionEnvironment');
|
$testEnv = Injector::inst()->get('TestSessionEnvironment');
|
||||||
$testEnv->startTestSession(array(
|
$testEnv->startTestSession(array(
|
||||||
'createDatabase' => true
|
'createDatabase' => true
|
||||||
));
|
));
|
||||||
@ -183,7 +185,7 @@ class SilverStripeAwareInitializer implements InitializerInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param String Absolute path to 'framework' module
|
* @param string $frameworkPath Absolute path to 'framework' module
|
||||||
*/
|
*/
|
||||||
protected function bootstrap($frameworkPath)
|
protected function bootstrap($frameworkPath)
|
||||||
{
|
{
|
||||||
|
@ -4,6 +4,7 @@ namespace SilverStripe\BehatExtension\Context;
|
|||||||
|
|
||||||
use Behat\Behat\Context\BehatContext;
|
use Behat\Behat\Context\BehatContext;
|
||||||
use Behat\Behat\Context\Step;
|
use Behat\Behat\Context\Step;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use SilverStripe\ORM\DataObject;
|
use SilverStripe\ORM\DataObject;
|
||||||
use SilverStripe\Security\Group;
|
use SilverStripe\Security\Group;
|
||||||
use SilverStripe\Security\Member;
|
use SilverStripe\Security\Member;
|
||||||
@ -73,20 +74,20 @@ class LoginContext extends BehatContext
|
|||||||
if (!isset($this->cache_generatedMembers[$permCode])) {
|
if (!isset($this->cache_generatedMembers[$permCode])) {
|
||||||
$group = Group::get()->filter('Title', "$permCode group")->first();
|
$group = Group::get()->filter('Title', "$permCode group")->first();
|
||||||
if (!$group) {
|
if (!$group) {
|
||||||
$group = \Injector::inst()->create('SilverStripe\\Security\\Group');
|
$group = Injector::inst()->create('SilverStripe\\Security\\Group');
|
||||||
}
|
}
|
||||||
|
|
||||||
$group->Title = "$permCode group";
|
$group->Title = "$permCode group";
|
||||||
$group->write();
|
$group->write();
|
||||||
|
|
||||||
$permission = \Injector::inst()->create('SilverStripe\\Security\\Permission');
|
$permission = Injector::inst()->create('SilverStripe\\Security\\Permission');
|
||||||
$permission->Code = $permCode;
|
$permission->Code = $permCode;
|
||||||
$permission->write();
|
$permission->write();
|
||||||
$group->Permissions()->add($permission);
|
$group->Permissions()->add($permission);
|
||||||
|
|
||||||
$member = DataObject::get_one('SilverStripe\\Security\\Member', sprintf('"Email" = \'%s\'', "$permCode@example.org"));
|
$member = DataObject::get_one('SilverStripe\\Security\\Member', sprintf('"Email" = \'%s\'', "$permCode@example.org"));
|
||||||
if (!$member) {
|
if (!$member) {
|
||||||
$member = \Injector::inst()->create('SilverStripe\\Security\\Member');
|
$member = Injector::inst()->create('SilverStripe\\Security\\Member');
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure any validation for password is skipped, since we're not testing complexity here
|
// make sure any validation for password is skipped, since we're not testing complexity here
|
||||||
@ -179,7 +180,7 @@ class LoginContext extends BehatContext
|
|||||||
*/
|
*/
|
||||||
public function stepPasswordForEmailShouldBe($id, $password)
|
public function stepPasswordForEmailShouldBe($id, $password)
|
||||||
{
|
{
|
||||||
$member = Member::get()->filter('Email', $id)->First();
|
$member = Member::get()->filter('SilverStripe\\Control\\Email\\Email', $id)->First();
|
||||||
assertNotNull($member);
|
assertNotNull($member);
|
||||||
assertTrue($member->checkPassword($password)->valid());
|
assertTrue($member->checkPassword($password)->valid());
|
||||||
}
|
}
|
||||||
|
@ -21,14 +21,14 @@ interface SilverStripeAwareContextInterface
|
|||||||
/**
|
/**
|
||||||
* Sets SilverStripe instance.
|
* Sets SilverStripe instance.
|
||||||
*
|
*
|
||||||
* @param String $database_name Temp database name
|
* @param string $databaseName Temp database name
|
||||||
*/
|
*/
|
||||||
public function setDatabase($databaseName);
|
public function setDatabase($databaseName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marks steps as AJAX steps for special treatment
|
* Marks steps as AJAX steps for special treatment
|
||||||
*
|
*
|
||||||
* @param array $ajax_steps Array of step name parts to match
|
* @param array $ajaxSteps Array of step name parts to match
|
||||||
*/
|
*/
|
||||||
public function setAjaxSteps($ajaxSteps);
|
public function setAjaxSteps($ajaxSteps);
|
||||||
}
|
}
|
||||||
|
@ -3,19 +3,13 @@
|
|||||||
namespace SilverStripe\BehatExtension\Context;
|
namespace SilverStripe\BehatExtension\Context;
|
||||||
|
|
||||||
use Behat\Behat\Context\Step;
|
use Behat\Behat\Context\Step;
|
||||||
use Behat\Behat\Event\FeatureEvent;
|
|
||||||
use Behat\Behat\Event\ScenarioEvent;
|
use Behat\Behat\Event\ScenarioEvent;
|
||||||
use Behat\Behat\Event\SuiteEvent;
|
|
||||||
use Behat\Gherkin\Node\PyStringNode;
|
|
||||||
use Behat\MinkExtension\Context\MinkContext;
|
use Behat\MinkExtension\Context\MinkContext;
|
||||||
use Behat\Mink\Driver\GoutteDriver;
|
use Behat\Mink\Driver\GoutteDriver;
|
||||||
use Behat\Mink\Driver\Selenium2Driver;
|
use Behat\Mink\Driver\Selenium2Driver;
|
||||||
use Behat\Mink\Exception\UnsupportedDriverActionException;
|
use Behat\Mink\Exception\UnsupportedDriverActionException;
|
||||||
use Behat\Mink\Exception\ElementNotFoundException;
|
use Behat\Mink\Exception\ElementNotFoundException;
|
||||||
|
use InvalidArgumentException;
|
||||||
use SilverStripe\BehatExtension\Context\SilverStripeAwareContextInterface;
|
|
||||||
|
|
||||||
use Symfony\Component\Yaml\Yaml;
|
|
||||||
|
|
||||||
// Mink etc.
|
// Mink etc.
|
||||||
require_once 'vendor/autoload.php';
|
require_once 'vendor/autoload.php';
|
||||||
@ -32,7 +26,7 @@ class SilverStripeContext extends MinkContext implements SilverStripeAwareContex
|
|||||||
protected $databaseName;
|
protected $databaseName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Array Partial string match for step names
|
* @var array Partial string match for step names
|
||||||
* that are considered to trigger Ajax request in the CMS,
|
* that are considered to trigger Ajax request in the CMS,
|
||||||
* and hence need special timeout handling.
|
* and hence need special timeout handling.
|
||||||
* @see \SilverStripe\BehatExtension\Context\BasicContext->handleAjaxBeforeStep().
|
* @see \SilverStripe\BehatExtension\Context\BasicContext->handleAjaxBeforeStep().
|
||||||
@ -151,8 +145,8 @@ class SilverStripeContext extends MinkContext implements SilverStripeAwareContex
|
|||||||
* Also supports direct CSS selectors and regions identified by a "data-title" attribute.
|
* Also supports direct CSS selectors and regions identified by a "data-title" attribute.
|
||||||
* When using the "data-title" attribute, ensure not to include double quotes.
|
* When using the "data-title" attribute, ensure not to include double quotes.
|
||||||
*
|
*
|
||||||
* @param String $region Region name or CSS selector
|
* @param string $region Region name or CSS selector
|
||||||
* @return MinkElement|null
|
* @return MinkElement
|
||||||
*/
|
*/
|
||||||
public function getRegionObj($region)
|
public function getRegionObj($region)
|
||||||
{
|
{
|
||||||
|
@ -2,12 +2,16 @@
|
|||||||
|
|
||||||
namespace SilverStripe\BehatExtension\Utility;
|
namespace SilverStripe\BehatExtension\Utility;
|
||||||
|
|
||||||
|
use SilverStripe\Control\Email\Mailer;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
|
use TestSessionEnvironment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Same principle as core TestMailer class,
|
* Same principle as core TestMailer class,
|
||||||
* but saves emails in {@link TestSessionEnvironment}
|
* but saves emails in {@link TestSessionEnvironment}
|
||||||
* to share the state between PHP calls (CLI vs. browser).
|
* to share the state between PHP calls (CLI vs. browser).
|
||||||
*/
|
*/
|
||||||
class TestMailer extends \Mailer
|
class TestMailer extends Mailer
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,7 +21,7 @@ class TestMailer extends \Mailer
|
|||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->testSessionEnvironment = \Injector::inst()->get('TestSessionEnvironment');
|
$this->testSessionEnvironment = Injector::inst()->get('TestSessionEnvironment');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user