Chris@0: addListener(MigrateEvents::POST_ROW_SAVE, Chris@0: [$this, 'postRowSaveEventRecorder']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests migration interruptions. Chris@0: */ Chris@0: public function testMigrateEvents() { Chris@0: // Run a simple little migration, which should trigger one of each event Chris@0: // other than map_delete. Chris@0: $definition = [ Chris@0: 'migration_tags' => ['Interruption test'], Chris@0: 'source' => [ Chris@0: 'plugin' => 'embedded_data', Chris@0: 'data_rows' => [ Chris@0: ['data' => 'dummy value'], Chris@0: ['data' => 'dummy value2'], Chris@0: ], Chris@0: 'ids' => [ Chris@0: 'data' => ['type' => 'string'], Chris@0: ], Chris@0: ], Chris@0: 'process' => ['value' => 'data'], Chris@0: 'destination' => ['plugin' => 'dummy'], Chris@0: ]; Chris@0: Chris@0: $migration = \Drupal::service('plugin.manager.migration')->createStubMigration($definition); Chris@0: Chris@14: $executable = new MigrateExecutable($migration); Chris@0: // When the import runs, the first row imported will trigger an Chris@0: // interruption. Chris@0: $result = $executable->import(); Chris@0: Chris@0: $this->assertEqual($result, MigrationInterface::RESULT_INCOMPLETE); Chris@0: Chris@0: // The status should have been reset to IDLE. Chris@0: $this->assertEqual($migration->getStatus(), MigrationInterface::STATUS_IDLE); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Reacts to post-row-save event. Chris@0: * Chris@18: * @param \Drupal\migrate\Event\MigratePostRowSaveEvent $event Chris@0: * The migration event. Chris@0: * @param string $name Chris@0: * The event name. Chris@0: */ Chris@0: public function postRowSaveEventRecorder(MigratePostRowSaveEvent $event, $name) { Chris@0: $event->getMigration()->interruptMigration(MigrationInterface::RESULT_INCOMPLETE); Chris@0: } Chris@0: Chris@0: }