You are here

public function DataIsEmptyTest::testConditionEvaluation in Rules 8.3

Tests evaluating the condition.

@covers ::evaluate

File

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

Class

DataIsEmptyTest
@coversDefaultClass \Drupal\rules\Plugin\Condition\DataIsEmpty @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());
}