diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/Commerce1TestBase.php b/modules/commerce/tests/src/Kernel/Migrate/d7/Commerce1TestBase.php
deleted file mode 100644
index c442037..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/Commerce1TestBase.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
-
-/**
- * Base calls for Commerce migration tests.
- *
- * @package Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7
- */
-abstract class Commerce1TestBase extends MigrateDrupal7TestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'action',
-    'profile',
-    'address',
-    'entity',
-    'entity_reference_revisions',
-    'inline_entity_form',
-    'state_machine',
-    'text',
-    'views',
-    'commerce',
-    'commerce_price',
-    'commerce_store',
-    'commerce_order',
-    'commerce_migrate',
-    'commerce_migrate_commerce',
-  ];
-
-  /**
-   * Gets the path to the fixture file.
-   */
-  protected function getFixtureFilePath() {
-    return __DIR__ . '/../../../../fixtures/ck2.php';
-  }
-
-  /**
-   * Executes store migrations.
-   */
-  protected function migrateStore() {
-    $this->installEntitySchema('commerce_store');
-    $this->executeMigrations([
-      'd7_filter_format',
-      'd7_user_role',
-      'd7_user',
-      'd7_commerce_currency',
-      'd7_commerce_store',
-      'd7_commerce_default_store',
-    ]);
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateCommerce1TestBase.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateCommerce1TestBase.php
new file mode 100644
index 0000000..641b782
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateCommerce1TestBase.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
+
+/**
+ * Base calls for Commerce migration tests.
+ *
+ * @package Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7
+ */
+abstract class MigrateCommerce1TestBase extends MigrateDrupal7TestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'action',
+    'profile',
+    'address',
+    'entity',
+    'entity_reference_revisions',
+    'inline_entity_form',
+    'state_machine',
+    'text',
+    'views',
+    'commerce',
+    'commerce_price',
+    'commerce_store',
+    'commerce_order',
+    'commerce_migrate',
+    'commerce_migrate_commerce',
+  ];
+
+  /**
+   * Gets the path to the fixture file.
+   */
+  protected function getFixtureFilePath() {
+    return __DIR__ . '/../../../../fixtures/ck2.php';
+  }
+
+  /**
+   * Executes store migrations.
+   */
+  protected function migrateStore() {
+    $this->installEntitySchema('commerce_store');
+    $this->executeMigrations([
+      'd7_filter_format',
+      'd7_user_role',
+      'd7_user',
+      'd7_commerce_currency',
+      'd7_commerce_store',
+      'd7_commerce_default_store',
+    ]);
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateCurrencyTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateCurrencyTest.php
index 4dc85a4..c741e46 100644
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateCurrencyTest.php
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateCurrencyTest.php
@@ -2,16 +2,16 @@
 
 namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
 
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
 
 /**
  * Tests currency migration.
  *
  * @group commerce_migrate
  */
-class CurrencyTest extends Commerce1TestBase {
+class MigrateCurrencyTest extends MigrateCommerce1TestBase {
 
-  use CommerceMigrateTestTrait;
+  use MigrateCommerceMigrateTestTrait;
 
   /**
    * {@inheritdoc}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateDefaultStoreTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateDefaultStoreTest.php
deleted file mode 100644
index cbe8a44..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateDefaultStoreTest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests store migration.
- *
- * @group commerce_migrate
- */
-class MigrateDefaultStoreTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->migrateStore();
-    $this->executeMigration('d7_commerce_default_store');
-  }
-
-  /**
-   * Test default store migration from Drupal 7 to 8.
-   */
-  public function testMigrateDefaultStore() {
-    $this->assertDefaultStore();
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateDefaultStoreTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateDefaultStoreTestMigrate.php
new file mode 100644
index 0000000..6d51d56
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateDefaultStoreTestMigrate.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests store migration.
+ *
+ * @group commerce_migrate
+ */
+class MigrateDefaultStoreTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->migrateStore();
+    $this->executeMigration('d7_commerce_default_store');
+  }
+
+  /**
+   * Test default store migration from Drupal 7 to 8.
+   */
+  public function testMigrateDefaultStore() {
+    $this->assertDefaultStore();
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTestMigrate.php
new file mode 100644
index 0000000..adc06d5
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTestMigrate.php
@@ -0,0 +1,100 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\commerce_order\Entity\OrderItem;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests order item migration.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateOrderItemTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_order_item');
+    // We need to install config so we have a default order item type.
+    // @todo provide way to migrate line item types properly.
+    $this->installConfig(['commerce_order']);
+    // @todo Execute the d7_field and d7_field_instance migrations?
+    $this->executeMigrations([
+      'd7_commerce_product_variation_type',
+      'd7_commerce_product_variation',
+      'd7_commerce_order_item_type',
+      'd7_commerce_order_item',
+    ]);
+  }
+
+  /**
+   * Test line item migration from Drupal 7 to 8.
+   */
+  public function testOrderItem() {
+    $order = [
+      'id' => 1,
+      'order_id' => NULL,
+      'purchased_entity_id' => '12',
+      'quantity' => '1.00',
+      'title' => 'HAT2-BLK-OS',
+      'unit_price' => '12.000000',
+      'unit_price_currency' => 'USD',
+      'total_price' => '12.000000',
+      'total_price_currency' => 'USD',
+    ];
+    $this->assertOrderItem($order['id'], $order['order_id'], $order['purchased_entity_id'], $order['quantity'], $order['title'], $order['unit_price'], $order['unit_price_currency'], $order['total_price'], $order['total_price_currency']);
+    $order = [
+      'id' => 2,
+      'order_id' => NULL,
+      'purchased_entity_id' => '12',
+      'quantity' => '1.00',
+      'title' => 'HAT2-BLK-OS',
+      'unit_price' => '12.000000',
+      'unit_price_currency' => 'USD',
+      'total_price' => '12.000000',
+      'total_price_currency' => 'USD',
+    ];
+    $this->assertOrderItem($order['id'], $order['order_id'], $order['purchased_entity_id'], $order['quantity'], $order['title'], $order['unit_price'], $order['unit_price_currency'], $order['total_price'], $order['total_price_currency']);
+    $order = [
+      'id' => 3,
+      'order_id' => NULL,
+      'purchased_entity_id' => '45',
+      'quantity' => '1.00',
+      'title' => 'TSH3-CRM-LG',
+      'unit_price' => '38.000000',
+      'unit_price_currency' => 'USD',
+      'total_price' => '38.000000',
+      'total_price_currency' => 'USD',
+    ];
+    $this->assertOrderItem($order['id'], $order['order_id'], $order['purchased_entity_id'], $order['quantity'], $order['title'], $order['unit_price'], $order['unit_price_currency'], $order['total_price'], $order['total_price_currency']);
+
+    // Test time stamps.
+    $order_item = OrderItem::load(1);
+    $this->assertEquals($order_item->getCreatedTime(), 1493287435);
+    $this->assertEquals($order_item->getChangedTime(), 1493287440);
+    $order_item = OrderItem::load(2);
+    $this->assertEquals($order_item->getCreatedTime(), 1493287445);
+    $this->assertEquals($order_item->getChangedTime(), 1493287450);
+    $order_item = OrderItem::load(3);
+    $this->assertEquals($order_item->getCreatedTime(), 1493287455);
+    $this->assertEquals($order_item->getChangedTime(), 1493287460);
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTypeTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTypeTest.php
deleted file mode 100644
index a41bde2..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTypeTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-
-/**
- * Tests order item type migration.
- *
- * @group migrate_drupal_7
- */
-class MigrateOrderItemTypeTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->executeMigration('d7_commerce_order_item_type');
-  }
-
-  /**
-   * Tests the Drupal 6 taxonomy vocabularies to Drupal 8 migration.
-   */
-  public function testOrderItemType() {
-    $this->assertOrderItemType('product', "product");
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTypeTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTypeTestMigrate.php
new file mode 100644
index 0000000..d3d7d9b
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderItemTypeTestMigrate.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+
+/**
+ * Tests order item type migration.
+ *
+ * @group migrate_drupal_7
+ */
+class MigrateOrderItemTypeTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigration('d7_commerce_order_item_type');
+  }
+
+  /**
+   * Tests the Drupal 6 taxonomy vocabularies to Drupal 8 migration.
+   */
+  public function testOrderItemType() {
+    $this->assertOrderItemType('product', "product");
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderTestMigrate.php
new file mode 100644
index 0000000..8e79e52
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateOrderTestMigrate.php
@@ -0,0 +1,99 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\commerce_order\Entity\Order;
+
+/**
+ * Tests line item migration.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateOrderTestMigrate extends MigrateCommerce1TestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('profile');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_order');
+    $this->installEntitySchema('commerce_order_item');
+    $this->installConfig(['commerce_order']);
+    $this->migrateStore();
+    // @todo Execute the d7_field and d7_field_instance migrations?
+    $this->executeMigrations([
+      'd7_user_role',
+      'd7_user',
+      'd7_commerce_product_variation_type',
+      'd7_commerce_product_variation',
+      'd7_commerce_billing_profile',
+      'd7_commerce_order_item_type',
+      'd7_commerce_order_item',
+      'd7_commerce_order',
+    ]);
+  }
+
+  /**
+   * Test line item migration from Drupal 7 to 8.
+   */
+  public function testOrder() {
+    $order = Order::load(1);
+
+    // Test the order.
+    $this->assertNotNull($order);
+    $this->assertEquals($order->getOrderNumber(), 1);
+    $this->assertEquals($order->getCreatedTime(), 1493287432);
+    $this->assertEquals($order->getPlacedTime(), 1493287432);
+    // Test line items.
+    $order_items = $order->getItems();
+    $this->assertNotNull($order_items);
+    // @TODO: False failures: https://www.drupal.org/node/2906650
+    //$this->assertEquals('Hat 2', $order_items[0]->label());
+    //$this->assertEquals('Hat 2', $order_items[1]->label());
+    $this->assertEquals(24.000000, $order->getTotalPrice()->getNumber());
+
+    // Test billing profile.
+    $profile = $order->getBillingProfile();
+    $this->assertNotNull($profile);
+    $this->assertEquals($profile->bundle(), 'customer');
+    $this->assertEquals($profile->isActive(), TRUE);
+
+    // Test store.
+    $this->assertEquals(\Drupal::service('commerce_store.default_store_resolver')
+      ->resolve()
+      ->id(), $order->getStoreId());
+  }
+
+  /**
+   * Tests various order migration states.
+   */
+  public function testOrderStates() {
+    $order_draft = Order::load(1);
+    $order_pending = Order::load(2);
+    $order_complete = Order::load(3);
+
+    $this->assertEquals('Draft', $order_draft->getState()
+      ->getLabel()
+      ->render());
+    $this->assertEquals('Completed', $order_pending->getState()
+      ->getLabel()
+      ->render());
+    $this->assertEquals('Completed', $order_complete->getState()
+      ->getLabel()
+      ->render());
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductTestMigrate.php
new file mode 100644
index 0000000..add074f
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductTestMigrate.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests line item migration.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateProductTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_product');
+    $this->migrateStore();
+    $this->executeMigrations([
+      'd7_user_role',
+      'd7_user',
+      'd7_commerce_product_variation_type',
+      'd7_commerce_product_variation',
+      'd7_commerce_product_type',
+    ]);
+
+    $this->executeMigrations([
+      'd7_commerce_product',
+    ]);
+  }
+
+  /**
+   * Test product migration from Drupal 7 to 8.
+   */
+  public function testProduct() {
+    $this->assertProductEntity(15, '1', 'Go green with Drupal Commerce Reusable Tote Bag', TRUE, ['1'], ['1']);
+
+    // Tests a product with multiple variations.
+    $this->assertProductEntity(26, '1', 'Commerce Guys USB Key', TRUE, ['1'], ['28', '29', '30']);
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductTypeTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductTypeTestMigrate.php
new file mode 100644
index 0000000..a85da26
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductTypeTestMigrate.php
@@ -0,0 +1,73 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests line item migration.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateProductTypeTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    // @todo Execute the d7_field and d7_field_instance migrations?
+    $this->executeMigrations([
+      'd7_commerce_product_type',
+    ]);
+  }
+
+  /**
+   * Test product type migration from Drupal 7 to 8.
+   */
+  public function testProductType() {
+    $type = [
+      'id' => 'bags_cases',
+      'label' => 'Bags & Cases',
+      'description' => 'A <em>Bags & Cases</em> is a content type which contain product variations.',
+      'variation_type' => 'bags_cases',
+    ];
+    $this->assertProductTypeEntity($type['id'], $type['label'], $type['description'], $type['variation_type']);
+    $type = [
+      'id' => 'tops',
+      'label' => 'Tops',
+      'description' => 'A <em>Tops</em> is a content type which contain product variations.',
+      'variation_type' => 'tops',
+    ];
+    $this->assertProductTypeEntity($type['id'], $type['label'], $type['description'], $type['variation_type']);
+  }
+
+  /**
+   * Test product type migration fields from Drupal 7 to 8.
+   */
+  public function testProductTypeFields() {
+    /** @var \Drupal\Core\Entity\EntityFieldManager $field_manager */
+    $field_manager = $this->container->get('entity_field.manager');
+
+    $bundle = 'tops';
+    $fields = ['body', 'variations', 'stores'];
+    $field_definitions = $field_manager->getFieldDefinitions('commerce_product', $bundle);
+    // Check that fields were added.
+    foreach ($fields as $field) {
+      $this->assertTrue(isset($field_definitions[$field]));
+    }
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductVariationTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductVariationTestMigrate.php
new file mode 100644
index 0000000..b4aa365
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductVariationTestMigrate.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\commerce_product\Entity\ProductVariation;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests line item migration.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateProductVariationTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('commerce_product_variation');
+    // @todo Execute the d7_field and d7_field_instance migrations?
+    $this->executeMigrations([
+      'd7_commerce_product_variation_type',
+      'd7_commerce_product_variation',
+    ]);
+  }
+
+  /**
+   * Test product variation migration from Drupal 7 Commerce to Drupal 8.
+   */
+  public function testProductVariation() {
+    $variation = [
+      'id' => 1,
+      'uid' => '0',
+      'sku' => 'TOT1-GRN-OS',
+      'price' => '16.000000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Tote Bag 1',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+    $variation = [
+      'id' => 11,
+      'uid' => '0',
+      'sku' => 'HAT1-GRY-OS',
+      'price' => '16.000000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Hat 1',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+    $variation = [
+      'id' => 12,
+      'uid' => '0',
+      'sku' => 'HAT2-BLK-OS',
+      'price' => '12.000000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Hat 2',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+    $variation = [
+      'id' => 19,
+      'uid' => '0',
+      'sku' => 'SHO2-PRL-04',
+      'price' => '40.000000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Shoe 2',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+    $variation = [
+      'id' => 20,
+      'uid' => '0',
+      'sku' => 'SHO2-PRL-05',
+      'price' => '40.000000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Shoe 2',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+    $variation = [
+      'id' => 28,
+      'uid' => '0',
+      'sku' => 'USB-BLU-08',
+      'price' => '11.990000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Storage 1',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+    $variation = [
+      'id' => 29,
+      'uid' => '0',
+      'sku' => 'USB-BLU-16',
+      'price' => '17.990000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Storage 1',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+    $variation = [
+      'id' => 30,
+      'uid' => '0',
+      'sku' => 'USB-BLU-32',
+      'price' => '29.990000',
+      'currency' => 'USD',
+      'product_id' => NULL,
+      'variation_title' => 'Storage 1',
+      'variation_bundle' => 'default',
+    ];
+    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
+  }
+
+  /**
+   * Test timestamps.
+   */
+  public function testTimestamps() {
+    $product = ProductVariation::load(1);
+    $this->assertEquals($product->getCreatedTime(), 1493287314);
+    $this->assertEquals($product->getChangedTime(), 1493287350);
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductVariationTypeTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductVariationTypeTestMigrate.php
new file mode 100644
index 0000000..32708bb
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProductVariationTypeTestMigrate.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests product variation type migration.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateProductVariationTypeTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'inline_entity_form',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->executeMigrations([
+      'd7_commerce_product_variation_type',
+      'd7_commerce_product_variation',
+    ]);
+  }
+
+  /**
+   * Test product variation type migration from Drupal 7 to 8.
+   *
+   * Product variation types in Drupal 8 are product types in Drupal 7.
+   */
+  public function testProductVariationType() {
+    $this->assertProductVariationTypeEntity('bags_cases', 'Bags & Cases', 'default', FALSE);
+    $this->assertProductVariationTypeEntity('hats', 'Hats', 'default', FALSE);
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProfileBillingTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProfileBillingTestMigrate.php
new file mode 100644
index 0000000..5e2da29
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateProfileBillingTestMigrate.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests billing profile migration.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateProfileBillingTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('profile');
+    $this->installConfig('commerce_order');
+    // @todo Execute the d7_field and d7_field_instance migrations?
+    $this->executeMigrations([
+      'd7_user_role',
+      'd7_user',
+      'd7_commerce_billing_profile',
+    ]);
+  }
+
+  /**
+   * Test profile migration from Drupal 7 Commerce to Drupal 8.
+   */
+  public function testProfileBilling() {
+    $this->assertBillingProfile(1, '4', TRUE, '1493287440', '1493287445');
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateStoreTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateStoreTest.php
deleted file mode 100644
index 4f7dd6b..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateStoreTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests store migration.
- *
- * @group commerce_migrate
- */
-class MigrateStoreTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->migrateStore();
-  }
-
-  /**
-   * Test store migration from Drupal 7 to 8.
-   */
-  public function testStore() {
-    $this->assertStoreEntity(1, 'Commerce Kickstart', 'CommerceKickstart@example.com', 'USD', 'online', '1');
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateStoreTestMigrate.php b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateStoreTestMigrate.php
new file mode 100644
index 0000000..c58511f
--- /dev/null
+++ b/modules/commerce/tests/src/Kernel/Migrate/d7/MigrateStoreTestMigrate.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests store migration.
+ *
+ * @group commerce_migrate
+ */
+class MigrateStoreTestMigrate extends MigrateCommerce1TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->migrateStore();
+  }
+
+  /**
+   * Test store migration from Drupal 7 to 8.
+   */
+  public function testStore() {
+    $this->assertStoreEntity(1, 'Commerce Kickstart', 'CommerceKickstart@example.com', 'USD', 'online', '1');
+  }
+
+}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/OrderItemTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/OrderItemTest.php
deleted file mode 100644
index acbaa01..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/OrderItemTest.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\commerce_order\Entity\OrderItem;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests order item migration.
- *
- * @group commerce_migrate_commerce
- */
-class OrderItemTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_order_item');
-    // We need to install config so we have a default order item type.
-    // @todo provide way to migrate line item types properly.
-    $this->installConfig(['commerce_order']);
-    // @todo Execute the d7_field and d7_field_instance migrations?
-    $this->executeMigrations([
-      'd7_commerce_product_variation_type',
-      'd7_commerce_product_variation',
-      'd7_commerce_order_item_type',
-      'd7_commerce_order_item',
-    ]);
-  }
-
-  /**
-   * Test line item migration from Drupal 7 to 8.
-   */
-  public function testOrderItem() {
-    $order = [
-      'id' => 1,
-      'order_id' => NULL,
-      'purchased_entity_id' => '12',
-      'quantity' => '1.00',
-      'title' => 'HAT2-BLK-OS',
-      'unit_price' => '12.000000',
-      'unit_price_currency' => 'USD',
-      'total_price' => '12.000000',
-      'total_price_currency' => 'USD',
-    ];
-    $this->assertOrderItem($order['id'], $order['order_id'], $order['purchased_entity_id'], $order['quantity'], $order['title'], $order['unit_price'], $order['unit_price_currency'], $order['total_price'], $order['total_price_currency']);
-    $order = [
-      'id' => 2,
-      'order_id' => NULL,
-      'purchased_entity_id' => '12',
-      'quantity' => '1.00',
-      'title' => 'HAT2-BLK-OS',
-      'unit_price' => '12.000000',
-      'unit_price_currency' => 'USD',
-      'total_price' => '12.000000',
-      'total_price_currency' => 'USD',
-    ];
-    $this->assertOrderItem($order['id'], $order['order_id'], $order['purchased_entity_id'], $order['quantity'], $order['title'], $order['unit_price'], $order['unit_price_currency'], $order['total_price'], $order['total_price_currency']);
-    $order = [
-      'id' => 3,
-      'order_id' => NULL,
-      'purchased_entity_id' => '45',
-      'quantity' => '1.00',
-      'title' => 'TSH3-CRM-LG',
-      'unit_price' => '38.000000',
-      'unit_price_currency' => 'USD',
-      'total_price' => '38.000000',
-      'total_price_currency' => 'USD',
-    ];
-    $this->assertOrderItem($order['id'], $order['order_id'], $order['purchased_entity_id'], $order['quantity'], $order['title'], $order['unit_price'], $order['unit_price_currency'], $order['total_price'], $order['total_price_currency']);
-
-    // Test time stamps.
-    $order_item = OrderItem::load(1);
-    $this->assertEquals($order_item->getCreatedTime(), 1493287435);
-    $this->assertEquals($order_item->getChangedTime(), 1493287440);
-    $order_item = OrderItem::load(2);
-    $this->assertEquals($order_item->getCreatedTime(), 1493287445);
-    $this->assertEquals($order_item->getChangedTime(), 1493287450);
-    $order_item = OrderItem::load(3);
-    $this->assertEquals($order_item->getCreatedTime(), 1493287455);
-    $this->assertEquals($order_item->getChangedTime(), 1493287460);
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/OrderTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/OrderTest.php
deleted file mode 100644
index 0a27459..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/OrderTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\commerce_order\Entity\Order;
-
-/**
- * Tests line item migration.
- *
- * @group commerce_migrate_commerce
- */
-class OrderTest extends Commerce1TestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('profile');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_order');
-    $this->installEntitySchema('commerce_order_item');
-    $this->installConfig(['commerce_order']);
-    $this->migrateStore();
-    // @todo Execute the d7_field and d7_field_instance migrations?
-    $this->executeMigrations([
-      'd7_user_role',
-      'd7_user',
-      'd7_commerce_product_variation_type',
-      'd7_commerce_product_variation',
-      'd7_commerce_billing_profile',
-      'd7_commerce_order_item_type',
-      'd7_commerce_order_item',
-      'd7_commerce_order',
-    ]);
-  }
-
-  /**
-   * Test line item migration from Drupal 7 to 8.
-   */
-  public function testOrder() {
-    $order = Order::load(1);
-
-    // Test the order.
-    $this->assertNotNull($order);
-    $this->assertEquals($order->getOrderNumber(), 1);
-    $this->assertEquals($order->getCreatedTime(), 1493287432);
-    $this->assertEquals($order->getPlacedTime(), 1493287432);
-    // Test line items.
-    $order_items = $order->getItems();
-    $this->assertNotNull($order_items);
-    // @TODO: False failures: https://www.drupal.org/node/2906650
-    //$this->assertEquals('Hat 2', $order_items[0]->label());
-    //$this->assertEquals('Hat 2', $order_items[1]->label());
-    $this->assertEquals(24.000000, $order->getTotalPrice()->getNumber());
-
-    // Test billing profile.
-    $profile = $order->getBillingProfile();
-    $this->assertNotNull($profile);
-    $this->assertEquals($profile->bundle(), 'customer');
-    $this->assertEquals($profile->isActive(), TRUE);
-
-    // Test store.
-    $this->assertEquals(\Drupal::service('commerce_store.default_store_resolver')
-      ->resolve()
-      ->id(), $order->getStoreId());
-  }
-
-  /**
-   * Tests various order migration states.
-   */
-  public function testOrderStates() {
-    $order_draft = Order::load(1);
-    $order_pending = Order::load(2);
-    $order_complete = Order::load(3);
-
-    $this->assertEquals('Draft', $order_draft->getState()
-      ->getLabel()
-      ->render());
-    $this->assertEquals('Completed', $order_pending->getState()
-      ->getLabel()
-      ->render());
-    $this->assertEquals('Completed', $order_complete->getState()
-      ->getLabel()
-      ->render());
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTest.php
deleted file mode 100644
index 0d76724..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests line item migration.
- *
- * @group commerce_migrate_commerce
- */
-class ProductTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_product');
-    $this->migrateStore();
-    $this->executeMigrations([
-      'd7_user_role',
-      'd7_user',
-      'd7_commerce_product_variation_type',
-      'd7_commerce_product_variation',
-      'd7_commerce_product_type',
-    ]);
-
-    $this->executeMigrations([
-      'd7_commerce_product',
-    ]);
-  }
-
-  /**
-   * Test product migration from Drupal 7 to 8.
-   */
-  public function testProduct() {
-    $this->assertProductEntity(15, '1', 'Go green with Drupal Commerce Reusable Tote Bag', TRUE, ['1'], ['1']);
-
-    // Tests a product with multiple variations.
-    $this->assertProductEntity(26, '1', 'Commerce Guys USB Key', TRUE, ['1'], ['28', '29', '30']);
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTypeTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTypeTest.php
deleted file mode 100644
index b6a3fdd..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTypeTest.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests line item migration.
- *
- * @group commerce_migrate_commerce
- */
-class ProductTypeTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    // @todo Execute the d7_field and d7_field_instance migrations?
-    $this->executeMigrations([
-      'd7_commerce_product_type',
-    ]);
-  }
-
-  /**
-   * Test product type migration from Drupal 7 to 8.
-   */
-  public function testProductType() {
-    $type = [
-      'id' => 'bags_cases',
-      'label' => 'Bags & Cases',
-      'description' => 'A <em>Bags & Cases</em> is a content type which contain product variations.',
-      'variation_type' => 'bags_cases',
-    ];
-    $this->assertProductTypeEntity($type['id'], $type['label'], $type['description'], $type['variation_type']);
-    $type = [
-      'id' => 'tops',
-      'label' => 'Tops',
-      'description' => 'A <em>Tops</em> is a content type which contain product variations.',
-      'variation_type' => 'tops',
-    ];
-    $this->assertProductTypeEntity($type['id'], $type['label'], $type['description'], $type['variation_type']);
-  }
-
-  /**
-   * Test product type migration fields from Drupal 7 to 8.
-   */
-  public function testProductTypeFields() {
-    /** @var \Drupal\Core\Entity\EntityFieldManager $field_manager */
-    $field_manager = $this->container->get('entity_field.manager');
-
-    $bundle = 'tops';
-    $fields = ['body', 'variations', 'stores'];
-    $field_definitions = $field_manager->getFieldDefinitions('commerce_product', $bundle);
-    // Check that fields were added.
-    foreach ($fields as $field) {
-      $this->assertTrue(isset($field_definitions[$field]));
-    }
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTest.php
deleted file mode 100644
index a58e849..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTest.php
+++ /dev/null
@@ -1,144 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\commerce_product\Entity\ProductVariation;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests line item migration.
- *
- * @group commerce_migrate_commerce
- */
-class ProductVariationTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('commerce_product_variation');
-    // @todo Execute the d7_field and d7_field_instance migrations?
-    $this->executeMigrations([
-      'd7_commerce_product_variation_type',
-      'd7_commerce_product_variation',
-    ]);
-  }
-
-  /**
-   * Test product variation migration from Drupal 7 Commerce to Drupal 8.
-   */
-  public function testProductVariation() {
-    $variation = [
-      'id' => 1,
-      'uid' => '0',
-      'sku' => 'TOT1-GRN-OS',
-      'price' => '16.000000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Tote Bag 1',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-    $variation = [
-      'id' => 11,
-      'uid' => '0',
-      'sku' => 'HAT1-GRY-OS',
-      'price' => '16.000000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Hat 1',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-    $variation = [
-      'id' => 12,
-      'uid' => '0',
-      'sku' => 'HAT2-BLK-OS',
-      'price' => '12.000000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Hat 2',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-    $variation = [
-      'id' => 19,
-      'uid' => '0',
-      'sku' => 'SHO2-PRL-04',
-      'price' => '40.000000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Shoe 2',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-    $variation = [
-      'id' => 20,
-      'uid' => '0',
-      'sku' => 'SHO2-PRL-05',
-      'price' => '40.000000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Shoe 2',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-    $variation = [
-      'id' => 28,
-      'uid' => '0',
-      'sku' => 'USB-BLU-08',
-      'price' => '11.990000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Storage 1',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-    $variation = [
-      'id' => 29,
-      'uid' => '0',
-      'sku' => 'USB-BLU-16',
-      'price' => '17.990000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Storage 1',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-    $variation = [
-      'id' => 30,
-      'uid' => '0',
-      'sku' => 'USB-BLU-32',
-      'price' => '29.990000',
-      'currency' => 'USD',
-      'product_id' => NULL,
-      'variation_title' => 'Storage 1',
-      'variation_bundle' => 'default',
-    ];
-    $this->assertProductVariationEntity($variation['id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $variation['product_id'], $variation['variation_title'], $variation['variation_bundle']);
-  }
-
-  /**
-   * Test timestamps.
-   */
-  public function testTimestamps() {
-    $product = ProductVariation::load(1);
-    $this->assertEquals($product->getCreatedTime(), 1493287314);
-    $this->assertEquals($product->getChangedTime(), 1493287350);
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTypeTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTypeTest.php
deleted file mode 100644
index d57912c..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTypeTest.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests product variation type migration.
- *
- * @group commerce_migrate_commerce
- */
-class ProductVariationTypeTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'inline_entity_form',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->executeMigrations([
-      'd7_commerce_product_variation_type',
-      'd7_commerce_product_variation',
-    ]);
-  }
-
-  /**
-   * Test product variation type migration from Drupal 7 to 8.
-   *
-   * Product variation types in Drupal 8 are product types in Drupal 7.
-   */
-  public function testProductVariationType() {
-    $this->assertProductVariationTypeEntity('bags_cases', 'Bags & Cases', 'default', FALSE);
-    $this->assertProductVariationTypeEntity('hats', 'Hats', 'default', FALSE);
-  }
-
-}
diff --git a/modules/commerce/tests/src/Kernel/Migrate/d7/ProfileBillingTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProfileBillingTest.php
deleted file mode 100644
index ef94a77..0000000
--- a/modules/commerce/tests/src/Kernel/Migrate/d7/ProfileBillingTest.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_commerce\Kernel\Migrate\d7;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests billing profile migration.
- *
- * @group commerce_migrate_commerce
- */
-class ProfileBillingTest extends Commerce1TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('profile');
-    $this->installConfig('commerce_order');
-    // @todo Execute the d7_field and d7_field_instance migrations?
-    $this->executeMigrations([
-      'd7_user_role',
-      'd7_user',
-      'd7_commerce_billing_profile',
-    ]);
-  }
-
-  /**
-   * Test profile migration from Drupal 7 Commerce to Drupal 8.
-   */
-  public function testProfileBilling() {
-    $this->assertBillingProfile(1, '4', TRUE, '1493287440', '1493287445');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/CurrencyTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/CurrencyTest.php
deleted file mode 100644
index 30664e0..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/CurrencyTest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests currency migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart6
- */
-class CurrencyTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->executeMigration('ubercart_currency');
-  }
-
-  /**
-   * Test currency migration from Drupal 6 to 8.
-   */
-  public function testCurrency() {
-    $this->assertCurrencyEntity('NZD', 'NZD', 'New Zealand Dollar', '554', 2, '$');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateAttributeTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateAttributeTest.php
deleted file mode 100644
index ac5f792..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateAttributeTest.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\field\Entity\FieldStorageConfig;
-use Drupal\field\FieldStorageConfigInterface;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests attribute field storage migration.
- *
- * @group commerce_migrate
- */
-class MigrateAttributeTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'commerce_product',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->executeMigration('d6_ubercart_field_attribute');
-  }
-
-  /**
-   * Asserts various aspects of a field_storage_config entity.
-   *
-   * @param string $id
-   *   The entity ID in the form ENTITY_TYPE.FIELD_NAME.
-   * @param string $type
-   *   The expected field type.
-   * @param bool $translatable
-   *   Whether or not the field is expected to be translatable.
-   * @param int $cardinality
-   *   The expected cardinality of the field.
-   * @param array $dependencies
-   *   The field's dependencies.
-   */
-  protected function assertEntity($id, $type, $translatable, $cardinality, array $dependencies) {
-    list ($entity_type, $name) = explode('.', $id);
-
-    /** @var \Drupal\field\FieldStorageConfigInterface $field */
-    $field = FieldStorageConfig::load($id);
-    $this->assertTrue($field instanceof FieldStorageConfigInterface);
-    $this->assertSame($type, $field->getType());
-    $this->assertEquals($translatable, $field->isTranslatable());
-    $this->assertSame($entity_type, $field->getTargetEntityTypeId());
-    $this->assertSame($dependencies, $field->getDependencies());
-    if ($cardinality === 1) {
-      $this->assertFalse($field->isMultiple());
-    }
-    else {
-      $this->assertTrue($field->isMultiple());
-    }
-    $this->assertSame($cardinality, $field->getCardinality());
-  }
-
-  /**
-   * Test currency migration from Drupal 6 to 8.
-   */
-  public function testMigrateAttributeTest() {
-    $dependencies = [
-      'module' => ['commerce_product'],
-    ];
-    $this->assertEntity('commerce_product_variation.attribute_design', 'entity_reference', TRUE, 1, $dependencies);
-    $this->assertEntity('commerce_product_variation.attribute_color', 'entity_reference', TRUE, -1, $dependencies);
-    $this->assertEntity('commerce_product_variation.attribute_model_size', 'entity_reference', TRUE, 1, $dependencies);
-    $this->assertEntity('commerce_product_variation.attribute_name', 'entity_reference', TRUE, 1, $dependencies);
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateAttributeTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateAttributeTestMigrate.php
new file mode 100644
index 0000000..5dbbaee
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateAttributeTestMigrate.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\field\FieldStorageConfigInterface;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests attribute field storage migration.
+ *
+ * @group commerce_migrate
+ */
+class MigrateAttributeTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'commerce_product',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigration('d6_ubercart_field_attribute');
+  }
+
+  /**
+   * Asserts various aspects of a field_storage_config entity.
+   *
+   * @param string $id
+   *   The entity ID in the form ENTITY_TYPE.FIELD_NAME.
+   * @param string $type
+   *   The expected field type.
+   * @param bool $translatable
+   *   Whether or not the field is expected to be translatable.
+   * @param int $cardinality
+   *   The expected cardinality of the field.
+   * @param array $dependencies
+   *   The field's dependencies.
+   */
+  protected function assertEntity($id, $type, $translatable, $cardinality, array $dependencies) {
+    list ($entity_type, $name) = explode('.', $id);
+
+    /** @var \Drupal\field\FieldStorageConfigInterface $field */
+    $field = FieldStorageConfig::load($id);
+    $this->assertTrue($field instanceof FieldStorageConfigInterface);
+    $this->assertSame($type, $field->getType());
+    $this->assertEquals($translatable, $field->isTranslatable());
+    $this->assertSame($entity_type, $field->getTargetEntityTypeId());
+    $this->assertSame($dependencies, $field->getDependencies());
+    if ($cardinality === 1) {
+      $this->assertFalse($field->isMultiple());
+    }
+    else {
+      $this->assertTrue($field->isMultiple());
+    }
+    $this->assertSame($cardinality, $field->getCardinality());
+  }
+
+  /**
+   * Test currency migration from Drupal 6 to 8.
+   */
+  public function testMigrateAttributeTest() {
+    $dependencies = [
+      'module' => ['commerce_product'],
+    ];
+    $this->assertEntity('commerce_product_variation.attribute_design', 'entity_reference', TRUE, 1, $dependencies);
+    $this->assertEntity('commerce_product_variation.attribute_color', 'entity_reference', TRUE, -1, $dependencies);
+    $this->assertEntity('commerce_product_variation.attribute_model_size', 'entity_reference', TRUE, 1, $dependencies);
+    $this->assertEntity('commerce_product_variation.attribute_name', 'entity_reference', TRUE, 1, $dependencies);
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateCurrencyTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateCurrencyTestMigrate.php
new file mode 100644
index 0000000..cbdb889
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateCurrencyTestMigrate.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests currency migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart6
+ */
+class MigrateCurrencyTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigration('ubercart_currency');
+  }
+
+  /**
+   * Test currency migration from Drupal 6 to 8.
+   */
+  public function testCurrency() {
+    $this->assertCurrencyEntity('NZD', 'NZD', 'New Zealand Dollar', '554', 2, '$');
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateOrderItemTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateOrderItemTestMigrate.php
new file mode 100644
index 0000000..ed94faf
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateOrderItemTestMigrate.php
@@ -0,0 +1,71 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\commerce_order\Entity\OrderItem;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests order item migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart6
+ */
+class MigrateOrderItemTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('profile');
+    $this->installEntitySchema('commerce_product');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_order');
+    $this->installEntitySchema('commerce_order_item');
+    $this->installConfig(['commerce_order']);
+    $this->installConfig(['commerce_product']);
+    $this->migrateStore();
+    $this->startCollectingMessages();
+    $this->executeMigrations([
+      'd6_ubercart_billing_profile',
+      'd6_ubercart_order',
+      'd6_ubercart_product_variation',
+      'd6_ubercart_product',
+      'd6_ubercart_order_product',
+    ]);
+  }
+
+  /**
+   * Test order item migration from Drupal 6 to 8.
+   */
+  public function testOrderItem() {
+    $this->assertOrderItem(2, 2, 3, '1.00', 'Fairy cake', 1500.0000, 'NZD', 1500.000, 'NZD');
+    $this->assertOrderItem(3, 1, 1, '1.00', 'Bath Towel', 20.000000, 'NZD', 20.000000, 'NZD');
+    $this->assertOrderItem(4, 1, 2, '1.00', 'Beach Towel', 15.000000, 'NZD', 15.000000, 'NZD');
+
+    $order_item = OrderItem::load(2);
+    // Test that both product and order are linked.
+    $product = $order_item->getPurchasedEntity();
+    $this->assertNotNull($product);
+    $this->assertEquals(3, $product->id());
+
+    $order = $order_item->getOrder();
+    $this->assertNotNull($order);
+    $this->assertEquals(2, $order->id());
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateOrderTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateOrderTestMigrate.php
new file mode 100644
index 0000000..6e78317
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateOrderTestMigrate.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\commerce_order\Entity\Order;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests order migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart6
+ */
+class MigrateOrderTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('profile');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_order');
+    $this->installEntitySchema('commerce_order_item');
+    $this->installConfig(['commerce_order']);
+    $this->migrateStore();
+    $this->executeMigrations([
+      'd6_ubercart_billing_profile',
+      'd6_ubercart_order',
+    ]);
+
+  }
+
+  /**
+   * Test order migration from Drupal 6 to 8.
+   */
+  public function testOrder() {
+    $this->assertOrder(1, '1', '1', '1492868907', '1493078815', 'fordprefect@example.com', 'validation', '10.1.1.2', '3', '1493078815');
+    $this->assertOrder(2, '2', '1', '1492989920', '1493081092', 'trintragula@example.com', 'validation', '10.1.1.2', '5', '1493081092');
+
+    /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
+    $order = Order::load(1);
+    $this->assertNotNull($order->getBillingProfile());
+    $this->assertNull($order->getData('cc_data'));  $order = Order::load(2);
+    $this->assertNotNull($order->getBillingProfile());
+    $this->assertNull($order->getData('cc_data'));
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeTest.php
deleted file mode 100644
index ec57e9b..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeTest.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests product attribute migration.
- *
- * @group commerce_migrate
- */
-class MigrateProductAttributeTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_product');
-    $this->installConfig(['commerce_product']);
-    $this->migrateStore();
-    $this->executeMigrations([
-      'd6_ubercart_product_variation',
-      'd6_ubercart_product',
-      'd6_ubercart_product_attribute',
-    ]);
-  }
-
-  /**
-   * Test currency migration from Drupal 6 to 8.
-   */
-  public function testMigrateProductAttributeTest() {
-    $this->assertProductAttributeEntity('commerce_product_attribute.design', 'Cool Designs for your towel', 'radios');
-    $this->assertProductAttributeEntity('commerce_product_attribute.color', 'Color', 'checkbox');
-    $this->assertProductAttributeEntity('commerce_product_attribute.model_size', 'Model size', 'select');
-    $this->assertProductAttributeEntity('commerce_product_attribute.name', 'Name', 'text');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeTestMigrate.php
new file mode 100644
index 0000000..c32e97f
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeTestMigrate.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests product attribute migration.
+ *
+ * @group commerce_migrate
+ */
+class MigrateProductAttributeTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_product');
+    $this->installConfig(['commerce_product']);
+    $this->migrateStore();
+    $this->executeMigrations([
+      'd6_ubercart_product_variation',
+      'd6_ubercart_product',
+      'd6_ubercart_product_attribute',
+    ]);
+  }
+
+  /**
+   * Test currency migration from Drupal 6 to 8.
+   */
+  public function testMigrateProductAttributeTest() {
+    $this->assertProductAttributeEntity('commerce_product_attribute.design', 'Cool Designs for your towel', 'radios');
+    $this->assertProductAttributeEntity('commerce_product_attribute.color', 'Color', 'checkbox');
+    $this->assertProductAttributeEntity('commerce_product_attribute.model_size', 'Model size', 'select');
+    $this->assertProductAttributeEntity('commerce_product_attribute.name', 'Name', 'text');
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeValueTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeValueTest.php
deleted file mode 100644
index 6256b66..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeValueTest.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests product attribute value migration.
- *
- * @group commerce_migrate
- */
-class MigrateProductAttributeValueTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_product');
-    $this->installEntitySchema('commerce_product_attribute');
-    $this->installEntitySchema('commerce_product_attribute_value');
-    $this->installConfig(['commerce_product']);
-    $this->migrateStore();
-    $this->executeMigrations([
-      'd6_ubercart_product_variation',
-      'd6_ubercart_product',
-      'd6_ubercart_field_attribute',
-      'd6_ubercart_attribute_value',
-    ]);
-  }
-
-  /**
-   * Test currency migration from Drupal 6 to 8.
-   */
-  public function testMigrateProductAttributeValueTest() {
-    $this->assertProductAttributeValueEntity('1', 'design', 'Heart of Gold', 'Heart of Gold', '0');
-    $this->assertProductAttributeValueEntity('2', 'design', 'Trillian', 'Trillian', '0');
-    $this->assertProductAttributeValueEntity('3', 'design', 'Pan Galactic Gargle Blaster', 'Pan Galactic Gargle Blaster', '0');
-    $this->assertProductAttributeValueEntity('4', 'color', 'White', 'White', '500');
-    $this->assertProductAttributeValueEntity('5', 'color', 'Gold', 'Gold', '500');
-    $this->assertProductAttributeValueEntity('6', 'model_size', 'Keychain', 'Keychain', '20');
-    $this->assertProductAttributeValueEntity('7', 'model_size', 'Desk', 'Desk', '400');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeValueTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeValueTestMigrate.php
new file mode 100644
index 0000000..bcc207e
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductAttributeValueTestMigrate.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests product attribute value migration.
+ *
+ * @group commerce_migrate
+ */
+class MigrateProductAttributeValueTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_product');
+    $this->installEntitySchema('commerce_product_attribute');
+    $this->installEntitySchema('commerce_product_attribute_value');
+    $this->installConfig(['commerce_product']);
+    $this->migrateStore();
+    $this->executeMigrations([
+      'd6_ubercart_product_variation',
+      'd6_ubercart_product',
+      'd6_ubercart_field_attribute',
+      'd6_ubercart_attribute_value',
+    ]);
+  }
+
+  /**
+   * Test currency migration from Drupal 6 to 8.
+   */
+  public function testMigrateProductAttributeValueTest() {
+    $this->assertProductAttributeValueEntity('1', 'design', 'Heart of Gold', 'Heart of Gold', '0');
+    $this->assertProductAttributeValueEntity('2', 'design', 'Trillian', 'Trillian', '0');
+    $this->assertProductAttributeValueEntity('3', 'design', 'Pan Galactic Gargle Blaster', 'Pan Galactic Gargle Blaster', '0');
+    $this->assertProductAttributeValueEntity('4', 'color', 'White', 'White', '500');
+    $this->assertProductAttributeValueEntity('5', 'color', 'Gold', 'Gold', '500');
+    $this->assertProductAttributeValueEntity('6', 'model_size', 'Keychain', 'Keychain', '20');
+    $this->assertProductAttributeValueEntity('7', 'model_size', 'Desk', 'Desk', '400');
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTestMigrate.php
new file mode 100644
index 0000000..ad3aa34
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTestMigrate.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests Product migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart6
+ */
+class MigrateProductTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_product');
+    $this->installConfig(['commerce_product']);
+    $this->migrateStore();
+    $this->executeMigrations([
+      'ubercart_currency',
+      'd6_ubercart_product_variation',
+      'd6_ubercart_product',
+    ]);
+  }
+
+  /**
+   * Test product migration from Drupal 6 to 8.
+   */
+  public function testProduct() {
+    $this->assertProductEntity(1, '1', 'Bath Towel', TRUE, ['1'], ['1']);
+    $this->assertProductVariationEntity(1, '1', 'towel-bath-001', '20.000000', 'NZD', '1', 'Bath Towel', 'default');
+
+    $this->assertProductEntity(2, '1', 'Beach Towel', TRUE, ['1'], ['2']);
+    $this->assertProductVariationEntity(2, '1', 'towel-beach-001', '15.000000', 'NZD', '2', 'Beach Towel', 'default');
+
+    $this->assertProductEntity(3, '1', 'Fairy cake', TRUE, ['1'], ['3']);
+    $this->assertProductVariationEntity(3, '1', 'Fairy-Cake-001', '1500.000000', 'NZD', '3', 'Fairy cake', 'default');
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTypeTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTypeTest.php
deleted file mode 100644
index f45172e..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTypeTest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests product type migration.
- *
- * @group commerce_migrate
- */
-class MigrateProductTypeTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_product');
-    $this->installConfig(['commerce_product']);
-    $this->migrateStore();
-    $this->executeMigrations([
-      'd6_ubercart_product_variation',
-      'd6_ubercart_product',
-      'd6_ubercart_product_type',
-    ]);
-  }
-
-  /**
-   * Test product type migration from Drupal 6 to 8.
-   */
-  public function testProductType() {
-    $description = 'A type of spacecraft capable of traveling to the solar systems of other stars';
-    $this->assertProductTypeEntity('ship', 'Ship', $description, 'default');
-    $description = 'This node displays the representation of a product for sale on the website. It includes all the unique information that can be attributed to a specific model number.';
-    $this->assertProductTypeEntity('product', 'Product', $description, 'default');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTypeTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTypeTestMigrate.php
new file mode 100644
index 0000000..d22b97b
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductTypeTestMigrate.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests product type migration.
+ *
+ * @group commerce_migrate
+ */
+class MigrateProductTypeTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_product');
+    $this->installConfig(['commerce_product']);
+    $this->migrateStore();
+    $this->executeMigrations([
+      'd6_ubercart_product_variation',
+      'd6_ubercart_product',
+      'd6_ubercart_product_type',
+    ]);
+  }
+
+  /**
+   * Test product type migration from Drupal 6 to 8.
+   */
+  public function testProductType() {
+    $description = 'A type of spacecraft capable of traveling to the solar systems of other stars';
+    $this->assertProductTypeEntity('ship', 'Ship', $description, 'default');
+    $description = 'This node displays the representation of a product for sale on the website. It includes all the unique information that can be attributed to a specific model number.';
+    $this->assertProductTypeEntity('product', 'Product', $description, 'default');
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductVariationTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductVariationTestMigrate.php
new file mode 100644
index 0000000..722a5fb
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProductVariationTestMigrate.php
@@ -0,0 +1,57 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests Product migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart6
+ */
+class MigrateProductVariationTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'path',
+    'commerce_product',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('view');
+    $this->installEntitySchema('commerce_product_variation');
+    $this->installEntitySchema('commerce_product');
+    $this->installConfig(['commerce_product']);
+    $this->migrateStore();
+    $this->executeMigrations([
+      'd6_ubercart_product_variation',
+      'd6_ubercart_product',
+    ]);
+  }
+
+  /**
+   * Test product variation migration from Drupal 6 to 8.
+   */
+  public function testProductVariation() {
+    $this->assertProductVariationEntity(1, '1', 'towel-bath-001', '20.000000', 'NZD', '1', 'Bath Towel', 'default');
+    $this->assertProductEntity(1, '1', 'Bath Towel', TRUE, ['1'], ['1']);
+
+    $this->assertProductVariationEntity(2, '1', 'towel-beach-001', '15.000000', 'NZD', '2', 'Beach Towel', 'default');
+    $this->assertProductEntity(2, '1', 'Beach Towel', TRUE, ['1'], ['2']);
+
+    $this->assertProductVariationEntity(3, '1', 'Fairy-Cake-001', '1500.000000', 'NZD', '3', 'Fairy cake', 'default');
+    $this->assertProductEntity(3, '1', 'Fairy cake', TRUE, ['1'], ['3']);
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProfileBillingTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProfileBillingTest.php
deleted file mode 100644
index a150238..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProfileBillingTest.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\profile\Entity\Profile;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests billing profile migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart6
- */
-class MigrateProfileBillingTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('profile');
-    $this->installConfig('commerce_order');
-    $this->installConfig('commerce_migrate_ubercart');
-    $this->executeMigrations([
-      'd6_filter_format',
-      'd6_user_role',
-      'd6_user',
-      'd6_ubercart_billing_profile',
-    ]);
-  }
-
-  /**
-   * Test profile migration from Drupal 6 to 8.
-   */
-  public function testProfileBilling() {
-    $this->assertBillingProfile(1, '3', TRUE, '1492868907', '1493078815');
-    $profile = Profile::load(1);
-    $address = $profile->get('address')->first()->getValue();
-    $this->assertAddressField($address, 'US', '', '', NULL, '', NULL, '', '', '', NULL, '', '');
-    $phone = $profile->get('phone')->getValue();
-    $this->assertSame([], $phone);
-
-    $this->assertBillingProfile(2, '5', TRUE, '1492989920', '1493081092');
-    $profile = Profile::load(2);
-    $address = $profile->get('address')->first()->getValue();
-    $this->assertAddressField($address, 'US', 'US-WY', 'World B', NULL, '7654', NULL, '42 View Lane', 'Frogstar', 'Trin', NULL, 'Tragula', 'Perspective Ltd.');
-    $phone = $profile->get('phone')->getValue()[0]['value'];
-    $this->assertSame('111-9876', $phone);
-  }
-
-  /**
-   * Asserts an address field.
-   *
-   * @param array $address
-   *   The address id.
-   * @param string $expected_country_code
-   *   The country code.
-   * @param string $expected_administrative_area
-   *   The administrative area.
-   * @param string $expected_locality
-   *   The locality.
-   * @param string $expected_dependent_locality
-   *   The dependent locality.
-   * @param string $expected_postal_code
-   *   The postal code.
-   * @param string $expected_sorting_code
-   *   The sorting code.
-   * @param string $expected_address_line_1
-   *   Address line 1.
-   * @param string $expected_address_line_2
-   *   Address line 2.
-   * @param string $expected_given_name
-   *   The given name.
-   * @param string $expected_additional_name
-   *   Any additional names.
-   * @param string $expected_family_name
-   *   The family name.
-   * @param string $expected_organization
-   *   The organization string.
-   */
-  public function assertAddressField(array $address, $expected_country_code, $expected_administrative_area, $expected_locality, $expected_dependent_locality, $expected_postal_code, $expected_sorting_code, $expected_address_line_1, $expected_address_line_2, $expected_given_name, $expected_additional_name, $expected_family_name, $expected_organization) {
-    $this->assertSame($expected_country_code, $address['country_code']);
-    $this->assertSame($expected_administrative_area, $address['administrative_area']);
-    $this->assertSame($expected_locality, $address['locality']);
-    $this->assertSame($expected_dependent_locality, $address['dependent_locality']);
-    $this->assertSame($expected_postal_code, $address['postal_code']);
-    $this->assertSame($expected_sorting_code, $address['sorting_code']);
-    $this->assertSame($expected_address_line_1, $address['address_line1']);
-    $this->assertSame($expected_address_line_2, $address['address_line2']);
-    $this->assertSame($expected_given_name, $address['given_name']);
-    $this->assertSame($expected_additional_name, $address['additional_name']);
-    $this->assertSame($expected_family_name, $address['family_name']);
-    $this->assertSame($expected_organization, $address['organization']);
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProfileBillingTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProfileBillingTestMigrate.php
new file mode 100644
index 0000000..7a169b6
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateProfileBillingTestMigrate.php
@@ -0,0 +1,107 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\profile\Entity\Profile;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests billing profile migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart6
+ */
+class MigrateProfileBillingTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('profile');
+    $this->installConfig('commerce_order');
+    $this->installConfig('commerce_migrate_ubercart');
+    $this->executeMigrations([
+      'd6_filter_format',
+      'd6_user_role',
+      'd6_user',
+      'd6_ubercart_billing_profile',
+    ]);
+  }
+
+  /**
+   * Test profile migration from Drupal 6 to 8.
+   */
+  public function testProfileBilling() {
+    $this->assertBillingProfile(1, '3', TRUE, '1492868907', '1493078815');
+    $profile = Profile::load(1);
+    $address = $profile->get('address')->first()->getValue();
+    $this->assertAddressField($address, 'US', '', '', NULL, '', NULL, '', '', '', NULL, '', '');
+    $phone = $profile->get('phone')->getValue();
+    $this->assertSame([], $phone);
+
+    $this->assertBillingProfile(2, '5', TRUE, '1492989920', '1493081092');
+    $profile = Profile::load(2);
+    $address = $profile->get('address')->first()->getValue();
+    $this->assertAddressField($address, 'US', 'US-WY', 'World B', NULL, '7654', NULL, '42 View Lane', 'Frogstar', 'Trin', NULL, 'Tragula', 'Perspective Ltd.');
+    $phone = $profile->get('phone')->getValue()[0]['value'];
+    $this->assertSame('111-9876', $phone);
+  }
+
+  /**
+   * Asserts an address field.
+   *
+   * @param array $address
+   *   The address id.
+   * @param string $expected_country_code
+   *   The country code.
+   * @param string $expected_administrative_area
+   *   The administrative area.
+   * @param string $expected_locality
+   *   The locality.
+   * @param string $expected_dependent_locality
+   *   The dependent locality.
+   * @param string $expected_postal_code
+   *   The postal code.
+   * @param string $expected_sorting_code
+   *   The sorting code.
+   * @param string $expected_address_line_1
+   *   Address line 1.
+   * @param string $expected_address_line_2
+   *   Address line 2.
+   * @param string $expected_given_name
+   *   The given name.
+   * @param string $expected_additional_name
+   *   Any additional names.
+   * @param string $expected_family_name
+   *   The family name.
+   * @param string $expected_organization
+   *   The organization string.
+   */
+  public function assertAddressField(array $address, $expected_country_code, $expected_administrative_area, $expected_locality, $expected_dependent_locality, $expected_postal_code, $expected_sorting_code, $expected_address_line_1, $expected_address_line_2, $expected_given_name, $expected_additional_name, $expected_family_name, $expected_organization) {
+    $this->assertSame($expected_country_code, $address['country_code']);
+    $this->assertSame($expected_administrative_area, $address['administrative_area']);
+    $this->assertSame($expected_locality, $address['locality']);
+    $this->assertSame($expected_dependent_locality, $address['dependent_locality']);
+    $this->assertSame($expected_postal_code, $address['postal_code']);
+    $this->assertSame($expected_sorting_code, $address['sorting_code']);
+    $this->assertSame($expected_address_line_1, $address['address_line1']);
+    $this->assertSame($expected_address_line_2, $address['address_line2']);
+    $this->assertSame($expected_given_name, $address['given_name']);
+    $this->assertSame($expected_additional_name, $address['additional_name']);
+    $this->assertSame($expected_family_name, $address['family_name']);
+    $this->assertSame($expected_organization, $address['organization']);
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateStoreTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateStoreTestMigrate.php
new file mode 100644
index 0000000..4812652
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateStoreTestMigrate.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\commerce_store\Entity\Store;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests store migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart6
+ */
+class MigrateStoreTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['commerce_store'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_store');
+    $this->migrateStore();
+  }
+
+  /**
+   * Test store migration from Drupal 6 to 8.
+   */
+  public function testStore() {
+    $this->assertStoreEntity(1, 'Awesome Stuff', 'awesome_stuff@example.com', 'NZD', 'online', '1');
+
+    $store = Store::load(1);
+    $address = $store->getAddress();
+    $this->assertAddressItem($address, 'US', NULL, 'Betelgeuse', NULL, '4242', NULL, '123 First Street', '456 Second Street', NULL, NULL, NULL, NULL);
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateTaxTypeTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateTaxTypeTestMigrate.php
new file mode 100644
index 0000000..3ce0e90
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateTaxTypeTestMigrate.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests tax type migration.
+ *
+ * @group commerce_migrate
+ */
+class MigrateTaxTypeTestMigrate extends MigrateUbercart6TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['commerce_tax'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_tax_type');
+    $this->executeMigration('d6_ubercart_tax_type');
+  }
+
+  /**
+   * Test tax migration from Drupal 6 to 8.
+   */
+  public function testTaxType() {
+    $this->assertTaxType('handling', 'Handling', 'custom', '0.04');
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateUbercart6TestBase.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateUbercart6TestBase.php
new file mode 100644
index 0000000..f4a0667
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d6/MigrateUbercart6TestBase.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
+
+use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
+
+/**
+ * Test base for Ubercart D6 tests.
+ */
+abstract class MigrateUbercart6TestBase extends MigrateDrupal6TestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'action',
+    'address',
+    'commerce',
+    'commerce_price',
+    'commerce_store',
+    'commerce_order',
+    'commerce_migrate',
+    'entity',
+    'entity_reference_revisions',
+    'inline_entity_form',
+    'profile',
+    'state_machine',
+    'text',
+    'views',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_store');
+  }
+
+  /**
+   * Executes store migrations.
+   */
+  protected function migrateStore() {
+    $this->migrateUsers(FALSE);
+    $this->executeMigrations([
+      'ubercart_currency',
+      'd6_ubercart_store',
+    ]);
+  }
+
+  /**
+   * Gets the path to the fixture file.
+   */
+  protected function getFixtureFilePath() {
+    return __DIR__ . '/../../../../fixtures/uc6.php';
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/OrderItemTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/OrderItemTest.php
deleted file mode 100644
index 1109408..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/OrderItemTest.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\commerce_order\Entity\OrderItem;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests order item migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart6
- */
-class OrderItemTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('profile');
-    $this->installEntitySchema('commerce_product');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_order');
-    $this->installEntitySchema('commerce_order_item');
-    $this->installConfig(['commerce_order']);
-    $this->installConfig(['commerce_product']);
-    $this->migrateStore();
-    $this->startCollectingMessages();
-    $this->executeMigrations([
-      'd6_ubercart_billing_profile',
-      'd6_ubercart_order',
-      'd6_ubercart_product_variation',
-      'd6_ubercart_product',
-      'd6_ubercart_order_product',
-    ]);
-  }
-
-  /**
-   * Test order item migration from Drupal 6 to 8.
-   */
-  public function testOrderItem() {
-    $this->assertOrderItem(2, 2, 3, '1.00', 'Fairy cake', 1500.0000, 'NZD', 1500.000, 'NZD');
-    $this->assertOrderItem(3, 1, 1, '1.00', 'Bath Towel', 20.000000, 'NZD', 20.000000, 'NZD');
-    $this->assertOrderItem(4, 1, 2, '1.00', 'Beach Towel', 15.000000, 'NZD', 15.000000, 'NZD');
-
-    $order_item = OrderItem::load(2);
-    // Test that both product and order are linked.
-    $product = $order_item->getPurchasedEntity();
-    $this->assertNotNull($product);
-    $this->assertEquals(3, $product->id());
-
-    $order = $order_item->getOrder();
-    $this->assertNotNull($order);
-    $this->assertEquals(2, $order->id());
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/OrderTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/OrderTest.php
deleted file mode 100644
index 0aaf552..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/OrderTest.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\commerce_order\Entity\Order;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests order migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart6
- */
-class OrderTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('profile');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_order');
-    $this->installEntitySchema('commerce_order_item');
-    $this->installConfig(['commerce_order']);
-    $this->migrateStore();
-    $this->executeMigrations([
-      'd6_ubercart_billing_profile',
-      'd6_ubercart_order',
-    ]);
-
-  }
-
-  /**
-   * Test order migration from Drupal 6 to 8.
-   */
-  public function testOrder() {
-    $this->assertOrder(1, '1', '1', '1492868907', '1493078815', 'fordprefect@example.com', 'validation', '10.1.1.2', '3', '1493078815');
-    $this->assertOrder(2, '2', '1', '1492989920', '1493081092', 'trintragula@example.com', 'validation', '10.1.1.2', '5', '1493081092');
-
-    /** @var \Drupal\commerce_order\Entity\OrderInterface $order */
-    $order = Order::load(1);
-    $this->assertNotNull($order->getBillingProfile());
-    $this->assertNull($order->getData('cc_data'));  $order = Order::load(2);
-    $this->assertNotNull($order->getBillingProfile());
-    $this->assertNull($order->getData('cc_data'));
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/ProductTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/ProductTest.php
deleted file mode 100644
index d9597b2..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/ProductTest.php
+++ /dev/null
@@ -1,58 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests Product migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart6
- */
-class ProductTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_product');
-    $this->installConfig(['commerce_product']);
-    $this->migrateStore();
-    $this->executeMigrations([
-      'ubercart_currency',
-      'd6_ubercart_product_variation',
-      'd6_ubercart_product',
-    ]);
-  }
-
-  /**
-   * Test product migration from Drupal 6 to 8.
-   */
-  public function testProduct() {
-    $this->assertProductEntity(1, '1', 'Bath Towel', TRUE, ['1'], ['1']);
-    $this->assertProductVariationEntity(1, '1', 'towel-bath-001', '20.000000', 'NZD', '1', 'Bath Towel', 'default');
-
-    $this->assertProductEntity(2, '1', 'Beach Towel', TRUE, ['1'], ['2']);
-    $this->assertProductVariationEntity(2, '1', 'towel-beach-001', '15.000000', 'NZD', '2', 'Beach Towel', 'default');
-
-    $this->assertProductEntity(3, '1', 'Fairy cake', TRUE, ['1'], ['3']);
-    $this->assertProductVariationEntity(3, '1', 'Fairy-Cake-001', '1500.000000', 'NZD', '3', 'Fairy cake', 'default');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/ProductVariationTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/ProductVariationTest.php
deleted file mode 100644
index 81acde1..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/ProductVariationTest.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests Product migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart6
- */
-class ProductVariationTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'path',
-    'commerce_product',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('view');
-    $this->installEntitySchema('commerce_product_variation');
-    $this->installEntitySchema('commerce_product');
-    $this->installConfig(['commerce_product']);
-    $this->migrateStore();
-    $this->executeMigrations([
-      'd6_ubercart_product_variation',
-      'd6_ubercart_product',
-    ]);
-  }
-
-  /**
-   * Test product variation migration from Drupal 6 to 8.
-   */
-  public function testProductVariation() {
-    $this->assertProductVariationEntity(1, '1', 'towel-bath-001', '20.000000', 'NZD', '1', 'Bath Towel', 'default');
-    $this->assertProductEntity(1, '1', 'Bath Towel', TRUE, ['1'], ['1']);
-
-    $this->assertProductVariationEntity(2, '1', 'towel-beach-001', '15.000000', 'NZD', '2', 'Beach Towel', 'default');
-    $this->assertProductEntity(2, '1', 'Beach Towel', TRUE, ['1'], ['2']);
-
-    $this->assertProductVariationEntity(3, '1', 'Fairy-Cake-001', '1500.000000', 'NZD', '3', 'Fairy cake', 'default');
-    $this->assertProductEntity(3, '1', 'Fairy cake', TRUE, ['1'], ['3']);
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/StoreTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/StoreTest.php
deleted file mode 100644
index ca168db..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/StoreTest.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\commerce_store\Entity\Store;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests store migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart6
- */
-class StoreTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = ['commerce_store'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_store');
-    $this->migrateStore();
-  }
-
-  /**
-   * Test store migration from Drupal 6 to 8.
-   */
-  public function testStore() {
-    $this->assertStoreEntity(1, 'Awesome Stuff', 'awesome_stuff@example.com', 'NZD', 'online', '1');
-
-    $store = Store::load(1);
-    $address = $store->getAddress();
-    $this->assertAddressItem($address, 'US', NULL, 'Betelgeuse', NULL, '4242', NULL, '123 First Street', '456 Second Street', NULL, NULL, NULL, NULL);
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/TaxTypeTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/TaxTypeTest.php
deleted file mode 100644
index c15a773..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/TaxTypeTest.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests tax type migration.
- *
- * @group commerce_migrate
- */
-class TaxTypeTest extends Ubercart6TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = ['commerce_tax'];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_tax_type');
-    $this->executeMigration('d6_ubercart_tax_type');
-  }
-
-  /**
-   * Test tax migration from Drupal 6 to 8.
-   */
-  public function testTaxType() {
-    $this->assertTaxType('handling', 'Handling', 'custom', '0.04');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d6/Ubercart6TestBase.php b/modules/ubercart/tests/src/Kernel/Migrate/d6/Ubercart6TestBase.php
deleted file mode 100644
index dc492da..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d6/Ubercart6TestBase.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d6;
-
-use Drupal\Tests\migrate_drupal\Kernel\d6\MigrateDrupal6TestBase;
-
-/**
- * Test base for Ubercart D6 tests.
- */
-abstract class Ubercart6TestBase extends MigrateDrupal6TestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'action',
-    'address',
-    'commerce',
-    'commerce_price',
-    'commerce_store',
-    'commerce_order',
-    'commerce_migrate',
-    'entity',
-    'entity_reference_revisions',
-    'inline_entity_form',
-    'profile',
-    'state_machine',
-    'text',
-    'views',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_store');
-  }
-
-  /**
-   * Executes store migrations.
-   */
-  protected function migrateStore() {
-    $this->migrateUsers(FALSE);
-    $this->executeMigrations([
-      'ubercart_currency',
-      'd6_ubercart_store',
-    ]);
-  }
-
-  /**
-   * Gets the path to the fixture file.
-   */
-  protected function getFixtureFilePath() {
-    return __DIR__ . '/../../../../fixtures/uc6.php';
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/CurrencyTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/CurrencyTest.php
deleted file mode 100644
index 6431332..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d7/CurrencyTest.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
-
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests currency migration.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart7
- */
-class CurrencyTest extends Ubercart7TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->executeMigration('ubercart_currency');
-  }
-
-  /**
-   * Test currency migration from Drupal 7 to 8.
-   */
-  public function testCurrency() {
-    $this->assertCurrencyEntity('USD', 'USD', 'US Dollar', '840', 2, '$');
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateCurrencyTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateCurrencyTestMigrate.php
new file mode 100644
index 0000000..f290a46
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateCurrencyTestMigrate.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
+
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests currency migration.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart7
+ */
+class MigrateCurrencyTestMigrate extends MigrateUbercart7TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigration('ubercart_currency');
+  }
+
+  /**
+   * Test currency migration from Drupal 7 to 8.
+   */
+  public function testCurrency() {
+    $this->assertCurrencyEntity('USD', 'USD', 'US Dollar', '840', 2, '$');
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateMigrateUbercart7FixtureTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateMigrateUbercart7FixtureTest.php
new file mode 100644
index 0000000..d1e8818
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateMigrateUbercart7FixtureTest.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
+
+use Drupal\user\Entity\User;
+
+/**
+ * Test that ensures fixture can be installed.
+ *
+ * @group commerce_migrate
+ * @group commerce_migrate_ubercart7
+ */
+class MigrateMigrateUbercart7FixtureTest extends MigrateUbercart7TestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->executeMigrations([
+      'd7_user_role',
+      'd7_user',
+    ]);
+  }
+
+  /**
+   * If the fixture installed, this will pass.
+   */
+  public function testItWorked() {
+    $user = User::load(2);
+    $this->assertEquals('tomparis', $user->getUsername());
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateStoreTestMigrate.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateStoreTestMigrate.php
new file mode 100644
index 0000000..4c07a59
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateStoreTestMigrate.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
+
+use Drupal\commerce_store\Entity\Store;
+use Drupal\Tests\commerce_migrate\Kernel\MigrateCommerceMigrateTestTrait;
+
+/**
+ * Tests store migration.
+ *
+ * @group commerce_migrate_ubercart7
+ */
+class MigrateStoreTestMigrate extends MigrateUbercart7TestBase {
+
+  use MigrateCommerceMigrateTestTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_store');
+    $this->executeMigrations([
+      'd7_filter_format',
+      'd7_user_role',
+      'd7_user',
+      'ubercart_currency',
+      'd7_ubercart_store',
+    ]);
+  }
+
+  /**
+   * Test store migration from Drupal 7 to 8.
+   */
+  public function testStore() {
+    $this->assertStoreEntity(1, "Quark's", 'quark@example.com', 'USD', 'online', '1');
+
+    $store = Store::load(1);
+    $address = $store->getAddress();
+    $this->assertAddressItem($address, 'CA', NULL, 'Deep Space 9', NULL, '9999', NULL, '47 The Promenade', 'Lower Level', NULL, NULL, NULL, NULL);
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateUbercart7TestBase.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateUbercart7TestBase.php
new file mode 100644
index 0000000..bb065c5
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Migrate/d7/MigrateUbercart7TestBase.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
+
+use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
+
+/**
+ * Test base for Ubercart D7 tests.
+ */
+abstract class MigrateUbercart7TestBase extends MigrateDrupal7TestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'action',
+    'address',
+    'commerce',
+    'commerce_price',
+    'commerce_store',
+    'commerce_order',
+    'commerce_migrate',
+    'entity',
+    'entity_reference_revisions',
+    'inline_entity_form',
+    'profile',
+    'state_machine',
+    'text',
+    'views',
+    'commerce_migrate_ubercart',
+    'telephone',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_store');
+    $this->installConfig(static::$modules);
+  }
+
+  /**
+   * Gets the path to the fixture file.
+   */
+  protected function getFixtureFilePath() {
+    return __DIR__ . '/../../../../fixtures/uc7.php';
+  }
+
+  /**
+   * Creates a default store.
+   */
+  protected function createDefaultStore() {
+    $currency_importer = \Drupal::service('commerce_price.currency_importer');
+    /** @var \Drupal\commerce_store\StoreStorage $store_storage */
+    $store_storage = \Drupal::service('entity_type.manager')->getStorage('commerce_store');
+
+    $currency_importer->import('USD');
+    $store_values = [
+      'type' => 'default',
+      'uid' => 1,
+      'name' => 'Demo store',
+      'mail' => 'admin@example.com',
+      'address' => [
+        'country_code' => 'US',
+      ],
+      'default_currency' => 'USD',
+    ];
+    $store = $store_storage->create($store_values);
+    $store->save();
+    $store_storage->markAsDefault($store);
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/StoreTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/StoreTest.php
deleted file mode 100644
index e120269..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d7/StoreTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
-
-use Drupal\commerce_store\Entity\Store;
-use Drupal\Tests\commerce_migrate\Kernel\CommerceMigrateTestTrait;
-
-/**
- * Tests store migration.
- *
- * @group commerce_migrate_ubercart7
- */
-class StoreTest extends Ubercart7TestBase {
-
-  use CommerceMigrateTestTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_store');
-    $this->executeMigrations([
-      'd7_filter_format',
-      'd7_user_role',
-      'd7_user',
-      'ubercart_currency',
-      'd7_ubercart_store',
-    ]);
-  }
-
-  /**
-   * Test store migration from Drupal 7 to 8.
-   */
-  public function testStore() {
-    $this->assertStoreEntity(1, "Quark's", 'quark@example.com', 'USD', 'online', '1');
-
-    $store = Store::load(1);
-    $address = $store->getAddress();
-    $this->assertAddressItem($address, 'CA', NULL, 'Deep Space 9', NULL, '9999', NULL, '47 The Promenade', 'Lower Level', NULL, NULL, NULL, NULL);
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/Ubercart7FixtureTest.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/Ubercart7FixtureTest.php
deleted file mode 100644
index 22d2a77..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d7/Ubercart7FixtureTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
-
-use Drupal\user\Entity\User;
-
-/**
- * Test that ensures fixture can be installed.
- *
- * @group commerce_migrate
- * @group commerce_migrate_ubercart7
- */
-class Ubercart7FixtureTest extends Ubercart7TestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->executeMigrations([
-      'd7_user_role',
-      'd7_user',
-    ]);
-  }
-
-  /**
-   * If the fixture installed, this will pass.
-   */
-  public function testItWorked() {
-    $user = User::load(2);
-    $this->assertEquals('tomparis', $user->getUsername());
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Migrate/d7/Ubercart7TestBase.php b/modules/ubercart/tests/src/Kernel/Migrate/d7/Ubercart7TestBase.php
deleted file mode 100644
index 4302aa3..0000000
--- a/modules/ubercart/tests/src/Kernel/Migrate/d7/Ubercart7TestBase.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Migrate\d7;
-
-use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;
-
-/**
- * Test base for Ubercart D7 tests.
- */
-abstract class Ubercart7TestBase extends MigrateDrupal7TestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'action',
-    'address',
-    'commerce',
-    'commerce_price',
-    'commerce_store',
-    'commerce_order',
-    'commerce_migrate',
-    'entity',
-    'entity_reference_revisions',
-    'inline_entity_form',
-    'profile',
-    'state_machine',
-    'text',
-    'views',
-    'commerce_migrate_ubercart',
-    'telephone',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_store');
-    $this->installConfig(static::$modules);
-  }
-
-  /**
-   * Gets the path to the fixture file.
-   */
-  protected function getFixtureFilePath() {
-    return __DIR__ . '/../../../../fixtures/uc7.php';
-  }
-
-  /**
-   * Creates a default store.
-   */
-  protected function createDefaultStore() {
-    $currency_importer = \Drupal::service('commerce_price.currency_importer');
-    /** @var \Drupal\commerce_store\StoreStorage $store_storage */
-    $store_storage = \Drupal::service('entity_type.manager')->getStorage('commerce_store');
-
-    $currency_importer->import('USD');
-    $store_values = [
-      'type' => 'default',
-      'uid' => 1,
-      'name' => 'Demo store',
-      'mail' => 'admin@example.com',
-      'address' => [
-        'country_code' => 'US',
-      ],
-      'default_currency' => 'USD',
-    ];
-    $store = $store_storage->create($store_values);
-    $store->save();
-    $store_storage->markAsDefault($store);
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/BillingProfileTest.php b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/BillingProfileTest.php
deleted file mode 100644
index 1b41413..0000000
--- a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/BillingProfileTest.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Plugin\migrate\source\d6;
-
-use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
-
-/**
- * Tests the d6 ubercart billing profile source plugin.
- *
- * @covers \Drupal\commerce_migrate_ubercart\Plugin\migrate\source\d6\BillingProfile
- * @group commerce_migrate_ubercart
- */
-class BillingProfileTest extends MigrateSqlSourceTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public static $modules = ['commerce_migrate_ubercart'];
-
-  /**
-   * {@inheritdoc}
-   */
-  public function providerSource() {
-    $tests = [];
-    $tests[0]['source_data']['uc_orders'] =
-      [
-        [
-          'order_id' => '1',
-          'uid' => '2',
-          'order_status' => 'payment_received',
-          'order_total' => '22.99000',
-          'product_count' => '2',
-          'primary_email' => 'f.bar@example.com',
-          'delivery_first_name' => '',
-          'delivery_last_name' => '',
-          'delivery_phone' => '',
-          'delivery_company' => '',
-          'delivery_street1' => '',
-          'delivery_street2' => '',
-          'delivery_city' => '',
-          'delivery_zone' => '',
-          'delivery_postal_code' => '',
-          'delivery_country' => '',
-          'billing_first_name' => 'Foo',
-          'billing_last_name' => 'Bar',
-          'billing_phone' => '123-4567',
-          'billing_company' => 'Acme',
-          'billing_street1' => '1 Coyote Way',
-          'billing_street2' => 'Utah',
-          'billing_city' => 'Salt Lake',
-          'billing_zone' => '58',
-          'billing_postal_code' => '11111',
-          'billing_country' => '840',
-          'payment_method' => 'cod',
-          'data' => 'a:0{}',
-          'created' => '1492868907',
-          'modified' => '1498620003',
-          'host' => '192.168.0.2',
-          'currency' => 'USD',
-        ],
-      ];
-    $tests[0]['source_data']['uc_countries'] =
-      [
-        [
-          'country_id' => '124',
-          'country_name' => 'Canada',
-          'country_iso_code_2' => 'CA',
-          'country_iso_code_3' => 'CAN',
-          'version' => 2,
-          'weight' => 0,
-        ],
-        [
-          'country_id' => '840',
-          'country_name' => 'United States',
-          'country_iso_code_2' => 'US',
-          'country_iso_code_3' => 'USA',
-          'version' => 1,
-          'weight' => 0,
-        ],
-      ];
-    $tests[0]['source_data']['uc_zones'] =
-      [
-        [
-          'zone_id' => '58',
-          'zone_country_country_id' => '840',
-          'zone_code' => 'UT',
-          'zone_name' => 'Utah',
-        ],
-      ];
-
-    // The expected results.
-    $tests[0]['expected_data'] = [
-      [
-        'order_id' => '1',
-        'uid' => '2',
-        'billing_first_name' => 'Foo',
-        'billing_last_name' => 'Bar',
-        'billing_phone' => '123-4567',
-        'billing_company' => 'Acme',
-        'billing_street1' => '1 Coyote Way',
-        'billing_street2' => 'Utah',
-        'billing_city' => 'Salt Lake',
-        'billing_zone' => 'US-UT',
-        'billing_postal_code' => '11111',
-        'billing_country' => 'US',
-        'created' => '1492868907',
-        'modified' => '1498620003',
-      ],
-    ];
-
-    return $tests;
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateBillingProfileTest.php b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateBillingProfileTest.php
new file mode 100644
index 0000000..f06e276
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateBillingProfileTest.php
@@ -0,0 +1,114 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Plugin\migrate\source\d6;
+
+use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
+
+/**
+ * Tests the d6 ubercart billing profile source plugin.
+ *
+ * @covers \Drupal\commerce_migrate_ubercart\Plugin\migrate\source\d6\BillingProfile
+ * @group commerce_migrate_ubercart
+ */
+class MigrateBillingProfileTest extends MigrateSqlSourceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['commerce_migrate_ubercart'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+    $tests = [];
+    $tests[0]['source_data']['uc_orders'] =
+      [
+        [
+          'order_id' => '1',
+          'uid' => '2',
+          'order_status' => 'payment_received',
+          'order_total' => '22.99000',
+          'product_count' => '2',
+          'primary_email' => 'f.bar@example.com',
+          'delivery_first_name' => '',
+          'delivery_last_name' => '',
+          'delivery_phone' => '',
+          'delivery_company' => '',
+          'delivery_street1' => '',
+          'delivery_street2' => '',
+          'delivery_city' => '',
+          'delivery_zone' => '',
+          'delivery_postal_code' => '',
+          'delivery_country' => '',
+          'billing_first_name' => 'Foo',
+          'billing_last_name' => 'Bar',
+          'billing_phone' => '123-4567',
+          'billing_company' => 'Acme',
+          'billing_street1' => '1 Coyote Way',
+          'billing_street2' => 'Utah',
+          'billing_city' => 'Salt Lake',
+          'billing_zone' => '58',
+          'billing_postal_code' => '11111',
+          'billing_country' => '840',
+          'payment_method' => 'cod',
+          'data' => 'a:0{}',
+          'created' => '1492868907',
+          'modified' => '1498620003',
+          'host' => '192.168.0.2',
+          'currency' => 'USD',
+        ],
+      ];
+    $tests[0]['source_data']['uc_countries'] =
+      [
+        [
+          'country_id' => '124',
+          'country_name' => 'Canada',
+          'country_iso_code_2' => 'CA',
+          'country_iso_code_3' => 'CAN',
+          'version' => 2,
+          'weight' => 0,
+        ],
+        [
+          'country_id' => '840',
+          'country_name' => 'United States',
+          'country_iso_code_2' => 'US',
+          'country_iso_code_3' => 'USA',
+          'version' => 1,
+          'weight' => 0,
+        ],
+      ];
+    $tests[0]['source_data']['uc_zones'] =
+      [
+        [
+          'zone_id' => '58',
+          'zone_country_country_id' => '840',
+          'zone_code' => 'UT',
+          'zone_name' => 'Utah',
+        ],
+      ];
+
+    // The expected results.
+    $tests[0]['expected_data'] = [
+      [
+        'order_id' => '1',
+        'uid' => '2',
+        'billing_first_name' => 'Foo',
+        'billing_last_name' => 'Bar',
+        'billing_phone' => '123-4567',
+        'billing_company' => 'Acme',
+        'billing_street1' => '1 Coyote Way',
+        'billing_street2' => 'Utah',
+        'billing_city' => 'Salt Lake',
+        'billing_zone' => 'US-UT',
+        'billing_postal_code' => '11111',
+        'billing_country' => 'US',
+        'created' => '1492868907',
+        'modified' => '1498620003',
+      ],
+    ];
+
+    return $tests;
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateOrderProductCurrencyTest.php b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateOrderProductCurrencyTest.php
new file mode 100644
index 0000000..83effb0
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateOrderProductCurrencyTest.php
@@ -0,0 +1,99 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Plugin\migrate\source\d6;
+
+use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
+
+/**
+ * Tests the d6 ubercart order product source plugin.
+ *
+ * @covers \Drupal\commerce_migrate_ubercart\Plugin\migrate\source\d6\OrderProduct
+ * @group commerce_migrate_ubercart
+ */
+class MigrateOrderProductCurrencyTest extends MigrateSqlSourceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['migrate_drupal', 'commerce_migrate_ubercart'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+    $tests = [];
+    $tests[0]['source_data']['uc_order_products'] =
+      [
+        [
+          'order_product_id' => '1',
+          'order_id' => '1',
+          'nid' => '1',
+          'title' => 'Product 1',
+          'manufacturer' => 'Someone',
+          'model' => 'Product 1 - 001',
+          'qty' => '2',
+          'cost' => '500.00000',
+          'price' => '600.00000',
+          'weight' => '2',
+          'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
+        ],
+      ];
+    $tests[0]['source_data']['uc_orders'] =
+      [
+        [
+          'order_id' => '1',
+          'uid' => '2',
+          'order_status' => 'payment_received',
+          'order_total' => '22.99000',
+          'product_count' => '2',
+          'primary_email' => 'f.bar@example.com',
+          'delivery_first_name' => '',
+          'delivery_last_name' => '',
+          'delivery_phone' => '',
+          'delivery_company' => '',
+          'delivery_street1' => '',
+          'delivery_street2' => '',
+          'delivery_city' => '',
+          'delivery_zone' => '',
+          'delivery_postal_code' => '',
+          'delivery_country' => '',
+          'billing_first_name' => 'Foo',
+          'billing_last_name' => 'Bar',
+          'billing_phone' => '123-4567',
+          'billing_company' => 'Acme',
+          'billing_street1' => '1 Coyote Way',
+          'billing_street2' => 'Utah',
+          'billing_city' => 'Salt Lake',
+          'billing_zone' => '58',
+          'billing_postal_code' => '11111',
+          'billing_country' => '840',
+          'payment_method' => 'cod',
+          'data' => 'a:0{}',
+          'created' => '1492868907',
+          'modified' => '1498620003',
+          'host' => '192.168.0.2',
+          'currency' => 'NZD',
+        ],
+      ];
+
+
+    // The expected results.
+    $tests[0]['expected_data'] = [
+      [
+        'order_id' => '1',
+        'order_product_id' => '1',
+        'nid' => '1',
+        'title' => 'Product 1',
+        'qty' => '2',
+        'price' => '600.00000',
+        'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
+        'created' => '1492868907',
+        'modified' => '1498620003',
+        'currency' => 'NZD',
+      ],
+    ];
+
+    return $tests;
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateOrderProductNoCurrencyTest.php b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateOrderProductNoCurrencyTest.php
new file mode 100644
index 0000000..313c257
--- /dev/null
+++ b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/MigrateOrderProductNoCurrencyTest.php
@@ -0,0 +1,98 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Plugin\migrate\source\d6;
+
+use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
+
+/**
+ * Tests the d6 ubercart order product source plugin.
+ *
+ * @covers \Drupal\commerce_migrate_ubercart\Plugin\migrate\source\d6\OrderProduct
+ * @group commerce_migrate_ubercart
+ */
+class MigrateOrderProductNoCurrencyTest extends MigrateSqlSourceTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['migrate_drupal', 'commerce_migrate_ubercart'];
+
+  /**
+   * {@inheritdoc}
+   */
+  public function providerSource() {
+    $tests = [];
+    $tests[0]['source_data']['uc_order_products'] =
+      [
+        [
+          'order_product_id' => '1',
+          'order_id' => '1',
+          'nid' => '1',
+          'title' => 'Product 1',
+          'manufacturer' => 'Someone',
+          'model' => 'Product 1 - 001',
+          'qty' => '2',
+          'cost' => '500.00000',
+          'price' => '600.00000',
+          'weight' => '2',
+          'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
+        ],
+      ];
+    $tests[0]['source_data']['uc_orders'] =
+      [
+        [
+          'order_id' => '1',
+          'uid' => '2',
+          'order_status' => 'payment_received',
+          'order_total' => '22.99000',
+          'product_count' => '2',
+          'primary_email' => 'f.bar@example.com',
+          'delivery_first_name' => '',
+          'delivery_last_name' => '',
+          'delivery_phone' => '',
+          'delivery_company' => '',
+          'delivery_street1' => '',
+          'delivery_street2' => '',
+          'delivery_city' => '',
+          'delivery_zone' => '',
+          'delivery_postal_code' => '',
+          'delivery_country' => '',
+          'billing_first_name' => 'Foo',
+          'billing_last_name' => 'Bar',
+          'billing_phone' => '123-4567',
+          'billing_company' => 'Acme',
+          'billing_street1' => '1 Coyote Way',
+          'billing_street2' => 'Utah',
+          'billing_city' => 'Salt Lake',
+          'billing_zone' => '58',
+          'billing_postal_code' => '11111',
+          'billing_country' => '840',
+          'payment_method' => 'cod',
+          'data' => 'a:0{}',
+          'created' => '1492868907',
+          'modified' => '1498620003',
+          'host' => '192.168.0.2',
+        ],
+      ];
+
+
+    // The expected results.
+    $tests[0]['expected_data'] = [
+      [
+        'order_id' => '1',
+        'order_product_id' => '1',
+        'nid' => '1',
+        'title' => 'Product 1',
+        'qty' => '2',
+        'price' => '600.00000',
+        'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
+        'created' => '1492868907',
+        'modified' => '1498620003',
+        'currency' => 'USD',
+      ],
+    ];
+
+    return $tests;
+  }
+
+}
diff --git a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/OrderProductCurrencyTest.php b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/OrderProductCurrencyTest.php
deleted file mode 100644
index c1b60c0..0000000
--- a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/OrderProductCurrencyTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Plugin\migrate\source\d6;
-
-use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
-
-/**
- * Tests the d6 ubercart order product source plugin.
- *
- * @covers \Drupal\commerce_migrate_ubercart\Plugin\migrate\source\d6\OrderProduct
- * @group commerce_migrate_ubercart
- */
-class OrderProductCurrencyTest extends MigrateSqlSourceTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public static $modules = ['migrate_drupal', 'commerce_migrate_ubercart'];
-
-  /**
-   * {@inheritdoc}
-   */
-  public function providerSource() {
-    $tests = [];
-    $tests[0]['source_data']['uc_order_products'] =
-      [
-        [
-          'order_product_id' => '1',
-          'order_id' => '1',
-          'nid' => '1',
-          'title' => 'Product 1',
-          'manufacturer' => 'Someone',
-          'model' => 'Product 1 - 001',
-          'qty' => '2',
-          'cost' => '500.00000',
-          'price' => '600.00000',
-          'weight' => '2',
-          'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
-        ],
-      ];
-    $tests[0]['source_data']['uc_orders'] =
-      [
-        [
-          'order_id' => '1',
-          'uid' => '2',
-          'order_status' => 'payment_received',
-          'order_total' => '22.99000',
-          'product_count' => '2',
-          'primary_email' => 'f.bar@example.com',
-          'delivery_first_name' => '',
-          'delivery_last_name' => '',
-          'delivery_phone' => '',
-          'delivery_company' => '',
-          'delivery_street1' => '',
-          'delivery_street2' => '',
-          'delivery_city' => '',
-          'delivery_zone' => '',
-          'delivery_postal_code' => '',
-          'delivery_country' => '',
-          'billing_first_name' => 'Foo',
-          'billing_last_name' => 'Bar',
-          'billing_phone' => '123-4567',
-          'billing_company' => 'Acme',
-          'billing_street1' => '1 Coyote Way',
-          'billing_street2' => 'Utah',
-          'billing_city' => 'Salt Lake',
-          'billing_zone' => '58',
-          'billing_postal_code' => '11111',
-          'billing_country' => '840',
-          'payment_method' => 'cod',
-          'data' => 'a:0{}',
-          'created' => '1492868907',
-          'modified' => '1498620003',
-          'host' => '192.168.0.2',
-          'currency' => 'NZD',
-        ],
-      ];
-
-
-    // The expected results.
-    $tests[0]['expected_data'] = [
-      [
-        'order_id' => '1',
-        'order_product_id' => '1',
-        'nid' => '1',
-        'title' => 'Product 1',
-        'qty' => '2',
-        'price' => '600.00000',
-        'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
-        'created' => '1492868907',
-        'modified' => '1498620003',
-        'currency' => 'NZD',
-      ],
-    ];
-
-    return $tests;
-  }
-
-}
diff --git a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/OrderProductNoCurrencyTest.php b/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/OrderProductNoCurrencyTest.php
deleted file mode 100644
index 3b37a9a..0000000
--- a/modules/ubercart/tests/src/Kernel/Plugin/migrate/source/d6/OrderProductNoCurrencyTest.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate_ubercart\Kernel\Plugin\migrate\source\d6;
-
-use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase;
-
-/**
- * Tests the d6 ubercart order product source plugin.
- *
- * @covers \Drupal\commerce_migrate_ubercart\Plugin\migrate\source\d6\OrderProduct
- * @group commerce_migrate_ubercart
- */
-class OrderProductNoCurrencyTest extends MigrateSqlSourceTestBase {
-
-  /**
-   * {@inheritdoc}
-   */
-  public static $modules = ['migrate_drupal', 'commerce_migrate_ubercart'];
-
-  /**
-   * {@inheritdoc}
-   */
-  public function providerSource() {
-    $tests = [];
-    $tests[0]['source_data']['uc_order_products'] =
-      [
-        [
-          'order_product_id' => '1',
-          'order_id' => '1',
-          'nid' => '1',
-          'title' => 'Product 1',
-          'manufacturer' => 'Someone',
-          'model' => 'Product 1 - 001',
-          'qty' => '2',
-          'cost' => '500.00000',
-          'price' => '600.00000',
-          'weight' => '2',
-          'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
-        ],
-      ];
-    $tests[0]['source_data']['uc_orders'] =
-      [
-        [
-          'order_id' => '1',
-          'uid' => '2',
-          'order_status' => 'payment_received',
-          'order_total' => '22.99000',
-          'product_count' => '2',
-          'primary_email' => 'f.bar@example.com',
-          'delivery_first_name' => '',
-          'delivery_last_name' => '',
-          'delivery_phone' => '',
-          'delivery_company' => '',
-          'delivery_street1' => '',
-          'delivery_street2' => '',
-          'delivery_city' => '',
-          'delivery_zone' => '',
-          'delivery_postal_code' => '',
-          'delivery_country' => '',
-          'billing_first_name' => 'Foo',
-          'billing_last_name' => 'Bar',
-          'billing_phone' => '123-4567',
-          'billing_company' => 'Acme',
-          'billing_street1' => '1 Coyote Way',
-          'billing_street2' => 'Utah',
-          'billing_city' => 'Salt Lake',
-          'billing_zone' => '58',
-          'billing_postal_code' => '11111',
-          'billing_country' => '840',
-          'payment_method' => 'cod',
-          'data' => 'a:0{}',
-          'created' => '1492868907',
-          'modified' => '1498620003',
-          'host' => '192.168.0.2',
-        ],
-      ];
-
-
-    // The expected results.
-    $tests[0]['expected_data'] = [
-      [
-        'order_id' => '1',
-        'order_product_id' => '1',
-        'nid' => '1',
-        'title' => 'Product 1',
-        'qty' => '2',
-        'price' => '600.00000',
-        'data' => 'a:2:{s:9:"shippable";s:1:"1";s:6:"module";s:10:"uc_product";}',
-        'created' => '1492868907',
-        'modified' => '1498620003',
-        'currency' => 'USD',
-      ],
-    ];
-
-    return $tests;
-  }
-
-}
diff --git a/modules/woocommerce/tests/src/Kernel/MigrateWoocommerceTestBase.php b/modules/woocommerce/tests/src/Kernel/MigrateWoocommerceTestBase.php
new file mode 100644
index 0000000..fb7b434
--- /dev/null
+++ b/modules/woocommerce/tests/src/Kernel/MigrateWoocommerceTestBase.php
@@ -0,0 +1,49 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate\Kernel\d6\Ubercart;
+
+use Drupal\Tests\migrate\Kernel\MigrateTestBase;
+
+/**
+ * Base class for Woocommerce migration tests.
+ */
+abstract class MigrateWoocommerceTestBase extends MigrateTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'action',
+    'address',
+    'commerce',
+    'commerce_price',
+    'commerce_store',
+    'commerce_order',
+    'commerce_migrate',
+    'entity',
+    'entity_reference_revisions',
+    'inline_entity_form',
+    'profile',
+    'state_machine',
+    'text',
+    'views',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_store');
+  }
+
+  /**
+   * Gets the path to the fixture file.
+   */
+  protected function getFixtureFilePath() {
+    return __DIR__ . '/../../../../fixtures/woocommerce.php';
+  }
+
+}
diff --git a/modules/woocommerce/tests/src/Kernel/WoocommerceTestBase.php b/modules/woocommerce/tests/src/Kernel/WoocommerceTestBase.php
deleted file mode 100644
index 5520b25..0000000
--- a/modules/woocommerce/tests/src/Kernel/WoocommerceTestBase.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate\Kernel\d6\Ubercart;
-
-use Drupal\Tests\migrate\Kernel\MigrateTestBase;
-
-/**
- * Base class for Woocommerce migration tests.
- */
-abstract class WoocommerceTestBase extends MigrateTestBase {
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'action',
-    'address',
-    'commerce',
-    'commerce_price',
-    'commerce_store',
-    'commerce_order',
-    'commerce_migrate',
-    'entity',
-    'entity_reference_revisions',
-    'inline_entity_form',
-    'profile',
-    'state_machine',
-    'text',
-    'views',
-  ];
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function setUp() {
-    parent::setUp();
-    $this->installEntitySchema('commerce_store');
-  }
-
-  /**
-   * Gets the path to the fixture file.
-   */
-  protected function getFixtureFilePath() {
-    return __DIR__ . '/../../../../fixtures/woocommerce.php';
-  }
-
-}
diff --git a/tests/src/Kernel/CommerceMigrateTestTrait.php b/tests/src/Kernel/CommerceMigrateTestTrait.php
deleted file mode 100644
index af01307..0000000
--- a/tests/src/Kernel/CommerceMigrateTestTrait.php
+++ /dev/null
@@ -1,443 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate\Kernel;
-
-use Drupal\address\AddressInterface;
-use Drupal\address\Plugin\Field\FieldType\AddressItem;
-use Drupal\commerce_order\Entity\Order;
-use Drupal\commerce_order\Entity\OrderItem;
-use Drupal\commerce_price\Entity\Currency;
-use Drupal\commerce_price\Entity\CurrencyInterface;
-use Drupal\commerce_product\Entity\Product;
-use Drupal\commerce_product\Entity\ProductType;
-use Drupal\commerce_product\Entity\ProductAttribute;
-use Drupal\commerce_product\Entity\ProductAttributeValue;
-use Drupal\commerce_product\Entity\ProductVariation;
-use Drupal\commerce_product\Entity\ProductVariationType;
-use Drupal\commerce_store\Entity\Store;
-use Drupal\commerce_tax\Entity\TaxType;
-use Drupal\profile\Entity\Profile;
-use Drupal\commerce_order\Entity\OrderItemType;
-
-/**
- * Helper function to test migrations.
- */
-trait CommerceMigrateTestTrait {
-
-  /**
-   * Asserts an address field.
-   *
-   * @param \Drupal\address\AddressInterface $address
-   *   The address id.
-   * @param string $country
-   *   The country code.
-   * @param string $administrative_area
-   *   The administrative area.
-   * @param string $locality
-   *   The locality.
-   * @param string $dependent_locality
-   *   The dependent locality.
-   * @param string $postal_code
-   *   The postal code.
-   * @param string $sorting_code
-   *   The sorting code.
-   * @param string $address_line_1
-   *   Address line 1.
-   * @param string $address_line_2
-   *   Address line 2.
-   * @param string $given_name
-   *   The given name.
-   * @param string $additional_name
-   *   Any additional names.
-   * @param string $family_name
-   *   The family name.
-   * @param string $organization
-   *   The organization string.
-   */
-  public function assertAddressItem(AddressInterface $address, $country, $administrative_area, $locality, $dependent_locality, $postal_code, $sorting_code, $address_line_1, $address_line_2, $given_name, $additional_name, $family_name, $organization) {
-    $this->assertInstanceOf(AddressItem::class, $address);
-    $this->assertSame($country, $address->getCountryCode());
-    $this->assertSame($administrative_area, $address->getAdministrativeArea());
-    $this->assertSame($locality, $address->getLocality());
-    $this->assertSame($dependent_locality, $address->getDependentLocality());
-    $this->assertSame($postal_code, $address->getPostalCode());
-    $this->assertSame($sorting_code, $address->getSortingCode());
-    $this->assertSame($address_line_1, $address->getAddressLine1());
-    $this->assertSame($address_line_2, $address->getAddressLine2());
-    $this->assertSame($given_name, $address->getGivenName());
-    $this->assertSame($additional_name, $address->getAdditionalName());
-    $this->assertSame($family_name, $address->getFamilyName());
-    $this->assertSame($organization, $address->getOrganization());
-  }
-
-  /**
-   * Asserts a billing profile entity.
-   *
-   * @param int $id
-   *   The profile id.
-   * @param int $owner_id
-   *   The uid for this billing profile.
-   * @param string $is_active
-   *   The active state of the profile.
-   * @param string $created_time
-   *   The time the profile was created..
-   * @param string $changed_time
-   *   The time the profile was last changed.
-   */
-  public function assertBillingProfile($id, $owner_id, $is_active, $created_time, $changed_time) {
-    $profile = Profile::load($id);
-    $this->assertNotNull($profile);
-    // Billing profiles are always 'customer' bundle.
-    $this->assertSame('customer', $profile->bundle());
-    $this->assertSame($owner_id, $profile->getOwnerId());
-    $this->assertSame($is_active, $profile->isActive());
-    $this->assertSame($created_time, ($profile->getCreatedTime()));
-    $this->assertSame($changed_time, $profile->getChangedTime());
-  }
-
-  /**
-   * Asserts a Currency entity.
-   *
-   * @param int $id
-   *   The currency id.
-   * @param string $currency_code
-   *   The currency code.
-   * @param string $name
-   *   The name of the currency.
-   * @param string $numeric_code
-   *   The numeric code for the currency.
-   * @param string $fraction_digits
-   *   The number of fraction digits for this currency.
-   * @param string $symbol
-   *   The currency symbol.
-   */
-  public function assertCurrencyEntity($id, $currency_code, $name, $numeric_code, $fraction_digits, $symbol) {
-    /** @var \Drupal\commerce_price\Entity\CurrencyInterface $currency */
-    $currency = Currency::load($id);
-    $this->assertInstanceOf(CurrencyInterface::class, $currency);
-    $this->assertSame($currency_code, $currency->getCurrencyCode());
-    $this->assertSame($name, $currency->getName());
-    $this->assertSame($fraction_digits, $currency->getFractionDigits());
-    $this->assertSame($numeric_code, $currency->getNumericCode());
-    $this->assertSame($symbol, $currency->getSymbol());
-  }
-
-  public function assertDefaultStore() {
-    $defaultStore = $this->container->get('commerce_store.default_store_resolver')->resolve();
-    $this->assertInstanceOf(Store::class, $defaultStore);
-  }
-
-  /**
-   * Asserts an order entity.
-   *
-   * @param string $id
-   *   The order id.
-   * @param string $order_number
-   *   The order number.
-   * @param string $store_id
-   *   The store id.
-   * @param string $created_time
-   *   The time the order was created.
-   * @param string $changed_time
-   *   The time the order was changed.
-   * @param string $email
-   *   The email address for this order.
-   * @param string $label
-   *   The label for this order.
-   * @param string $ip_address
-   *   The ip address used to create this order.
-   * @param string $customer_id
-   *   The customer id.
-   * @param string $placed_time
-   *   The time the order was placed.
-   */
-  public function assertOrder($id, $order_number, $store_id, $created_time, $changed_time, $email, $label, $ip_address, $customer_id, $placed_time) {
-    $order = Order::load($id);
-    $this->assertInstanceOf(Order::class, $order);
-    $this->assertSame($order_number, $order->getOrderNumber());
-    $this->assertSame($store_id, $order->getStoreId());
-    $this->assertSame($created_time, $order->getCreatedTime());
-    $this->assertSame($changed_time, $order->getChangedTime());
-    $this->assertSame($email, $order->getEmail());
-    $this->assertSame($label, $order->getState()->getLabel());
-    $this->assertNotNull($order->getBillingProfile());
-    $this->assertSame($customer_id, $order->getCustomerId());
-    $this->assertSame($ip_address, $order->getIpAddress());
-    $this->assertSame($placed_time, $order->getPlacedTime());
-  }
-
-  /**
-   * Asserts an order item.
-   *
-   * @param int $id
-   *   The order item id.
-   * @param int $order_id
-   *   The order id for this item.
-   * @param int $purchased_entity_id
-   *   The id of the purchased entity.
-   * @param string $quantity
-   *   The order quantity.
-   * @param string $title
-   *   The title of the item.
-   * @param string $unit_price
-   *   The unit price of the item.
-   * @param string $unit_price_currency
-   *   The unit price currency code.
-   * @param string $total_price
-   *   The total price of this item.
-   * @param string $total_price_currency
-   *   The total price currency code.
-   */
-  public function assertOrderItem($id, $order_id, $purchased_entity_id, $quantity, $title, $unit_price, $unit_price_currency, $total_price, $total_price_currency) {
-    $order_item = OrderItem::load($id);
-    $this->assertInstanceOf(OrderItem::class, $order_item);
-    $this->assertSame($quantity, $order_item->getQuantity());
-    $this->assertEquals($title, $order_item->getTitle());
-    $this->assertEquals($unit_price, $order_item->getUnitPrice()->getNumber());
-    $this->assertEquals($unit_price_currency, $order_item->getUnitPrice()->getCurrencyCode());
-    $this->assertEquals($total_price, $order_item->getTotalPrice()->getNumber());
-    $this->assertEquals($total_price_currency, $order_item->getTotalPrice()->getCurrencyCode());
-    $this->assertEquals($purchased_entity_id, $order_item->getPurchasedEntityId());
-    $this->assertEquals($order_id, $order_item->getOrderId());
-  }
-
-  /**
-   * Asserts an order item type configuration entity.
-   *
-   * @param string $id
-   *   The order item type id.
-   * @param string $expected_label
-   *   The expected label.
-   */
-  public function assertOrderItemType($id, $expected_label) {
-    $order_item_type = OrderItemType::load($id);
-    $this->assertInstanceOf(OrderItemType::class, $order_item_type);
-    $this->assertSame($expected_label, $order_item_type->label());
-  }
-  
-  /**
-   * Asserts a product attribute entity.
-   *
-   * @param string $id
-   *   The attribute id.
-   * @param string $label
-   *   The expected attribute label.
-   * @param string $element_type
-   *   The expected element type of the attribute.
-   */
-  protected function assertProductAttributeEntity($id, $label, $element_type) {
-    list ($entity_type, $name) = explode('.', $id);
-    $attribute = ProductAttribute::load($name);
-    $this->assertTrue($attribute instanceof ProductAttribute);
-    $this->assertSame($label, $attribute->label());
-    $this->assertSame($element_type, $attribute->getElementType());
-  }
-
-  /**
-   * Asserts a product attribute value entity.
-   *
-   * @param string $id
-   *   The attribute value id.
-   * @param string $attribute_id
-   *   The expected product attribute value id.
-   * @param string $name
-   *   The expected name of the product attribute value.
-   * @param string $label
-   *   The expected label of the product attribute value.
-   * @param string $weight
-   *   The expected weight of the product attribute value.
-   */
-  protected function assertProductAttributeValueEntity($id, $attribute_id, $name, $label, $weight) {
-    $attribute_value = ProductAttributeValue::load($id);
-    $this->assertTrue($attribute_value instanceof ProductAttributeValue);
-    $this->assertSame($attribute_id, $attribute_value->getAttributeId());
-    $this->assertSame($name, $attribute_value->getName());
-    $this->assertSame($label, $attribute_value->label());
-    $this->assertSame($weight, $attribute_value->getWeight());
-  }
-
-  /**
-   * Asserts a product.
-   *
-   * @param int $id
-   *   The product id.
-   * @param int $owner_id
-   *   The uid for this billing profile.
-   * @param string $title
-   *   The title of the product.
-   * @param string $is_published
-   *   The published status of the product.
-   * @param array $store_ids
-   *   The ids of the stores for this product.
-   * @param array $variations
-   *   The variation of this product.
-   */
-  public function assertProductEntity($id, $owner_id, $title, $is_published, array $store_ids, array $variations) {
-    $product = Product::load($id);
-    $this->assertInstanceOf(Product::class, $product);
-    $this->assertSame($owner_id, $product->getOwnerId());
-    $this->assertSame($title, $product->getTitle());
-    $this->assertSame($is_published, $product->isPublished());
-    $this->assertSame($store_ids, $product->getStoreIds());
-    $this->assertSame($variations, $product->getVariationIds());
-  }
-
-  /**
-   * Asserts a product type entity.
-   *
-   * @param string $id
-   *   The product type id.
-   * @param string $label
-   *   The expected label.
-   * @param string $description
-   *   The expected description.
-   * @param string $variation_type_id
-   *   The expected product variation type id.
-   */
-  public function assertProductTypeEntity($id, $label, $description, $variation_type_id) {
-    $product_type = ProductType::load($id);
-    $this->assertInstanceOf(ProductType::class, $product_type);
-    $this->assertSame($label, $product_type->label());
-    $this->assertSame($description, $product_type->getDescription());
-    $this->assertSame($variation_type_id, $product_type->getVariationTypeId());
-  }
-
-  /**
-   * Asserts a product variation.
-   *
-   * @param int $id
-   *   The product variation id.
-   * @param int $owner_id
-   *   The uid for this billing profile.
-   * @param string $sku
-   *   The SKU.
-   * @param string $price_number
-   *   The price.
-   * @param string $price_currency
-   *   The currency code.
-   * @param string $product_id
-   *   The id of the product.
-   * @param string $variation_title
-   *   The title.
-   * @param string $variation_bundle
-   *   The order item type.
-   */
-  public function assertProductVariationEntity($id, $owner_id, $sku, $price_number, $price_currency, $product_id, $variation_title, $variation_bundle) {
-    $variation = ProductVariation::load($id);
-    $this->assertInstanceOf(ProductVariation::class, $variation);
-    $this->assertSame($owner_id, $variation->getOwnerId());
-    $this->assertSame($sku, $variation->getSku());
-    $this->assertSame($price_number, $variation->getPrice()->getNumber());
-    $this->assertSame($price_currency, $variation->getPrice()->getCurrencyCode());
-    $this->assertSame($product_id, $variation->getProductId());
-    $this->assertSame($variation_title, $variation->getOrderItemTitle());
-    $this->assertSame($variation_bundle, $variation->getOrderItemTypeId());
-  }
-
-  /**
-   * Asserts a product variation type.
-   *
-   * @param string $id
-   *   The product variation type.
-   * @param string $label
-   *   The expected label.
-   * @param string $variation_id
-   *   The expected order item type id.
-   * @param bool $is_title_generated
-   *   The expected indicator that a title is generated.
-   */
-  public function assertProductVariationTypeEntity($id, $label, $variation_id, $is_title_generated) {
-    $variation_type = ProductVariationType::load($id);
-    $this->assertInstanceOf(ProductVariationType::class, $variation_type);
-    $this->assertSame($label, $variation_type->label());
-    $this->assertSame($variation_id, $variation_type->getOrderItemTypeId());
-    $this->assertSame($is_title_generated, $variation_type->shouldGenerateTitle());
-  }
-
-  /**
-   * Asserts a store entity.
-   *
-   * @param int $id
-   *   The store id.
-   * @param string $name
-   *   The name of the store.
-   * @param string $email
-   *   The email address of the store.
-   * @param string $default_currency_code
-   *   The default currency code of the store.
-   * @param string $bundle
-   *   The bundle.
-   * @param string $owner_id
-   *   The owner id.
-   */
-  public function assertStoreEntity($id, $name, $email, $default_currency_code, $bundle, $owner_id) {
-    $store = Store::load($id);
-    $this->assertNotNull($store);
-    $this->assertInstanceOf(Store::class, $store);
-    $this->assertSame($name, $store->getName());
-    $this->assertSame($email, $store->getEmail());
-    $this->assertSame($default_currency_code, $store->getDefaultCurrencyCode());
-    $this->assertSame($bundle, $store->bundle());
-    $this->assertSame($owner_id, $store->getOwnerId());
-  }
-
-  /**
-   * Asserts a tax type.
-   *
-   * @param int $id
-   *   The TaxType id.
-   * @param string $label
-   *   The label for the TaxType.
-   * @param string $plugin
-   *   The TaxType plugin.
-   * @param string $rate
-   *   The TaxType rate.
-   */
-  public function assertTaxType($id, $label, $plugin, $rate) {
-    $tax_type = TaxType::load($id);
-    $this->assertNotNull($tax_type);
-    $this->assertInstanceOf(TaxType::class, $tax_type);
-    $this->assertSame($label, $tax_type->label());
-    $this->assertSame($plugin, $tax_type->getPluginId());
-
-    $tax_type_config = $tax_type->getPluginConfiguration();
-    $this->assertSame($id, $tax_type_config['rates'][0]['id']);
-    $this->assertSame($label, $tax_type_config['rates'][0]['label']);
-    $this->assertSame($rate, $tax_type_config['rates'][0]['percentage']);
-  }
-
-  /**
-   * @param array $product
-   *   Array of product and product variation data.
-   */
-  public function productTest(array $product) {
-    $variation_ids = [];
-    foreach ($product['variations'] as $variation) {
-      $variation_ids[] = $variation['variation_id'];
-    }
-    $this->assertProductEntity($product['product_id'], $product['uid'], $product['title'], $product['published'], $product['store_ids'], $variation_ids);
-    $this->productVariationTest($product);
-  }
-
-  /**
-   * Helper to test a product is linked to its variations.
-   *
-   * @param array $product
-   *   Product and product variation data.
-   */
-  public function productVariationTest(array $product) {
-    // Test variations.
-    $productInstance = Product::load($product['product_id']);
-    foreach ($product['variations'] as $variation) {
-      $found = FALSE;
-      foreach ($productInstance->variations as $variationInstance) {
-        if ($variation['variation_id'] == $variationInstance->target_id) {
-          $found = TRUE;
-        }
-      }
-      $this->assertTrue($found, "No variation exists for variation_id: {$variation['variation_id']}");
-      $this->assertProductVariationEntity($variation['variation_id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $product['product_id'], $variation['title'], $variation['order_item_type']);
-    }
-  }
-
-}
diff --git a/tests/src/Kernel/CommerceMigrationLabelExistTest.php b/tests/src/Kernel/CommerceMigrationLabelExistTest.php
deleted file mode 100644
index 35e2ed5..0000000
--- a/tests/src/Kernel/CommerceMigrationLabelExistTest.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate\Kernel;
-
-use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
-use Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase;
-
-/**
- * Tests that labels exist for all migrations.
- *
- * @group commerce_migrate_commerce
- */
-class CommerceMigrationLabelExistTest extends MigrateDrupalTestBase {
-
-  use FileSystemModuleDiscoveryDataProviderTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'commerce_store',
-    'commerce_migrate',
-    'commerce_migrate_commerce',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * Migration plugin tags to create instances for.
-   *
-   * @var array
-   */
-  protected $tags = [
-    'Ubercart',
-    'Commerce 1',
-  ];
-
-  /**
-   * Tests that labels exist for all migrations.
-   */
-  public function testLabelExist() {
-    // Install all available modules.
-    $module_handler = $this->container->get('module_handler');
-    $modules = $this->coreModuleListDataProvider();
-    $modules_enabled = $module_handler->getModuleList();
-    $modules_to_enable = array_keys(array_diff_key($modules, $modules_enabled));
-    $this->enableModules($modules_to_enable);
-
-    /** @var \Drupal\migrate\Plugin\MigrationPluginManager $plugin_manager */
-    $plugin_manager = $this->container->get('plugin.manager.migration');
-    // Get all the commerce_migrate migrations.
-    $migrations = [];
-    foreach ($this->tags as $tag) {
-      $migrations = array_merge($migrations, $plugin_manager->createInstancesByTag($tag));
-    }
-
-    /** @var \Drupal\migrate\Plugin\Migration $migration */
-    foreach ($migrations as $migration) {
-      $migration_id = $migration->getPluginId();
-      $this->assertNotEmpty($migration->label(), 'Label not found for ' . $migration_id);
-    }
-  }
-
-}
diff --git a/tests/src/Kernel/CommerceMigrationProvidersExistTest.php b/tests/src/Kernel/CommerceMigrationProvidersExistTest.php
deleted file mode 100644
index e1b7d6a..0000000
--- a/tests/src/Kernel/CommerceMigrationProvidersExistTest.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-namespace Drupal\Tests\commerce_migrate\Kernel;
-
-use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
-use Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase;
-
-/**
- * Tests that modules exist for all source and destination plugins.
- *
- * @group commerce_migrate_commerce
- */
-class CommerceMigrationProvidersExistTest extends MigrateDrupalTestBase {
-
-  use FileSystemModuleDiscoveryDataProviderTrait;
-
-  /**
-   * Modules to enable.
-   *
-   * @var array
-   */
-  public static $modules = [
-    'commerce_store',
-    'commerce_migrate',
-    'commerce_migrate_commerce',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * Migration plugin tags to create instances for.
-   *
-   * @var array
-   */
-  protected $tags = [
-    'Ubercart',
-    'Commerce 1',
-  ];
-
-  /**
-   * Invalid migration destinations.
-   *
-   * @var array
-   */
-  protected $invalidDestinations = [
-    'migrate',
-    'migrate_drupal',
-    'migrate_drupal_ui',
-    'commerce_migrate',
-    'commerce_migrate_commerce',
-    'commerce_migrate_ubercart',
-  ];
-
-  /**
-   * Tests that modules exist for all source and destination plugins.
-   */
-  public function testProvidersExist() {
-    // Enable all modules.
-    self::$modules = array_keys($this->coreModuleListDataProvider());
-    /** @var \Drupal\migrate\Plugin\MigrationPluginManager $plugin_manager */
-    $plugin_manager = $this->container->get('plugin.manager.migration');
-    // Get all the commerce_migrate migrations.
-    $migrations = [];
-    foreach ($this->tags as $tag) {
-      $migrations = array_merge($migrations, $plugin_manager->createInstancesByTag($tag));
-    }
-
-    /** @var \Drupal\migrate\Plugin\Migration $migration */
-    foreach ($migrations as $migration) {
-      $source_module = $migration->getSourcePlugin()->getSourceModule();
-      $destination_module = $migration->getDestinationPlugin()->getDestinationModule();
-      $migration_id = $migration->getPluginId();
-      $this->assertTrue($source_module, sprintf('Source module not found for %s.', $migration_id));
-      $this->assertTrue($destination_module, sprintf('Destination module not found for %s.', $migration_id));
-      // Destination module can't be a migrate module.
-      $this->assertNotContains($destination_module, $this->invalidDestinations, sprintf('Invalid destination for %s.', $migration_id));
-    }
-  }
-
-}
diff --git a/tests/src/Kernel/MigrateCommerceMigrateTestTrait.php b/tests/src/Kernel/MigrateCommerceMigrateTestTrait.php
new file mode 100644
index 0000000..6bc346f
--- /dev/null
+++ b/tests/src/Kernel/MigrateCommerceMigrateTestTrait.php
@@ -0,0 +1,443 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate\Kernel;
+
+use Drupal\address\AddressInterface;
+use Drupal\address\Plugin\Field\FieldType\AddressItem;
+use Drupal\commerce_order\Entity\Order;
+use Drupal\commerce_order\Entity\OrderItem;
+use Drupal\commerce_price\Entity\Currency;
+use Drupal\commerce_price\Entity\CurrencyInterface;
+use Drupal\commerce_product\Entity\Product;
+use Drupal\commerce_product\Entity\ProductType;
+use Drupal\commerce_product\Entity\ProductAttribute;
+use Drupal\commerce_product\Entity\ProductAttributeValue;
+use Drupal\commerce_product\Entity\ProductVariation;
+use Drupal\commerce_product\Entity\ProductVariationType;
+use Drupal\commerce_store\Entity\Store;
+use Drupal\commerce_tax\Entity\TaxType;
+use Drupal\profile\Entity\Profile;
+use Drupal\commerce_order\Entity\OrderItemType;
+
+/**
+ * Helper function to test migrations.
+ */
+trait MigrateCommerceMigrateTestTrait {
+
+  /**
+   * Asserts an address field.
+   *
+   * @param \Drupal\address\AddressInterface $address
+   *   The address id.
+   * @param string $country
+   *   The country code.
+   * @param string $administrative_area
+   *   The administrative area.
+   * @param string $locality
+   *   The locality.
+   * @param string $dependent_locality
+   *   The dependent locality.
+   * @param string $postal_code
+   *   The postal code.
+   * @param string $sorting_code
+   *   The sorting code.
+   * @param string $address_line_1
+   *   Address line 1.
+   * @param string $address_line_2
+   *   Address line 2.
+   * @param string $given_name
+   *   The given name.
+   * @param string $additional_name
+   *   Any additional names.
+   * @param string $family_name
+   *   The family name.
+   * @param string $organization
+   *   The organization string.
+   */
+  public function assertAddressItem(AddressInterface $address, $country, $administrative_area, $locality, $dependent_locality, $postal_code, $sorting_code, $address_line_1, $address_line_2, $given_name, $additional_name, $family_name, $organization) {
+    $this->assertInstanceOf(AddressItem::class, $address);
+    $this->assertSame($country, $address->getCountryCode());
+    $this->assertSame($administrative_area, $address->getAdministrativeArea());
+    $this->assertSame($locality, $address->getLocality());
+    $this->assertSame($dependent_locality, $address->getDependentLocality());
+    $this->assertSame($postal_code, $address->getPostalCode());
+    $this->assertSame($sorting_code, $address->getSortingCode());
+    $this->assertSame($address_line_1, $address->getAddressLine1());
+    $this->assertSame($address_line_2, $address->getAddressLine2());
+    $this->assertSame($given_name, $address->getGivenName());
+    $this->assertSame($additional_name, $address->getAdditionalName());
+    $this->assertSame($family_name, $address->getFamilyName());
+    $this->assertSame($organization, $address->getOrganization());
+  }
+
+  /**
+   * Asserts a billing profile entity.
+   *
+   * @param int $id
+   *   The profile id.
+   * @param int $owner_id
+   *   The uid for this billing profile.
+   * @param string $is_active
+   *   The active state of the profile.
+   * @param string $created_time
+   *   The time the profile was created..
+   * @param string $changed_time
+   *   The time the profile was last changed.
+   */
+  public function assertBillingProfile($id, $owner_id, $is_active, $created_time, $changed_time) {
+    $profile = Profile::load($id);
+    $this->assertNotNull($profile);
+    // Billing profiles are always 'customer' bundle.
+    $this->assertSame('customer', $profile->bundle());
+    $this->assertSame($owner_id, $profile->getOwnerId());
+    $this->assertSame($is_active, $profile->isActive());
+    $this->assertSame($created_time, ($profile->getCreatedTime()));
+    $this->assertSame($changed_time, $profile->getChangedTime());
+  }
+
+  /**
+   * Asserts a Currency entity.
+   *
+   * @param int $id
+   *   The currency id.
+   * @param string $currency_code
+   *   The currency code.
+   * @param string $name
+   *   The name of the currency.
+   * @param string $numeric_code
+   *   The numeric code for the currency.
+   * @param string $fraction_digits
+   *   The number of fraction digits for this currency.
+   * @param string $symbol
+   *   The currency symbol.
+   */
+  public function assertCurrencyEntity($id, $currency_code, $name, $numeric_code, $fraction_digits, $symbol) {
+    /** @var \Drupal\commerce_price\Entity\CurrencyInterface $currency */
+    $currency = Currency::load($id);
+    $this->assertInstanceOf(CurrencyInterface::class, $currency);
+    $this->assertSame($currency_code, $currency->getCurrencyCode());
+    $this->assertSame($name, $currency->getName());
+    $this->assertSame($fraction_digits, $currency->getFractionDigits());
+    $this->assertSame($numeric_code, $currency->getNumericCode());
+    $this->assertSame($symbol, $currency->getSymbol());
+  }
+
+  public function assertDefaultStore() {
+    $defaultStore = $this->container->get('commerce_store.default_store_resolver')->resolve();
+    $this->assertInstanceOf(Store::class, $defaultStore);
+  }
+
+  /**
+   * Asserts an order entity.
+   *
+   * @param string $id
+   *   The order id.
+   * @param string $order_number
+   *   The order number.
+   * @param string $store_id
+   *   The store id.
+   * @param string $created_time
+   *   The time the order was created.
+   * @param string $changed_time
+   *   The time the order was changed.
+   * @param string $email
+   *   The email address for this order.
+   * @param string $label
+   *   The label for this order.
+   * @param string $ip_address
+   *   The ip address used to create this order.
+   * @param string $customer_id
+   *   The customer id.
+   * @param string $placed_time
+   *   The time the order was placed.
+   */
+  public function assertOrder($id, $order_number, $store_id, $created_time, $changed_time, $email, $label, $ip_address, $customer_id, $placed_time) {
+    $order = Order::load($id);
+    $this->assertInstanceOf(Order::class, $order);
+    $this->assertSame($order_number, $order->getOrderNumber());
+    $this->assertSame($store_id, $order->getStoreId());
+    $this->assertSame($created_time, $order->getCreatedTime());
+    $this->assertSame($changed_time, $order->getChangedTime());
+    $this->assertSame($email, $order->getEmail());
+    $this->assertSame($label, $order->getState()->getLabel());
+    $this->assertNotNull($order->getBillingProfile());
+    $this->assertSame($customer_id, $order->getCustomerId());
+    $this->assertSame($ip_address, $order->getIpAddress());
+    $this->assertSame($placed_time, $order->getPlacedTime());
+  }
+
+  /**
+   * Asserts an order item.
+   *
+   * @param int $id
+   *   The order item id.
+   * @param int $order_id
+   *   The order id for this item.
+   * @param int $purchased_entity_id
+   *   The id of the purchased entity.
+   * @param string $quantity
+   *   The order quantity.
+   * @param string $title
+   *   The title of the item.
+   * @param string $unit_price
+   *   The unit price of the item.
+   * @param string $unit_price_currency
+   *   The unit price currency code.
+   * @param string $total_price
+   *   The total price of this item.
+   * @param string $total_price_currency
+   *   The total price currency code.
+   */
+  public function assertOrderItem($id, $order_id, $purchased_entity_id, $quantity, $title, $unit_price, $unit_price_currency, $total_price, $total_price_currency) {
+    $order_item = OrderItem::load($id);
+    $this->assertInstanceOf(OrderItem::class, $order_item);
+    $this->assertSame($quantity, $order_item->getQuantity());
+    $this->assertEquals($title, $order_item->getTitle());
+    $this->assertEquals($unit_price, $order_item->getUnitPrice()->getNumber());
+    $this->assertEquals($unit_price_currency, $order_item->getUnitPrice()->getCurrencyCode());
+    $this->assertEquals($total_price, $order_item->getTotalPrice()->getNumber());
+    $this->assertEquals($total_price_currency, $order_item->getTotalPrice()->getCurrencyCode());
+    $this->assertEquals($purchased_entity_id, $order_item->getPurchasedEntityId());
+    $this->assertEquals($order_id, $order_item->getOrderId());
+  }
+
+  /**
+   * Asserts an order item type configuration entity.
+   *
+   * @param string $id
+   *   The order item type id.
+   * @param string $expected_label
+   *   The expected label.
+   */
+  public function assertOrderItemType($id, $expected_label) {
+    $order_item_type = OrderItemType::load($id);
+    $this->assertInstanceOf(OrderItemType::class, $order_item_type);
+    $this->assertSame($expected_label, $order_item_type->label());
+  }
+  
+  /**
+   * Asserts a product attribute entity.
+   *
+   * @param string $id
+   *   The attribute id.
+   * @param string $label
+   *   The expected attribute label.
+   * @param string $element_type
+   *   The expected element type of the attribute.
+   */
+  protected function assertProductAttributeEntity($id, $label, $element_type) {
+    list ($entity_type, $name) = explode('.', $id);
+    $attribute = ProductAttribute::load($name);
+    $this->assertTrue($attribute instanceof ProductAttribute);
+    $this->assertSame($label, $attribute->label());
+    $this->assertSame($element_type, $attribute->getElementType());
+  }
+
+  /**
+   * Asserts a product attribute value entity.
+   *
+   * @param string $id
+   *   The attribute value id.
+   * @param string $attribute_id
+   *   The expected product attribute value id.
+   * @param string $name
+   *   The expected name of the product attribute value.
+   * @param string $label
+   *   The expected label of the product attribute value.
+   * @param string $weight
+   *   The expected weight of the product attribute value.
+   */
+  protected function assertProductAttributeValueEntity($id, $attribute_id, $name, $label, $weight) {
+    $attribute_value = ProductAttributeValue::load($id);
+    $this->assertTrue($attribute_value instanceof ProductAttributeValue);
+    $this->assertSame($attribute_id, $attribute_value->getAttributeId());
+    $this->assertSame($name, $attribute_value->getName());
+    $this->assertSame($label, $attribute_value->label());
+    $this->assertSame($weight, $attribute_value->getWeight());
+  }
+
+  /**
+   * Asserts a product.
+   *
+   * @param int $id
+   *   The product id.
+   * @param int $owner_id
+   *   The uid for this billing profile.
+   * @param string $title
+   *   The title of the product.
+   * @param string $is_published
+   *   The published status of the product.
+   * @param array $store_ids
+   *   The ids of the stores for this product.
+   * @param array $variations
+   *   The variation of this product.
+   */
+  public function assertProductEntity($id, $owner_id, $title, $is_published, array $store_ids, array $variations) {
+    $product = Product::load($id);
+    $this->assertInstanceOf(Product::class, $product);
+    $this->assertSame($owner_id, $product->getOwnerId());
+    $this->assertSame($title, $product->getTitle());
+    $this->assertSame($is_published, $product->isPublished());
+    $this->assertSame($store_ids, $product->getStoreIds());
+    $this->assertSame($variations, $product->getVariationIds());
+  }
+
+  /**
+   * Asserts a product type entity.
+   *
+   * @param string $id
+   *   The product type id.
+   * @param string $label
+   *   The expected label.
+   * @param string $description
+   *   The expected description.
+   * @param string $variation_type_id
+   *   The expected product variation type id.
+   */
+  public function assertProductTypeEntity($id, $label, $description, $variation_type_id) {
+    $product_type = ProductType::load($id);
+    $this->assertInstanceOf(ProductType::class, $product_type);
+    $this->assertSame($label, $product_type->label());
+    $this->assertSame($description, $product_type->getDescription());
+    $this->assertSame($variation_type_id, $product_type->getVariationTypeId());
+  }
+
+  /**
+   * Asserts a product variation.
+   *
+   * @param int $id
+   *   The product variation id.
+   * @param int $owner_id
+   *   The uid for this billing profile.
+   * @param string $sku
+   *   The SKU.
+   * @param string $price_number
+   *   The price.
+   * @param string $price_currency
+   *   The currency code.
+   * @param string $product_id
+   *   The id of the product.
+   * @param string $variation_title
+   *   The title.
+   * @param string $variation_bundle
+   *   The order item type.
+   */
+  public function assertProductVariationEntity($id, $owner_id, $sku, $price_number, $price_currency, $product_id, $variation_title, $variation_bundle) {
+    $variation = ProductVariation::load($id);
+    $this->assertInstanceOf(ProductVariation::class, $variation);
+    $this->assertSame($owner_id, $variation->getOwnerId());
+    $this->assertSame($sku, $variation->getSku());
+    $this->assertSame($price_number, $variation->getPrice()->getNumber());
+    $this->assertSame($price_currency, $variation->getPrice()->getCurrencyCode());
+    $this->assertSame($product_id, $variation->getProductId());
+    $this->assertSame($variation_title, $variation->getOrderItemTitle());
+    $this->assertSame($variation_bundle, $variation->getOrderItemTypeId());
+  }
+
+  /**
+   * Asserts a product variation type.
+   *
+   * @param string $id
+   *   The product variation type.
+   * @param string $label
+   *   The expected label.
+   * @param string $variation_id
+   *   The expected order item type id.
+   * @param bool $is_title_generated
+   *   The expected indicator that a title is generated.
+   */
+  public function assertProductVariationTypeEntity($id, $label, $variation_id, $is_title_generated) {
+    $variation_type = ProductVariationType::load($id);
+    $this->assertInstanceOf(ProductVariationType::class, $variation_type);
+    $this->assertSame($label, $variation_type->label());
+    $this->assertSame($variation_id, $variation_type->getOrderItemTypeId());
+    $this->assertSame($is_title_generated, $variation_type->shouldGenerateTitle());
+  }
+
+  /**
+   * Asserts a store entity.
+   *
+   * @param int $id
+   *   The store id.
+   * @param string $name
+   *   The name of the store.
+   * @param string $email
+   *   The email address of the store.
+   * @param string $default_currency_code
+   *   The default currency code of the store.
+   * @param string $bundle
+   *   The bundle.
+   * @param string $owner_id
+   *   The owner id.
+   */
+  public function assertStoreEntity($id, $name, $email, $default_currency_code, $bundle, $owner_id) {
+    $store = Store::load($id);
+    $this->assertNotNull($store);
+    $this->assertInstanceOf(Store::class, $store);
+    $this->assertSame($name, $store->getName());
+    $this->assertSame($email, $store->getEmail());
+    $this->assertSame($default_currency_code, $store->getDefaultCurrencyCode());
+    $this->assertSame($bundle, $store->bundle());
+    $this->assertSame($owner_id, $store->getOwnerId());
+  }
+
+  /**
+   * Asserts a tax type.
+   *
+   * @param int $id
+   *   The TaxType id.
+   * @param string $label
+   *   The label for the TaxType.
+   * @param string $plugin
+   *   The TaxType plugin.
+   * @param string $rate
+   *   The TaxType rate.
+   */
+  public function assertTaxType($id, $label, $plugin, $rate) {
+    $tax_type = TaxType::load($id);
+    $this->assertNotNull($tax_type);
+    $this->assertInstanceOf(TaxType::class, $tax_type);
+    $this->assertSame($label, $tax_type->label());
+    $this->assertSame($plugin, $tax_type->getPluginId());
+
+    $tax_type_config = $tax_type->getPluginConfiguration();
+    $this->assertSame($id, $tax_type_config['rates'][0]['id']);
+    $this->assertSame($label, $tax_type_config['rates'][0]['label']);
+    $this->assertSame($rate, $tax_type_config['rates'][0]['percentage']);
+  }
+
+  /**
+   * @param array $product
+   *   Array of product and product variation data.
+   */
+  public function productTest(array $product) {
+    $variation_ids = [];
+    foreach ($product['variations'] as $variation) {
+      $variation_ids[] = $variation['variation_id'];
+    }
+    $this->assertProductEntity($product['product_id'], $product['uid'], $product['title'], $product['published'], $product['store_ids'], $variation_ids);
+    $this->productVariationTest($product);
+  }
+
+  /**
+   * Helper to test a product is linked to its variations.
+   *
+   * @param array $product
+   *   Product and product variation data.
+   */
+  public function productVariationTest(array $product) {
+    // Test variations.
+    $productInstance = Product::load($product['product_id']);
+    foreach ($product['variations'] as $variation) {
+      $found = FALSE;
+      foreach ($productInstance->variations as $variationInstance) {
+        if ($variation['variation_id'] == $variationInstance->target_id) {
+          $found = TRUE;
+        }
+      }
+      $this->assertTrue($found, "No variation exists for variation_id: {$variation['variation_id']}");
+      $this->assertProductVariationEntity($variation['variation_id'], $variation['uid'], $variation['sku'], $variation['price'], $variation['currency'], $product['product_id'], $variation['title'], $variation['order_item_type']);
+    }
+  }
+
+}
diff --git a/tests/src/Kernel/MigrateCommerceMigrationLabelExistTest.php b/tests/src/Kernel/MigrateCommerceMigrationLabelExistTest.php
new file mode 100644
index 0000000..5eb3383
--- /dev/null
+++ b/tests/src/Kernel/MigrateCommerceMigrationLabelExistTest.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate\Kernel;
+
+use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
+use Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase;
+
+/**
+ * Tests that labels exist for all migrations.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateCommerceMigrationLabelExistTest extends MigrateDrupalTestBase {
+
+  use FileSystemModuleDiscoveryDataProviderTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'commerce_store',
+    'commerce_migrate',
+    'commerce_migrate_commerce',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * Migration plugin tags to create instances for.
+   *
+   * @var array
+   */
+  protected $tags = [
+    'Ubercart',
+    'Commerce 1',
+  ];
+
+  /**
+   * Tests that labels exist for all migrations.
+   */
+  public function testLabelExist() {
+    // Install all available modules.
+    $module_handler = $this->container->get('module_handler');
+    $modules = $this->coreModuleListDataProvider();
+    $modules_enabled = $module_handler->getModuleList();
+    $modules_to_enable = array_keys(array_diff_key($modules, $modules_enabled));
+    $this->enableModules($modules_to_enable);
+
+    /** @var \Drupal\migrate\Plugin\MigrationPluginManager $plugin_manager */
+    $plugin_manager = $this->container->get('plugin.manager.migration');
+    // Get all the commerce_migrate migrations.
+    $migrations = [];
+    foreach ($this->tags as $tag) {
+      $migrations = array_merge($migrations, $plugin_manager->createInstancesByTag($tag));
+    }
+
+    /** @var \Drupal\migrate\Plugin\Migration $migration */
+    foreach ($migrations as $migration) {
+      $migration_id = $migration->getPluginId();
+      $this->assertNotEmpty($migration->label(), 'Label not found for ' . $migration_id);
+    }
+  }
+
+}
diff --git a/tests/src/Kernel/MigrateCommerceMigrationProvidersExistTest.php b/tests/src/Kernel/MigrateCommerceMigrationProvidersExistTest.php
new file mode 100644
index 0000000..95a5a09
--- /dev/null
+++ b/tests/src/Kernel/MigrateCommerceMigrationProvidersExistTest.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate\Kernel;
+
+use Drupal\KernelTests\FileSystemModuleDiscoveryDataProviderTrait;
+use Drupal\Tests\migrate_drupal\Kernel\MigrateDrupalTestBase;
+
+/**
+ * Tests that modules exist for all source and destination plugins.
+ *
+ * @group commerce_migrate_commerce
+ */
+class MigrateCommerceMigrationProvidersExistTest extends MigrateDrupalTestBase {
+
+  use FileSystemModuleDiscoveryDataProviderTrait;
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'commerce_store',
+    'commerce_migrate',
+    'commerce_migrate_commerce',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * Migration plugin tags to create instances for.
+   *
+   * @var array
+   */
+  protected $tags = [
+    'Ubercart',
+    'Commerce 1',
+  ];
+
+  /**
+   * Invalid migration destinations.
+   *
+   * @var array
+   */
+  protected $invalidDestinations = [
+    'migrate',
+    'migrate_drupal',
+    'migrate_drupal_ui',
+    'commerce_migrate',
+    'commerce_migrate_commerce',
+    'commerce_migrate_ubercart',
+  ];
+
+  /**
+   * Tests that modules exist for all source and destination plugins.
+   */
+  public function testProvidersExist() {
+    // Enable all modules.
+    self::$modules = array_keys($this->coreModuleListDataProvider());
+    /** @var \Drupal\migrate\Plugin\MigrationPluginManager $plugin_manager */
+    $plugin_manager = $this->container->get('plugin.manager.migration');
+    // Get all the commerce_migrate migrations.
+    $migrations = [];
+    foreach ($this->tags as $tag) {
+      $migrations = array_merge($migrations, $plugin_manager->createInstancesByTag($tag));
+    }
+
+    /** @var \Drupal\migrate\Plugin\Migration $migration */
+    foreach ($migrations as $migration) {
+      $source_module = $migration->getSourcePlugin()->getSourceModule();
+      $destination_module = $migration->getDestinationPlugin()->getDestinationModule();
+      $migration_id = $migration->getPluginId();
+      $this->assertTrue($source_module, sprintf('Source module not found for %s.', $migration_id));
+      $this->assertTrue($destination_module, sprintf('Destination module not found for %s.', $migration_id));
+      // Destination module can't be a migrate module.
+      $this->assertNotContains($destination_module, $this->invalidDestinations, sprintf('Invalid destination for %s.', $migration_id));
+    }
+  }
+
+}
