sir_trevor-8.x-1.x-dev/tests/src/Unit/FieldFormatter/SirTrevorTest.php

tests/src/Unit/FieldFormatter/SirTrevorTest.php
<?php

namespace Drupal\sir_trevor\Tests\Unit\FieldFormatter;

use Drupal\Component\DependencyInjection\Container;
use Drupal\Core\Annotation\Translation;
use Drupal\Core\Field\Annotation\FieldFormatter;
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\sir_trevor\Plugin\Field\FieldFormatter\SirTrevor;
use Drupal\Tests\sir_trevor\Unit\AnnotationAsserter;
use Drupal\Tests\sir_trevor\Unit\TestDoubles\EventDispatcherDummy;
use Drupal\Tests\sir_trevor\Unit\TestDoubles\FieldItemListMock;
use Drupal\Tests\UnitTestCase;

/**
 * @group SirTrevor
 */
class SirTrevorTest extends UnitTestCase {

  use AnnotationAsserter;

  /** @var SirTrevor */
  protected $sut;

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp();

    \Drupal::setContainer(new Container());
    \Drupal::getContainer()->set('event_dispatcher', new EventDispatcherDummy());
    $pluginId = 'plugin_id';
    $pluginDefinition = 'plugin definition';
    $baseFieldDefinition = new BaseFieldDefinition();
    $settings = [];
    $Label = 'Label';
    $viewMode = 'default';
    $thirdPartySettings = [];
    $this->sut = new SirTrevor($pluginId, $pluginDefinition, $baseFieldDefinition, $settings, $Label, $viewMode, $thirdPartySettings);

  }

  /**
   * Data provider for @see viewElements
   *
   * @return array
   */
  public function viewElementsTestDataProvider() {
    $testData = [];

    $testData['no value'] = [
      'expected' => [],
      'string' => NULL,
    ];

    $testData['empty string'] = [
      'expected' => [],
      'string' => '',
    ];

    $testData['invalid json'] = [
      'expected' => [],
      'string' => '{noClosingTag:""'
    ];

    $obj = (object) ['notTheDataAttribute' => ''];
    $testData['invalid datastructure'] = [
      'expected' => [],
      'string' => json_encode($obj),
    ];

    $obj = (object) [
      'data' => [
        (object) [
          'type' => 'some_type',
          'data' => (object) ['some-key' => 'some value']
        ]
      ]
    ];
    $testData['valid datastructure'] = [
      'expected' => [
        [
          '#theme' => "sir_trevor_{$obj->data[0]->type}",
          '#data' => $obj->data[0]->data,
          '#entity' => NULL,
        ]
      ],
      'string' => json_encode($obj),
    ];

    $container = new \stdClass();
    $container->data = [$obj->data[0], $obj->data[0]];
    $testData['container containing multiple valid datastructures'] = [
      'expected' => [
        [
          '#theme' => "sir_trevor_{$obj->data[0]->type}",
          '#data' => $obj->data[0]->data,
          '#entity' => NULL,
        ],
        [
          '#theme' => "sir_trevor_{$obj->data[0]->type}",
          '#data' => $obj->data[0]->data,
          '#entity' => NULL,
        ],
      ],
      'string' => json_encode($container),
    ];

    return $testData;
  }

  /**
   * @test
   * @dataProvider viewElementsTestDataProvider
   * @param array $expected
   * @param string $itemsString
   */
  public function viewElements(array $expected, $itemsString) {
    $items = new FieldItemListMock();
    $items->setString($itemsString);
    $this->assertEquals($expected, $this->sut->viewElements($items, 'en'));
  }

  /**
   * @test
   */
  public function classAnnotation() {
    $expected = [
      new FieldFormatter([
        'id' => 'sir_trevor',
        'label' => new Translation(['value' => 'Sir Trevor']),
        'field_types' => [
          'sir_trevor',
        ],
      ]),
    ];

    $this->assertClassAnnotationsMatch($expected, SirTrevor::class);
  }

  /**
   * {@inheritdoc}
   */
  protected function getAnnotationClassNames() {
    return [
      FieldFormatter::class,
      Translation::class,
    ];
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc