function DataIsEmptyTest::testConditionEvaluation

Tests evaluating the condition.

@covers ::evaluate

File

tests/src/Unit/Integration/Condition/DataIsEmptyTest.php, line 36

Class

DataIsEmptyTest
@coversDefaultClass \Drupal\rules\Plugin\Condition\DataIsEmpty[[api-linebreak]] @group RulesCondition

Namespace

Drupal\Tests\rules\Unit\Integration\Condition

Code

public function testConditionEvaluation() {
  // Test a ComplexDataInterface object.
  $entity_adapter_empty = $this->prophesize(ComplexDataInterface::class);
  $entity_adapter_empty->isEmpty()
    ->willReturn(TRUE)
    ->shouldBeCalledTimes(1);
  $context = $this->condition
    ->getContext('data');
  $context = Context::createFromContext($context, $entity_adapter_empty->reveal());
  $this->condition
    ->setContext('data', $context);
  $this->assertTrue($this->condition
    ->evaluate());
  $entity_adapter_full = $this->prophesize(ComplexDataInterface::class);
  $entity_adapter_full->isEmpty()
    ->willReturn(FALSE)
    ->shouldBeCalledTimes(1);
  $context = Context::createFromContext($context, $entity_adapter_full->reveal());
  $this->condition
    ->setContext('data', $context);
  $this->assertFalse($this->condition
    ->evaluate());
  // These should all return FALSE.
  // A non-empty array.
  $context = Context::createFromContext($context, $this->getTypedData('list', [
    1,
    2,
    3,
  ]));
  $this->condition
    ->setContext('data', $context);
  $this->assertFalse($this->condition
    ->evaluate());
  // An array containing an empty list.
  $context = Context::createFromContext($context, $this->getTypedData('list', [
    [],
  ]));
  $this->condition
    ->setContext('data', $context);
  $this->assertFalse($this->condition
    ->evaluate());
  // An array with a zero-value element.
  $context = Context::createFromContext($context, $this->getTypedData('list', [
    0,
  ]));
  $this->condition
    ->setContext('data', $context);
  $this->assertFalse($this->condition
    ->evaluate());
  // A scalar value.
  $context = Context::createFromContext($context, $this->getTypedData('integer', 1));
  $this->condition
    ->setContext('data', $context);
  $this->assertFalse($this->condition
    ->evaluate());
  $context = Context::createFromContext($context, $this->getTypedData('string', 'short string'));
  $this->condition
    ->setContext('data', $context);
  $this->assertFalse($this->condition
    ->evaluate());
  // These should all return TRUE.
  // An empty array.
  $context = Context::createFromContext($context, $this->getTypedData('list', []));
  $this->condition
    ->setContext('data', $context);
  $this->assertTrue($this->condition
    ->evaluate());
  // The false/zero/NULL values.
  $context = Context::createFromContext($context, $this->getTypedData('boolean', FALSE));
  $this->condition
    ->setContext('data', $context);
  $this->assertTrue($this->condition
    ->evaluate());
  $context = Context::createFromContext($context, $this->getTypedData('integer', 0));
  $this->condition
    ->setContext('data', $context);
  $this->assertTrue($this->condition
    ->evaluate());
  $context = Context::createFromContext($context, $this->getTypedData('string', NULL));
  $this->condition
    ->setContext('data', $context);
  $this->assertTrue($this->condition
    ->evaluate());
  // An empty string.
  $context = Context::createFromContext($context, $this->getTypedData('string', ''));
  $this->condition
    ->setContext('data', $context);
  $this->assertTrue($this->condition
    ->evaluate());
}