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 @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());
}