simple_paypal_field-8.x-1.1/tests/src/Functional/SimplePayPalFieldTest.php
tests/src/Functional/SimplePayPalFieldTest.php
<?php
namespace Drupal\Tests\simple_paypal_field\Functional;
use Drupal\entity_test\Entity\EntityTest;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;
/**
* Class SimplePayPalFieldTest.
*
* @group simple_paypal_field
*
* @todo Cover all cases.
*/
class SimplePayPalFieldTest extends BrowserTestBase {
protected static $modules = ['entity_test', 'simple_paypal_field'];
protected $webUser;
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this->webUser = $this->drupalCreateUser(
[
'view test entity',
'administer entity_test content',
'access content',
'simple_paypal_field.administer',
]
);
$this->drupalLogin($this->webUser);
}
/**
* Creates a field.
*
* @param string $field_type
* Type of the field.
* @param string $widget_type
* Widget name.
* @param string $formatter
* Formatter name.
*
* @return string
* Field name.
*
* @throws \Drupal\Core\Entity\EntityStorageException
*/
protected function createField(string $field_type, string $widget_type, string $formatter) {
// Create a field.
$field_name = 'field_' . mb_strtolower($this->randomMachineName());
$field_storage = FieldStorageConfig::create(
[
'field_name' => $field_name,
'type' => $field_type,
'entity_type' => 'entity_test',
]
);
$field_storage->save();
FieldConfig::create(
[
'entity_type' => 'entity_test',
'field_storage' => $field_storage,
'bundle' => 'entity_test',
'label' => $this->randomMachineName() . '_label',
'settings' => [
'amount' => (string) random_int(10, 100),
'on_label' => 'Hello',
],
'default_value' => [
[
'value' => 1,
],
],
]
)
->save();
// Widgets.
entity_get_form_display('entity_test', 'entity_test', 'default')
->setComponent($field_name, ['type' => $widget_type])
->save();
entity_get_display('entity_test', 'entity_test', 'full')
->setComponent($field_name, ['type' => $formatter])
->save();
return $field_name;
}
/**
* Tests buttons widget and formatter are shown.
*/
public function testFieldShowsButtons() {
$this->createField(
'simple_paypal_field',
'paypal_smart_buttons',
'paypal_smart_buttons'
);
// Display creation form.
$this->drupalGet('entity_test/add');
$this->assertSession()->elementExists('css', '.paypal-button');
$this->drupalPostForm(NULL, [], t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1];
$this->assertSession()->pageTextContains(
t('entity_test @id has been created.', ['@id' => $id])
);
// Display the entity.
$entity = EntityTest::load($id);
$display = entity_get_display(
$entity->getEntityTypeId(),
$entity->bundle(),
'full'
);
$content = $display->build($entity);
$rendered_entity = $this->container->get('renderer')->renderRoot($content);
$this->assertContains('paypal-button', (string) $rendered_entity);
}
/**
* Checks that the field can be disabled.
*
* @throws \Behat\Mink\Exception\ExpectationException
* @throws \Behat\Mink\Exception\ResponseTextException
* @throws \Drupal\Core\Entity\EntityStorageException
*/
public function testFieldCanBeDisabled() {
$field_name = $this->createField(
'simple_paypal_field',
'boolean_checkbox',
'paypal_smart_buttons'
);
$field_item = "{$field_name}[value]";
$this->drupalGet('entity_test/add');
$this->assertSession()->checkboxChecked($field_item);
$this->drupalPostForm(NULL, [$field_item => 0], t('Save'));
preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
$id = $match[1];
$this->assertSession()->pageTextContains(
t('entity_test @id has been created.', ['@id' => $id])
);
// Display the entity.
$entity = EntityTest::load($id);
$this->drupalGet($entity->url());
$this->assertSession()->elementNotExists('css', '.paypal-button');
}
}
