3 namespace Drupal\Tests\media_entity_slideshow\Unit;
5 use Drupal\media_entity_slideshow\Plugin\Validation\Constraint\ItemsCountConstraint;
6 use Drupal\media_entity_slideshow\Plugin\Validation\Constraint\ItemsCountConstraintValidator;
7 use Drupal\Tests\UnitTestCase;
10 * Tests media_entity_slideshow constraints.
14 class ConstraintsTest extends UnitTestCase {
17 * Tests ItemsCount constraint.
19 * @covers \Drupal\media_entity_slideshow\Plugin\Validation\Constraint\ItemsCountConstraintValidator
20 * @covers \Drupal\media_entity_slideshow\Plugin\Validation\Constraint\ItemsCountConstraint
22 public function testValidation() {
23 // Check message in constraint.
24 $constraint = new ItemsCountConstraint(['sourceFieldName' => 'test_field']);
25 $this->assertEquals('At least one slideshow item must exist.', $constraint->message, 'Correct constraint message found.');
27 // Test the validator with valid values.
28 $execution_context = $this->getMockBuilder('\Drupal\Core\TypedData\Validation\ExecutionContext')
29 ->disableOriginalConstructor()
32 $execution_context->expects($this->exactly(0))
33 ->method('addViolation');
35 $value = new TestMediaEntityConstraints('test_field', 'Some text');
37 $validator = new ItemsCountConstraintValidator();
38 $validator->initialize($execution_context);
39 $validator->validate($value, $constraint);
41 // Test the validator with invalid values.
42 $execution_context = $this->getMockBuilder('\Drupal\Core\TypedData\Validation\ExecutionContext')
43 ->disableOriginalConstructor()
46 $execution_context->expects($this->exactly(1))
47 ->method('addViolation')
48 ->with($constraint->message);
50 $value = new TestMediaEntityConstraints('test_field');
51 $validator = new ItemsCountConstraintValidator();
52 $validator->initialize($execution_context);
53 $validator->validate($value, $constraint);
59 * Mock class to test the ItemsCount constraint.
61 class TestMediaEntityConstraints {
64 * The source field names.
68 protected $sourceFields = array();
71 * TestMediaEntityConstraints constructor.
74 * The source field name used for this test.
75 * @param string|null $value
76 * (optional) The source field value used for this test.
78 public function __construct($name, $value = NULL) {
79 $this->sourceFields[$name] = new TestField($value);
83 * Mocks get() on \Drupal\Core\Entity\FieldableEntityInterface.
85 public function get($name) {
86 return $this->sourceFields[$name];
92 * Mock class for fields to test the ItemsCount constraint.
104 * TestField constructor.
106 * @param string|null $value
107 * (optional) The property value used for this test.
109 public function __construct($value = NULL) {
110 $this->property = $value;
114 * Mocks isEmpty() on \Drupal\Core\Entity\Plugin\DataType\EntityAdapter.
116 public function isEmpty() {
117 return !isset($this->property);