function IntegrityCheckTest::testRefiningContextBasedOnMappedContext

Tests context can be refined based upon mapped context.

File

tests/src/Unit/Integration/Engine/IntegrityCheckTest.php, line 372

Class

IntegrityCheckTest
Test the integrity check functionality during configuration time.

Namespace

Drupal\Tests\rules\Unit\Integration\Engine

Code

public function testRefiningContextBasedOnMappedContext() {
    // DataComparison condition refines context based on selected data. Thus
    // it for the test and ensure checking integrity passes when the comparison
    // value is of a compatible type and fails else.
    $rule = $this->rulesExpressionManager
        ->createRule();
    $rule->addCondition('rules_data_comparison', ContextConfig::create()->map('data', 'text')
        ->map('value', 'text2'));
    $violation_list = RulesComponent::create($rule)->addContextDefinition('text', ContextDefinition::create('string'))
        ->addContextDefinition('text2', ContextDefinition::create('string'))
        ->checkIntegrity();
    $this->assertCount(0, $violation_list);
    $violation_list = RulesComponent::create($rule)->addContextDefinition('text', ContextDefinition::create('string'))
        ->addContextDefinition('text2', ContextDefinition::create('integer'))
        ->checkIntegrity();
    $this->assertCount(1, $violation_list);
}