blazy-8.x-2.x-dev/tests/src/Unit/Form/BlazyAdminFormatterUnitTest.php
tests/src/Unit/Form/BlazyAdminFormatterUnitTest.php
<?php namespace Drupal\Tests\blazy\Unit\Form; use Drupal\Core\DependencyInjection\ContainerBuilder; use Drupal\Tests\UnitTestCase; use Drupal\Tests\blazy\Traits\BlazyManagerUnitTestTrait; use Drupal\Tests\blazy\Traits\BlazyUnitTestTrait; use Drupal\blazy\BlazyDefault; use Drupal\blazy\Form\BlazyAdminFormatter; /** * Tests the Blazy admin formatter form. * * @coversDefaultClass \Drupal\blazy\Form\BlazyAdminFormatter * @group blazy */ class BlazyAdminFormatterUnitTest extends UnitTestCase { use BlazyUnitTestTrait; use BlazyManagerUnitTestTrait; /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); $this->setUpUnitServices(); $this->setUpUnitContainer(); $this->stringTranslation = $this->createMock('\Drupal\Core\StringTranslation\TranslationInterface'); $this->entityDisplayRepository = $this->createMock('\Drupal\Core\Entity\EntityDisplayRepositoryInterface'); $this->typedConfig = $this->createMock('\Drupal\Core\Config\TypedConfigManagerInterface'); $this->dateFormatter = $this->createMock('\Drupal\Core\Datetime\DateFormatter'); $container = new ContainerBuilder(); $container->set('entity_display.repository', $this->entityDisplayRepository); $container->set('config.typed', $this->typedConfig); $container->set('string_translation', $this->getStringTranslationStub()); $container->set('date.formatter', $this->dateFormatter); $container->set('blazy.manager', $this->blazyManager); \Drupal::setContainer($container); $this->blazyAdminFormatter = new BlazyAdminFormatter( $this->entityDisplayRepository, $this->typedConfig, $this->dateFormatter, $this->blazyManager ); } /** * Provide test cases for ::testBuildSettingsForm. */ public static function providerTestBuildSettingsForm() { return [ [FALSE], [TRUE], ]; } /** * @covers ::buildSettingsForm * @covers ::openingForm * @covers ::fieldableForm * @covers ::imageStyleForm * @covers ::mediaSwitchForm * @covers ::gridForm * @covers ::closingForm * @covers ::finalizeForm * @dataProvider providerTestBuildSettingsForm */ public function testBuildSettingsForm($vanilla) { $form = []; $definition = $this->getDefaulEntityFormatterDefinition() + $this->getScopedFormElements(); $definition['settings'] += $this->getDefaultFields(TRUE); $definition['vanilla'] = $vanilla; $definition['_views'] = TRUE; $this->blazyAdminFormatter->openingForm($form, $definition); $this->assertEquals($vanilla, !empty($form['vanilla'])); $this->blazyAdminFormatter->buildSettingsForm($form, $definition); $this->assertArrayHasKey('scopes', $definition); $this->assertArrayHasKey('opening', $form); $this->assertArrayHasKey('closing', $form); } /** * Provider for ::testGetSettingsSummary. */ public static function providerTestGetSettingsSummary() { return [ [FALSE, FALSE, FALSE, '', FALSE], [TRUE, TRUE, TRUE, 'blazy_responsive_test', TRUE], [TRUE, FALSE, FALSE, '', TRUE], ]; } /** * Tests the Blazy admin ::getSettingsSummary(). * * @dataProvider providerTestGetSettingsSummary */ public function testGetSettingsSummary($use_settings, $vanilla, $override, $responsive_image_style, $expected) { $definition = $this->getFormatterDefinition(); $settings = array_merge(BlazyDefault::gridSettings(), $definition['settings'] ?? []); $settings['vanilla'] = $vanilla; $settings['image_syle'] = 'large'; $settings['box_style'] = 'blazy_crop'; $settings['thumbnail_style'] = 'thumbnail'; $settings['optionset'] = 'default'; $settings['override'] = $override; $settings['overridables'] = ['foo' => 'foo', 'bar' => '0']; $settings['responsive_image_style'] = $responsive_image_style; $settings['caption'] = ['alt' => 'alt', 'title' => 'title']; $definition['settings'] = $use_settings ? $settings : []; $summary = $this->blazyAdminFormatter->getSettingsSummary($definition); $summary = array_filter($summary); $check_summary = !$expected ? empty($summary) : !empty($summary); $this->assertTrue($check_summary); } } namespace Drupal\blazy\Form; if (!function_exists('responsive_image_get_image_dimensions')) { /** * Dummy function. */ function responsive_image_get_image_dimensions() { // Empty block to satisfy coder. } }