public function MonitoringCoreKernelTest::testDefaultNodeTypeSensors in Monitoring 8
Tests the node count per content type sensor.
See also
\Drupal\monitoring\Plugin\monitoring\SensorPlugin\ContentEntityAggregatorSensorPlugin
File
- tests/
src/ Kernel/ MonitoringCoreKernelTest.php, line 433
Class
- MonitoringCoreKernelTest
- Kernel tests for the core pieces of monitoring.
Namespace
Drupal\Tests\monitoring\KernelCode
public function testDefaultNodeTypeSensors() {
$this
->installEntitySchema('user');
$this
->installEntitySchema('node');
\Drupal::service('router.builder')
->rebuild();
$type1 = NodeType::create([
'type' => $this
->randomMachineName(),
]);
$type1
->save();
$sensor1 = SensorConfig::create(array(
'id' => 'node_new_' . $type1
->id(),
'label' => new FormattableMarkup('New @type nodes', array(
'@type' => $type1
->label(),
)),
'description' => new FormattableMarkup('New nodes of type @type', array(
'@type' => $type1
->label(),
)),
'plugin_id' => 'entity_aggregator',
'value_label' => new FormattableMarkup('@type nodes', array(
'@type' => $type1
->label(),
)),
'category' => 'Content',
'status' => FALSE,
'caching_time' => 600,
'settings' => array(
'entity_type' => 'node',
'conditions' => array(
array(
'field' => 'type',
'value' => $type1
->id(),
),
),
'time_interval_field' => 'created',
'time_interval_value' => 60 * 60 * 24,
),
));
$sensor1
->save();
$type2 = NodeType::create([
'type' => $this
->randomMachineName(),
]);
$type2
->save();
$sensor2 = SensorConfig::create(array(
'id' => 'node_new_' . $type2
->id(),
'label' => new FormattableMarkup('New @type nodes', array(
'@type' => $type2
->label(),
)),
'description' => new FormattableMarkup('New nodes of type @type', array(
'@type' => $type2
->label(),
)),
'plugin_id' => 'entity_aggregator',
'value_label' => new FormattableMarkup('@type nodes', array(
'@type' => $type2
->label(),
)),
'category' => 'Content',
'status' => FALSE,
'caching_time' => 600,
'settings' => array(
'entity_type' => 'node',
'conditions' => array(
array(
'field' => 'type',
'value' => $type2
->id(),
),
),
'time_interval_field' => 'created',
'time_interval_value' => 60 * 60 * 24,
),
));
$sensor2
->save();
Node::create(array(
'title' => $this
->randomString(),
'type' => $type1
->id(),
))
->save();
Node::create(array(
'title' => $this
->randomString(),
'type' => $type1
->id(),
))
->save();
Node::create(array(
'title' => $this
->randomString(),
'type' => $type2
->id(),
))
->save();
// Make sure that sensors for the new node types are available.
monitoring_sensor_manager()
->resetCache();
// Run sensor for type1.
$result = $this
->runSensor('node_new_' . $type1
->id());
$this
->assertEqual($result
->getValue(), 2);
// Test for the ContentEntityAggregatorSensorPlugin custom message.
$this
->assertEqual($result
->getMessage(), new FormattableMarkup('@count @unit in @time_interval', array(
'@count' => $result
->getValue(),
'@unit' => strtolower($result
->getSensorConfig()
->getValueLabel()),
'@time_interval' => \Drupal::service('date.formatter')
->formatInterval($result
->getSensorConfig()
->getTimeIntervalValue()),
)));
// Run sensor for all types.
$result = $this
->runSensor('node_new_all');
$this
->assertEqual($result
->getValue(), 3);
// Verify that hooks do not break when sensors unexpectedly do exist or
// don't exist.
$sensor = SensorConfig::create(array(
'id' => 'node_new_existing',
'label' => 'Existing sensor',
'plugin_id' => 'entity_aggregator',
'settings' => array(
'entity_type' => 'node',
),
));
$sensor
->save();
$type_existing = NodeType::create([
'type' => 'existing',
'label' => 'Existing',
]);
$type_existing
->save();
// Manually delete the sensor and then the node type.
$sensor
->delete();
$type_existing
->delete();
// Rename type when the target sensor already exists.
$sensor = SensorConfig::create(array(
'id' => 'node_new_existing',
'label' => 'Existing sensor',
'plugin_id' => 'entity_aggregator',
'settings' => array(
'entity_type' => 'node',
),
));
$sensor
->save();
$type1
->set('name', 'existing');
$type1
->save();
// Delete the sensor for $type2 before renaming.
$sensor = SensorConfig::load('node_new_' . $type2
->id());
$sensor
->delete();
$type2
->set('name', 'different');
$type2
->save();
}