test_helpers-1.0.0-alpha6/tests/src/Unit/StubFactory/FieldItemListStubFactoryTest.php

tests/src/Unit/StubFactory/FieldItemListStubFactoryTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\test_helpers\Unit\Stubs;

use Drupal\Core\Entity\Plugin\DataType\EntityAdapter;
use Drupal\Core\Field\Plugin\Field\FieldType\BooleanItem;
use Drupal\Core\Field\Plugin\Field\FieldType\MapItem;
use Drupal\Tests\UnitTestCase;
use Drupal\comment\Plugin\Field\FieldType\CommentItem;
use Drupal\test_helpers\StubFactory\FieldItemListStubFactory;
use Drupal\test_helpers\TestHelpers;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\CoversMethod;
use PHPUnit\Framework\Attributes\Group;

/**
 * Tests FieldItemListStubFactory class.
 */
#[CoversClass(FieldItemListStubFactory::class)]
#[CoversClass(TestHelpers::class)]
#[Group('test_helpers')]
#[CoversMethod(FieldItemListStubFactory::class, 'create')]
#[CoversMethod(FieldItemListStubFactory::class, 'createFieldItemDefinitionStub')]
#[CoversMethod(TestHelpers::class, 'addFieldPlugin')]
#[CoversMethod(TestHelpers::class, 'createFieldStub')]
class FieldItemListStubFactoryTest extends UnitTestCase {

  /**
   * Tests the general API of FieldItemListStubFactory.
   */
  public function testGeneralApi() {
    $field = TestHelpers::createFieldStub();
    $this->assertEquals('field_item:item_stub', $field->getItemDefinition()->getDataType());

    $field = TestHelpers::createFieldStub(NULL, $type = 'string');
    $this->assertEquals("field_item:$type", $field->getItemDefinition()->getDataType());
    $this->assertEquals([], $field->getValue());
    $this->assertNull($field->getName());
    $this->assertNull($field->getParent());
    $this->assertFalse($field->getFieldDefinition()->isBaseField());

    $parent = EntityAdapter::createFromEntity(TestHelpers::createEntity('node'));
    $field = TestHelpers::createFieldStub($value = 'mail@example.com', $type = 'email', $name = 'field_mail', $parent, TRUE);
    $this->assertEquals("field_item:$type", $field->getItemDefinition()->getDataType());
    $this->assertEquals([['value' => $value]], $field->getValue());
    $this->assertEquals($name, $field->getName());
    $this->assertEquals($parent, $field->getParent());
    $this->assertTrue($field->getFieldDefinition()->isBaseField());

    $field = TestHelpers::createFieldStub($value = ['1', 2], $type = 'integer');
    $this->assertEquals("field_item:$type", $field->getItemDefinition()->getDataType());
    $this->assertEquals([['value' => '1'], ['value' => 2]], $field->getValue());

    $field = TestHelpers::createFieldStub(['value' => TRUE], BooleanItem::class);
    $this->assertEquals('field_item:boolean', $field->getItemDefinition()->getDataType());
    $this->assertEquals([['value' => TRUE]], $field->getValue());

    TestHelpers::assertException(function () {
      TestHelpers::createFieldStub(NULL, 'comment');
    });
    TestHelpers::addFieldPlugin(CommentItem::class);
    $field = TestHelpers::createFieldStub(1, 'comment');
    $this->assertEquals('field_item:comment', $field->getItemDefinition()->getDataType());
    $this->assertEquals([['status' => 1]], $field->getValue());
    $field = TestHelpers::createFieldStub(['last_comment_name' => 'Bob'], CommentItem::class);
    $this->assertEquals([['last_comment_name' => 'Bob']], $field->getValue());

    $definition = FieldItemListStubFactory::createFieldItemDefinitionStub(MapItem::class);
    $this->assertFalse($definition->isBaseField());
    $field = TestHelpers::createFieldStub([], $definition);
    $this->assertEquals('field_item:map', $field->getItemDefinition()->getDataType());
    $this->assertEquals([], $field->getValue());

    $definition2 = FieldItemListStubFactory::createFieldItemDefinitionStub(MapItem::class, NULL, TRUE);
    $this->assertTrue($definition2->isBaseField());

    $type = 'map';
    $field = TestHelpers::createFieldStub([], 'map');
    $this->assertEquals("field_item:$type", $field->getItemDefinition()->getDataType());
    $this->assertEquals([], $field->getValue());

    $type = 'list_string';
    $field = TestHelpers::createFieldStub(['foo', 'bar'], $type);
    $this->assertEquals("field_item:$type", $field->getItemDefinition()->getDataType());
    $this->assertEquals([['value' => 'foo'], ['value' => 'bar']], $field->getValue());

    // Testing mocked methods.
    $field = TestHelpers::createFieldStub([], 'map', NULL, NULL, NULL,
      ['generateSampleItems'],
    );
    $field->method('generateSampleItems')->willReturn('foo');
  }

}

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

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