diff --git a/core/modules/migrate/src/Plugin/migrate/process/Migration.php b/core/modules/migrate/src/Plugin/migrate/process/Migration.php
index a231280..d838cd9 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Migration.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Migration.php
@@ -94,7 +94,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
         $source_id_values[$migration_id] = $value;
       }
       // Break out of the loop as soon as a destination ID is found.
-      if ($destination_ids = $migration->getIdMap()->lookupDestinationID($source_id_values[$migration_id])) {
+      if ($destination_ids = $migration->getIdMap()->lookupDestinationId($source_id_values[$migration_id])) {
         break;
       }
     }
@@ -154,7 +154,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
    *
    * @throws \Drupal\migrate\MigrateSkipProcessException
    */
-  protected function skipOnEmpty($value) {
+  protected function skipOnEmpty(array $value) {
     if (!array_filter($value)) {
       throw new MigrateSkipProcessException();
     }
diff --git a/core/modules/migrate/tests/src/Unit/process/MigrationTest.php b/core/modules/migrate/tests/src/Unit/process/MigrationTest.php
new file mode 100644
index 0000000..5d317f6
--- /dev/null
+++ b/core/modules/migrate/tests/src/Unit/process/MigrationTest.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Tests\migrate\Unit\process\MigrationTest.
+ */
+
+namespace Drupal\Tests\migrate\Unit\process;
+
+use Drupal\Core\Entity\EntityStorageInterface;
+use Drupal\migrate\Entity\MigrationInterface;
+use Drupal\migrate\Plugin\migrate\process\Migration;
+use Drupal\migrate\Plugin\MigrateIdMapInterface;
+use Drupal\migrate\Plugin\MigratePluginManager;
+
+/**
+ * Tests the migration process plugin.
+ *
+ * @group migrate
+ */
+class MigrationTest extends MigrateProcessTestCase {
+
+  protected $migration;
+
+  protected $migrationStorage;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    $migration = $this->prophesize(MigrationInterface::class);
+    $migration->id()->willReturn(uniqid());
+    $this->migration = $migration->reveal();
+
+    $this->migrationStorage = $this->prophesize(EntityStorageInterface::class);
+
+    $plugin_manager = $this->prophesize(MigratePluginManager::class)->reveal();
+    $configuration = array(
+      'migration' => 'foobaz',
+    );
+    $this->plugin = new Migration($configuration, 'migration', array(), $this->migration, $this->migrationStorage->reveal(), $plugin_manager);
+
+    parent::setUp();
+  }
+
+  /**
+   * Tests that processing is skipped when the input value is empty.
+   *
+   * @expectedException \Drupal\migrate\MigrateSkipProcessException
+   */
+  public function testSkipOnEmpty() {
+    $this->plugin->transform(0, $this->migrateExecutable, $this->row, 'foo');
+  }
+
+  /**
+   * Tests a successful lookup.
+   */
+  public function testSuccessfulLookup() {
+    $foobaz = $this->prophesize(MigrationInterface::class);
+
+    $id_map = $this->prophesize(MigrateIdMapInterface::class);
+    $id_map->lookupDestinationId([1])->willReturn([3]);
+    $foobaz->getIdMap()->willReturn($id_map->reveal());
+
+    $this->migrationStorage
+      ->loadMultiple(['foobaz'])
+      ->willReturn([$foobaz->reveal()]);
+
+    $this->assertSame(3, $this->plugin->transform(1, $this->migrateExecutable, $this->row, 'foo'));
+  }
+
+}
