From f3854ed17108d8181435d436794f42c2770f2a99 Mon Sep 17 00:00:00 2001 From: Roy Segall Date: Thu, 14 May 2015 23:25:18 +0300 Subject: [PATCH 1/5] Cover more tests. --- src/BehatDrushHelper.php | 8 +++++++- src/Features/comment_crud.feature | 3 ++- src/FeaturesTraits/BasicTrait.php | 6 ++++++ src/Plugin/FeatureContext/FeatureContextBase.php | 15 ++++++++++++++- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/BehatDrushHelper.php b/src/BehatDrushHelper.php index cefe319..755072e 100644 --- a/src/BehatDrushHelper.php +++ b/src/BehatDrushHelper.php @@ -104,7 +104,13 @@ public static function DisplaySearchResults($test_id) { foreach ($logs as $feature => $steps) { BehatDrushHelper::coolLog($feature); - foreach ($steps as $step) { + foreach ($steps as $delta => $step) { + + if ($delta == 'debug') { + BehatDrushHelper::coolLog(print_r($step, TRUE), 'yellow'); + continue; + } + if ($step['status'] == 'pass') { BehatDrushHelper::coolLog($step['step'], 'green', 1); } diff --git a/src/Features/comment_crud.feature b/src/Features/comment_crud.feature index ae80fad..778f18f 100644 --- a/src/Features/comment_crud.feature +++ b/src/Features/comment_crud.feature @@ -1,4 +1,5 @@ Feature: Comment crud. + @comment Scenario: Testing the login form. - Given I visit "user" + Given I login as user "@user-name" diff --git a/src/FeaturesTraits/BasicTrait.php b/src/FeaturesTraits/BasicTrait.php index d6b21c0..44e1600 100644 --- a/src/FeaturesTraits/BasicTrait.php +++ b/src/FeaturesTraits/BasicTrait.php @@ -42,4 +42,10 @@ public function iVisit($url) { $this->drupalGet($url); } + /** + * @Given /^I login as user "([^"]*)"$/ + */ + public function iLogIng($name) { + } + } diff --git a/src/Plugin/FeatureContext/FeatureContextBase.php b/src/Plugin/FeatureContext/FeatureContextBase.php index eee0f15..79aea1d 100644 --- a/src/Plugin/FeatureContext/FeatureContextBase.php +++ b/src/Plugin/FeatureContext/FeatureContextBase.php @@ -28,7 +28,20 @@ class FeatureContextBase extends BehatTestsAbstract { public function beforeScenario(ScenarioInterface $scenarioInterface = NULL) { parent::beforeScenario($scenarioInterface); - $account = $this->drupalCreateUser(); + $permissions = []; + if ($tags = $scenarioInterface->getTags()) { + // Keep the permissions for tests with entity. + $tests_permissions = [ + 'comment' => ['post comments'], + 'node' => ['create node'], + 'taxonomy-term' => 'create terms', + ]; + + $entity_feature = $tags[0]; + $permissions = $tests_permissions[$entity_feature]; + } + + $account = $this->drupalCreateUser($permissions); $this->placeholders = [ '@user-name' => $account->label(), '@user-pass' => $account->passRaw, From 5dccc326716f23e6333e407fac5c514c958756b3 Mon Sep 17 00:00:00 2001 From: Roy Segall Date: Thu, 14 May 2015 23:50:41 +0300 Subject: [PATCH 2/5] Push code. --- src/BehatDrushHelper.php | 5 ----- src/FeaturesTraits/BasicTrait.php | 1 + src/Plugin/FeatureContext/FeatureContextBase.php | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/BehatDrushHelper.php b/src/BehatDrushHelper.php index 755072e..995627d 100644 --- a/src/BehatDrushHelper.php +++ b/src/BehatDrushHelper.php @@ -106,11 +106,6 @@ public static function DisplaySearchResults($test_id) { foreach ($steps as $delta => $step) { - if ($delta == 'debug') { - BehatDrushHelper::coolLog(print_r($step, TRUE), 'yellow'); - continue; - } - if ($step['status'] == 'pass') { BehatDrushHelper::coolLog($step['step'], 'green', 1); } diff --git a/src/FeaturesTraits/BasicTrait.php b/src/FeaturesTraits/BasicTrait.php index 44e1600..298f5ed 100644 --- a/src/FeaturesTraits/BasicTrait.php +++ b/src/FeaturesTraits/BasicTrait.php @@ -46,6 +46,7 @@ public function iVisit($url) { * @Given /^I login as user "([^"]*)"$/ */ public function iLogIng($name) { + exit('sss'); } } diff --git a/src/Plugin/FeatureContext/FeatureContextBase.php b/src/Plugin/FeatureContext/FeatureContextBase.php index 79aea1d..d485a99 100644 --- a/src/Plugin/FeatureContext/FeatureContextBase.php +++ b/src/Plugin/FeatureContext/FeatureContextBase.php @@ -41,7 +41,7 @@ public function beforeScenario(ScenarioInterface $scenarioInterface = NULL) { $permissions = $tests_permissions[$entity_feature]; } - $account = $this->drupalCreateUser($permissions); + $account = $this->drupalCreateUser(); $this->placeholders = [ '@user-name' => $account->label(), '@user-pass' => $account->passRaw, From 8ea9f6699aa7ab58b8fd00416dca2b5d54cc3e2b Mon Sep 17 00:00:00 2001 From: RoySegall Date: Fri, 15 May 2015 14:16:35 +0300 Subject: [PATCH 3/5] Push work. --- src/BehatDrushHelper.php | 1 - src/Features/comment_crud.feature | 1 + src/FeaturesTraits/BasicTrait.php | 44 ------- .../FeatureContext/FeatureContextBase.php | 119 +++++++++++++++++- 4 files changed, 116 insertions(+), 49 deletions(-) diff --git a/src/BehatDrushHelper.php b/src/BehatDrushHelper.php index 995627d..61b5503 100644 --- a/src/BehatDrushHelper.php +++ b/src/BehatDrushHelper.php @@ -105,7 +105,6 @@ public static function DisplaySearchResults($test_id) { BehatDrushHelper::coolLog($feature); foreach ($steps as $delta => $step) { - if ($step['status'] == 'pass') { BehatDrushHelper::coolLog($step['step'], 'green', 1); } diff --git a/src/Features/comment_crud.feature b/src/Features/comment_crud.feature index 778f18f..48c2ab0 100644 --- a/src/Features/comment_crud.feature +++ b/src/Features/comment_crud.feature @@ -3,3 +3,4 @@ Feature: Comment crud. @comment Scenario: Testing the login form. Given I login as user "@user-name" + And I create node diff --git a/src/FeaturesTraits/BasicTrait.php b/src/FeaturesTraits/BasicTrait.php index 298f5ed..09a8176 100644 --- a/src/FeaturesTraits/BasicTrait.php +++ b/src/FeaturesTraits/BasicTrait.php @@ -4,49 +4,5 @@ trait BasicTrait { - /** - * @Given /^I fill in "([^"]*)" with "([^"]*)"$/ - */ - public function iFillInWith($name, $value) { - $this->assertSession()->fieldExists($name); - $this->edit[$name] = $value; - } - - /** - * @Given /^I press "([^"]*)"$/ - */ - public function iPress($element) { - $button = $this->assertSession()->buttonExists($element); - - if ($button->getAttribute('type') == 'submit') { - // This is a submit element. Call the submit form method. - $this->submitForm($this->edit, $element); - } - else { - // Normal button. Press it. - $button->press(); - } - } - - /** - * @Given /^I should see "([^"]*)"$/ - */ - public function iShouldSee($text) { - $this->assertSession()->pageTextContains($text); - } - - /** - * @Given /^I visit "([^"]*)"$/ - */ - public function iVisit($url) { - $this->drupalGet($url); - } - - /** - * @Given /^I login as user "([^"]*)"$/ - */ - public function iLogIng($name) { - exit('sss'); - } } diff --git a/src/Plugin/FeatureContext/FeatureContextBase.php b/src/Plugin/FeatureContext/FeatureContextBase.php index d485a99..f9aad89 100644 --- a/src/Plugin/FeatureContext/FeatureContextBase.php +++ b/src/Plugin/FeatureContext/FeatureContextBase.php @@ -8,6 +8,8 @@ use Behat\Gherkin\Node\ScenarioInterface; use Drupal\behat\BehatTestsAbstract; use Drupal\behat\FeaturesTraits\BasicTrait; +use Drupal\node\Entity\Node; +use Drupal\user\Entity\User; /** * @FeatureContext( @@ -20,7 +22,17 @@ */ class FeatureContextBase extends BehatTestsAbstract { - use BasicTrait; + /** + * @var User + * + * The user object. + */ + protected $account; + + /** + * @var Node + */ + protected $node; /** * {@inheritdoc} @@ -41,10 +53,109 @@ public function beforeScenario(ScenarioInterface $scenarioInterface = NULL) { $permissions = $tests_permissions[$entity_feature]; } - $account = $this->drupalCreateUser(); + $this->account = $this->drupalCreateUser($permissions); $this->placeholders = [ - '@user-name' => $account->label(), - '@user-pass' => $account->passRaw, + '@user-name' => $this->account->label(), + '@user-pass' => $this->account->passRaw, ]; } + + /** + * Creates a node based on default settings. + * + * @param array $settings + * (optional) An associative array of settings for the node, as used in + * entity_create(). Override the defaults by specifying the key and value + * in the array, for example: + * @code + * $this->drupalCreateNode(array( + * 'title' => t('Hello, world!'), + * 'type' => 'article', + * )); + * @endcode + * The following defaults are provided: + * - body: Random string using the default filter format: + * @code + * $settings['body'][0] = array( + * 'value' => $this->randomMachineName(32), + * 'format' => filter_default_format(), + * ); + * @endcode + * - title: Random string. + * - type: 'page'. + * - uid: The currently logged in user, or anonymous. + * + * @return \Drupal\node\NodeInterface + * The created node entity. + */ + protected function drupalCreateNode(array $settings = array()) { + // Populate defaults array. + $settings += array( + 'body' => array(array( + 'value' => $this->randomMachineName(32), + 'format' => filter_default_format(), + )), + 'title' => $this->randomMachineName(8), + 'type' => 'page', + 'uid' => \Drupal::currentUser()->id(), + ); + $node = entity_create('node', $settings); + $node->save(); + + return $node; + } + + /** + * @Given /^I fill in "([^"]*)" with "([^"]*)"$/ + */ + public function iFillInWith($name, $value) { + $this->assertSession()->fieldExists($name); + $this->edit[$name] = $value; + } + + /** + * @Given /^I press "([^"]*)"$/ + */ + public function iPress($element) { + $button = $this->assertSession()->buttonExists($element); + + if ($button->getAttribute('type') == 'submit') { + // This is a submit element. Call the submit form method. + $this->submitForm($this->edit, $element); + } + else { + // Normal button. Press it. + $button->press(); + } + } + + /** + * @Given /^I should see "([^"]*)"$/ + */ + public function iShouldSee($text) { + $this->assertSession()->pageTextContains($text); + } + + /** + * @Given /^I visit "([^"]*)"$/ + */ + public function iVisit($url) { + $this->drupalGet($url); + } + + /** + * @Given /^I login as user "([^"]*)"$/ + */ + public function iLogInAsUser($name) { + // todo: handle multiple users in the test. + $this->drupalLogin($this->account); + } + + /** + * @Given /^I create node$/ + */ + public function iCreateNode() { + $this->node = $this->drupalCreateNode(); + $this->ivisit($this->node->url()); + } } From dc7c60223a5b453ee9f70cccc0a1b91f88edc265 Mon Sep 17 00:00:00 2001 From: Roy Segall Date: Sat, 16 May 2015 11:44:01 +0300 Subject: [PATCH 4/5] Push work. --- src/BehatTestsAbstract.php | 2 +- src/Features/comment_crud.feature | 4 ++-- .../FeatureContext/FeatureContextBase.php | 18 ++++-------------- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/src/BehatTestsAbstract.php b/src/BehatTestsAbstract.php index 20b274c..07787e5 100644 --- a/src/BehatTestsAbstract.php +++ b/src/BehatTestsAbstract.php @@ -29,7 +29,7 @@ class BehatTestsAbstract extends BrowserTestBase { * * @var array */ - public static $modules = ['behat']; + public static $modules = ['behat', 'node']; /** * @var array diff --git a/src/Features/comment_crud.feature b/src/Features/comment_crud.feature index 48c2ab0..4a7595e 100644 --- a/src/Features/comment_crud.feature +++ b/src/Features/comment_crud.feature @@ -1,6 +1,6 @@ Feature: Comment crud. @comment - Scenario: Testing the login form. + Scenario: Testing comment creation. Given I login as user "@user-name" - And I create node + And I create a node diff --git a/src/Plugin/FeatureContext/FeatureContextBase.php b/src/Plugin/FeatureContext/FeatureContextBase.php index f9aad89..20320f2 100644 --- a/src/Plugin/FeatureContext/FeatureContextBase.php +++ b/src/Plugin/FeatureContext/FeatureContextBase.php @@ -7,7 +7,6 @@ use Behat\Gherkin\Node\ScenarioInterface; use Drupal\behat\BehatTestsAbstract; -use Drupal\behat\FeaturesTraits\BasicTrait; use Drupal\node\Entity\Node; use Drupal\user\Entity\User; @@ -53,7 +52,7 @@ public function beforeScenario(ScenarioInterface $scenarioInterface = NULL) { $permissions = $tests_permissions[$entity_feature]; } - $this->account = $this->drupalCreateUser($permissions); + $this->account = $this->drupalCreateUser(); $this->placeholders = [ '@user-name' => $this->account->label(), '@user-pass' => $this->account->passRaw, @@ -89,16 +88,6 @@ public function beforeScenario(ScenarioInterface $scenarioInterface = NULL) { * The created node entity. */ protected function drupalCreateNode(array $settings = array()) { - // Populate defaults array. - $settings += array( - 'body' => array(array( - 'value' => $this->randomMachineName(32), - 'format' => filter_default_format(), - )), - 'title' => $this->randomMachineName(8), - 'type' => 'page', - 'uid' => \Drupal::currentUser()->id(), - ); $node = entity_create('node', $settings); $node->save(); @@ -152,10 +141,11 @@ public function iLogInAsUser($name) { } /** - * @Given /^I create node$/ + * @Given /^I create a node$/ */ public function iCreateNode() { + $this->addLine('foo', ['step' => print_r(\Drupal::entityManager()->getDefinitions(), TRUE), 'status' => 'pass']); $this->node = $this->drupalCreateNode(); - $this->ivisit($this->node->url()); +// $this->ivisit($this->node->url()); } } From a1f0303f06f47f7ea213e9a67c28a89ecec5fce1 Mon Sep 17 00:00:00 2001 From: Roy Segall Date: Mon, 18 May 2015 23:20:11 +0300 Subject: [PATCH 5/5] Fix something,. --- src/Plugin/FeatureContext/FeatureContextBase.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Plugin/FeatureContext/FeatureContextBase.php b/src/Plugin/FeatureContext/FeatureContextBase.php index 20320f2..641a3b3 100644 --- a/src/Plugin/FeatureContext/FeatureContextBase.php +++ b/src/Plugin/FeatureContext/FeatureContextBase.php @@ -8,6 +8,7 @@ use Behat\Gherkin\Node\ScenarioInterface; use Drupal\behat\BehatTestsAbstract; use Drupal\node\Entity\Node; +use Drupal\node\Entity\NodeType; use Drupal\user\Entity\User; /** @@ -144,8 +145,8 @@ public function iLogInAsUser($name) { * @Given /^I create a node$/ */ public function iCreateNode() { - $this->addLine('foo', ['step' => print_r(\Drupal::entityManager()->getDefinitions(), TRUE), 'status' => 'pass']); - $this->node = $this->drupalCreateNode(); + NodeType::create(['name' => 'page', 'type' => 'page'])->save(); + Node::create(['type' => 'page', 'title' => 'foo', 'uid' => 1])->save(); // $this->ivisit($this->node->url()); } }