intelligencebank-8.x-2.x-dev/tests/src/Functional/IntelligenceBankFunctionalTest.php
tests/src/Functional/IntelligenceBankFunctionalTest.php
<?php
namespace Drupal\Tests\intelligencebank\Functional;
use Behat\Mink\Element\Element;
use Drupal\Tests\BrowserTestBase;
/**
* Tests for the intelligencebank module.
*
* @group intelligencebank
*/
class IntelligenceBankFunctionalTest extends BrowserTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'intelligencebank_test',
];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* The profile to install as a basis for testing.
*
* @var string
*/
protected $profile = 'standard';
/**
* An administrative user to configure the test environment.
*
* @var \Drupal\user\Entity\User|false
*/
protected $adminUser;
/**
* The module handler service.
*
* @var \Drupal\Core\Extension\ModuleHandlerInterface
*/
protected $moduleHandler;
/**
* {@inheritdoc}
*/
public function setUp(): void {
parent::setUp();
$this->moduleHandler = \Drupal::moduleHandler();
// Create and log in an administrative user.
$this->adminUser = $this->drupalCreateUser([
'administer intelligencebank configuration',
'access administration pages'
]);
$this->drupalLogin($this->adminUser);
}
/**
* Tests that the proper options appear in the media mapping form.
*/
public function testIntelligenceBankMediaMappingConfig() {
$this->drupalGet('/admin/config/services/ib_dam/media');
// Ensure media type filtering is working for IntelligenceBank image files.
$expected_image_options = [
'--' => '--',
'image' => 'Image',
];
$actual_image_options = $this->getOptions('media_types[image][media_type][id]');
$this->assertEquals($actual_image_options, $expected_image_options);
// Ensure media type filtering is working for IntelligenceBank audio files.
$expected_audio_options = [
'--' => '--',
'audio' => 'Audio',
];
$actual_audio_options = $this->getOptions('media_types[audio][media_type][id]');
$this->assertEquals($actual_audio_options, $expected_audio_options);
// Ensure media type filtering is working for IntelligenceBank video files.
$expected_video_options = [
'--' => '--',
'video' => 'Video',
];
$actual_video_options = $this->getOptions('media_types[video][media_type][id]');
$this->assertEquals($actual_video_options, $expected_video_options);
// Ensure media type filtering is working for IntelligenceBank files.
$expected_file_options = [
'--' => '--',
'document' => 'Document',
];
$actual_file_options = $this->getOptions('media_types[file][media_type][id]');
$this->assertEquals($actual_file_options, $expected_file_options);
// Ensure media type filtering is working for IntelligenceBank embeds.
$expected_embed_options = [
'--' => '--',
'ib_dam_embed' => 'IntelligenceBank Embed',
];
$actual_embed_options = $this->getOptions('media_types[embed][media_type][id]');
$this->assertEquals($actual_embed_options, $expected_embed_options);
}
protected function getOptions($select, ?Element $container = NULL) {
if (is_string($select)) {
$select = $this->assertSession()->selectExists($select, $container);
}
$options = [];
/** @var \Behat\Mink\Element\NodeElement $option */
foreach ($select->findAll('xpath', '//option') as $option) {
$label = $option->getText();
$value = $option->getAttribute('value') ?: $label;
$options[$value] = $label;
}
return $options;
}
}
