X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Ffield%2Ftests%2Fsrc%2FUnit%2FFieldStorageConfigEntityUnitTest.php;h=89b73963baa664b29dcad0ad40a2fc675ec2f949;hp=13ba3cf93daab6f32ab4af21d70ca6291cd16a7e;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/web/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php b/web/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php index 13ba3cf93..89b73963b 100644 --- a/web/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php +++ b/web/core/modules/field/tests/src/Unit/FieldStorageConfigEntityUnitTest.php @@ -8,6 +8,7 @@ namespace Drupal\Tests\field\Unit; use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\Field\FieldException; use Drupal\Core\Field\FieldStorageDefinitionInterface; use Drupal\Core\Field\FieldTypePluginManagerInterface; use Drupal\field\Entity\FieldStorageConfig; @@ -110,6 +111,104 @@ class FieldStorageConfigEntityUnitTest extends UnitTestCase { $this->assertEquals(['stark'], $dependencies['theme']); } + /** + * Tests stored cardinality. + * + * @covers ::getCardinality + */ + public function testStoredCardinality() { + $this->fieldTypeManager->expects($this->any()) + ->method('getDefinition') + ->with('test_field_type') + ->willReturn([ + 'class' => TestFieldType::class, + // The field type definition has no enforced cardinality. + 'cardinality' => NULL, + ]); + + $field_storage = new FieldStorageConfig([ + 'entity_type' => 'entity_test', + 'field_name' => 'test_field', + 'type' => 'test_field_type', + 'module' => 'test_module', + ]); + $field_storage->setCardinality(8); + + // Check that the stored cardinality is returned. + $this->assertEquals(8, $field_storage->getCardinality()); + } + + /** + * Tests enforced cardinality. + * + * @covers ::getCardinality + */ + public function testEnforcedCardinality() { + $this->fieldTypeManager->expects($this->any()) + ->method('getDefinition') + ->with('test_field_type') + ->willReturn([ + 'class' => TestFieldType::class, + // This field type defines an enforced cardinality. + 'cardinality' => 21, + ]); + + $field_storage = new FieldStorageConfig([ + 'entity_type' => 'entity_test', + 'field_name' => 'test_field', + 'type' => 'test_field_type', + 'module' => 'test_module', + ]); + // Custom cardinality tentative. + $field_storage->setCardinality(8); + + // Check that the enforced cardinality is returned. + $this->assertEquals(21, $field_storage->getCardinality()); + } + + /** + * Tests invalid enforced cardinality. + * + * @covers ::getCardinality + * @dataProvider providerInvalidEnforcedCardinality + * + * @param mixed $enforced_cardinality + * Enforced cardinality + */ + public function testInvalidEnforcedCardinality($enforced_cardinality) { + $this->fieldTypeManager->expects($this->any()) + ->method('getDefinition') + ->with('test_field_type') + ->willReturn([ + 'class' => TestFieldType::class, + 'cardinality' => $enforced_cardinality, + ]); + + $field_storage = new FieldStorageConfig([ + 'entity_type' => 'entity_test', + 'field_name' => 'test_field', + 'type' => 'test_field_type', + 'module' => 'test_module', + ]); + + $this->setExpectedException(FieldException::class, "Invalid enforced cardinality '$enforced_cardinality'. Allowed values: a positive integer or -1."); + $field_storage->getCardinality(); + } + + /** + * Data provider for ::testInvalidEnforcedCardinality() + * + * @return array + * Test cases. + */ + public function providerInvalidEnforcedCardinality() { + return [ + 'zero' => [0], + 'negative_other_than_-1' => [-70], + 'non_numeric' => ['abc%$#@!'], + ]; + } + } /**