ConfigEventsTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace Drupal\KernelTests\Core\Config;
  3. use Drupal\Core\Config\Config;
  4. use Drupal\Core\Config\ConfigEvents;
  5. use Drupal\KernelTests\KernelTestBase;
  6. /**
  7. * Tests events fired on configuration objects.
  8. *
  9. * @group config
  10. */
  11. class ConfigEventsTest extends KernelTestBase {
  12. /**
  13. * Modules to enable.
  14. *
  15. * @var array
  16. */
  17. public static $modules = ['config_events_test'];
  18. /**
  19. * Tests configuration events.
  20. */
  21. public function testConfigEvents() {
  22. $name = 'config_events_test.test';
  23. $config = new Config($name, \Drupal::service('config.storage'), \Drupal::service('event_dispatcher'), \Drupal::service('config.typed'));
  24. $config->set('key', 'initial');
  25. $this->assertIdentical(\Drupal::state()->get('config_events_test.event', []), [], 'No events fired by creating a new configuration object');
  26. $config->save();
  27. $event = \Drupal::state()->get('config_events_test.event', []);
  28. $this->assertIdentical($event['event_name'], ConfigEvents::SAVE);
  29. $this->assertIdentical($event['current_config_data'], ['key' => 'initial']);
  30. $this->assertIdentical($event['raw_config_data'], ['key' => 'initial']);
  31. $this->assertIdentical($event['original_config_data'], []);
  32. $config->set('key', 'updated')->save();
  33. $event = \Drupal::state()->get('config_events_test.event', []);
  34. $this->assertIdentical($event['event_name'], ConfigEvents::SAVE);
  35. $this->assertIdentical($event['current_config_data'], ['key' => 'updated']);
  36. $this->assertIdentical($event['raw_config_data'], ['key' => 'updated']);
  37. $this->assertIdentical($event['original_config_data'], ['key' => 'initial']);
  38. $config->delete();
  39. $event = \Drupal::state()->get('config_events_test.event', []);
  40. $this->assertIdentical($event['event_name'], ConfigEvents::DELETE);
  41. $this->assertIdentical($event['current_config_data'], []);
  42. $this->assertIdentical($event['raw_config_data'], []);
  43. $this->assertIdentical($event['original_config_data'], ['key' => 'updated']);
  44. }
  45. /**
  46. * Tests configuration rename event that is fired from the ConfigFactory.
  47. */
  48. public function testConfigRenameEvent() {
  49. $name = 'config_events_test.test';
  50. $new_name = 'config_events_test.test_rename';
  51. $GLOBALS['config'][$name] = ['key' => 'overridden'];
  52. $GLOBALS['config'][$new_name] = ['key' => 'new overridden'];
  53. $config = $this->config($name);
  54. $config->set('key', 'initial')->save();
  55. $event = \Drupal::state()->get('config_events_test.event', []);
  56. $this->assertIdentical($event['event_name'], ConfigEvents::SAVE);
  57. $this->assertIdentical($event['current_config_data'], ['key' => 'initial']);
  58. // Override applies when getting runtime config.
  59. $this->assertEqual($GLOBALS['config'][$name], \Drupal::config($name)->get());
  60. \Drupal::configFactory()->rename($name, $new_name);
  61. $event = \Drupal::state()->get('config_events_test.event', []);
  62. $this->assertIdentical($event['event_name'], ConfigEvents::RENAME);
  63. $this->assertIdentical($event['current_config_data'], ['key' => 'new overridden']);
  64. $this->assertIdentical($event['raw_config_data'], ['key' => 'initial']);
  65. $this->assertIdentical($event['original_config_data'], ['key' => 'new overridden']);
  66. }
  67. }