diff -u b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTest.php --- b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTest.php +++ b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTest.php @@ -48,15 +48,41 @@ /** * Test product migration from Drupal 7 to 8. + */ + public function testProduct() { + $product = [ + 'product_id' => '1', + 'uid' => '1', + 'title' => 'Go green with Drupal Commerce Reusable Tote Bag', + 'published' => TRUE, + 'store_ids' => ['1'], + 'variations' => [ + 'variation one' => [ + 'variation_id' => '1', + 'uid' => '0', + 'sku' => 'TOT1-GRN-OS', + 'price' => '16.000000', + 'currency' => 'USD', + 'title' => 'Tote Bag 1', + 'order_item_type' => 'default', + ], + ], + ]; + $variation_ids = ['1']; + $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. * - * @dataProvider productsProvider + * @param array $product + * Product and product variation data. */ - public function testProduct(array $product) { + public function productVariationTest(array $product) { // Test variations. - $variation_ids = []; + $productInstance = Product::load($product['product_id']); foreach ($product['variations'] as $variation) { - $variation_ids[] = $variation['variation_id']; - $productInstance = Product::load($product['product_id']); $found = FALSE; foreach ($productInstance->variations as $variationInstance) { if ($variation['variation_id'] == $variationInstance->target_id) { @@ -66,37 +92,6 @@ $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']); } - - // Test product itself. - $this->assertProductEntity($product['product_id'], $product['uid'], $product['title'], $product['published'], $product['store_ids'], $variation_ids); - } - - /** - * Products data provider. - */ - public function productsProvider() { - return [ - 'go green' => [ - [ - 'product_id' => '15', - 'uid' => '1', - 'title' => 'Go green with Drupal Commerce Reusable Tote Bag', - 'published' => TRUE, - 'store_ids' => ['1'], - 'variations' => [ - 'variation one' => [ - 'variation_id' => '1', - 'uid' => '0', - 'sku' => 'TOT1-GRN-OS', - 'price' => '16.000000', - 'currency' => 'USD', - 'title' => 'Tote Bag 1', - 'order_item_type' => 'default', - ], - ], - ], - ], - ]; } } diff -u b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTypeTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTypeTest.php --- b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTypeTest.php +++ b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductTypeTest.php @@ -39,55 +39,34 @@ * Test product type migration from Drupal 7 to 8. - * - * @dataProvider productTypes */ - public function testProductType($id, $label, $description) { - $this->assertProductTypeEntity($id, $label, $description); + public function testProductType() { + $type = [ + 'id' => 'bags_cases', + 'label' => 'Bags & Cases', + 'description' => 'A Bags & Cases is a content type which contain product variations.', + ]; + $this->assertProductTypeEntity($type['id'], $type['label'], $type['description']); + $type = [ + 'id' => 'tops', + 'label' => 'Tops', + 'description' => 'A Tops is a content type which contain product variations.', + ]; + $this->assertProductTypeEntity($type['id'], $type['label'], $type['description']); } /** * Test product type migration fields from Drupal 7 to 8. - * - * @dataProvider productTypeFields */ - public function testProductTypeFields($bundle, array $fields) { + public function testProductTypeFields() { /** @var \Drupal\Core\Entity\EntityFieldManager $field_manager */ $field_manager = $this->container->get('entity_field.manager'); - $field_definitions = $field_manager->getFieldDefinitions('commerce_product', $bundle); + $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])); } } - /** - * Data provider of product types. - */ - public function productTypes() { - return [ - 'bags' => [ - 'id' => 'bags_cases', - 'label' => 'Bags & Cases', - 'description' => 'A Bags & Cases is a content type which contain product variations.', - ], - 'tops' => [ - 'id' => 'tops', - 'label' => 'Tops', - 'description' => 'A Tops is a content type which contain product variations.', - ], - ]; - } - - /** - * Data provider of product type fields. - */ - public function productTypeFields() { - return [ - 'tops' => [ - 'bundle' => 'tops', - 'fields' => ['body', 'variations', 'stores'], - ], - ]; - } - } diff -u b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTest.php b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTest.php --- b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTest.php +++ b/modules/commerce/tests/src/Kernel/Migrate/d7/ProductVariationTest.php @@ -40,11 +40,86 @@ /** * Test product variation migration from Drupal 7 Commerce to Drupal 8. - * - * @dataProvider variationsProvider */ - public function testProductVariation(array $variation) { + public function testProductVariation() { + $variation = [ + 'id' => 1, + 'uid' => '0', + 'sku' => 'TOT1-GRN-OS', + 'price' => '16.000000', + 'currency' => 'USD', + 'product_id' => '1', + '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' => '11', + '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' => 19, + 'uid' => '0', + 'sku' => 'SHO2-PRL-04', + 'price' => '40.000000', + 'currency' => 'USD', + 'product_id' => '19', + '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' => '20', + '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' => '28', + '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' => '29', + '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' => '30', + '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']); + } /** @@ -58,94 +133,2 @@ - /** - * Products data provider. - */ - public function variationsProvider() { - return [ - 'TOT1-GRN-OS' => [ - [ - 'id' => 1, - 'uid' => '0', - 'sku' => 'TOT1-GRN-OS', - 'price' => '16.000000', - 'currency' => 'USD', - 'product_id' => '1', - 'variation_title' => 'Tote Bag 1', - 'variation_bundle' => 'default', - ], - ], - 'HAT1-GRY-OS' => [ - [ - 'id' => 11, - 'uid' => '0', - 'sku' => 'HAT1-GRY-OS', - 'price' => '16.000000', - 'currency' => 'USD', - 'product_id' => '11', - 'variation_title' => 'Hat 1', - 'variation_bundle' => 'default', - ], - ], - 'SHO2-PRL-04' => [ - [ - 'id' => 19, - 'uid' => '0', - 'sku' => 'SHO2-PRL-04', - 'price' => '40.000000', - 'currency' => 'USD', - 'product_id' => '19', - 'variation_title' => 'Shoe 2', - 'variation_bundle' => 'default', - ], - ], - 'SHO2-PRL-05' => [ - [ - 'id' => 20, - 'uid' => '0', - 'sku' => 'SHO2-PRL-05', - 'price' => '40.000000', - 'currency' => 'USD', - 'product_id' => '20', - 'variation_title' => 'Shoe 2', - 'variation_bundle' => 'default', - ], - ], - 'USB-BLU-08' => [ - [ - 'id' => 28, - 'uid' => '0', - 'sku' => 'USB-BLU-08', - 'price' => '11.990000', - 'currency' => 'USD', - 'product_id' => '28', - 'variation_title' => 'Storage 1', - 'variation_bundle' => 'default', - ], - ], - 'USB-BLU-16' => [ - [ - 'id' => 29, - 'uid' => '0', - 'sku' => 'USB-BLU-16', - 'price' => '17.990000', - 'currency' => 'USD', - 'product_id' => '29', - 'variation_title' => 'Storage 1', - 'variation_bundle' => 'default', - ], - ], - 'USB-BLU-32' => [ - [ - 'id' => 30, - 'uid' => '0', - 'sku' => 'USB-BLU-32', - 'price' => '29.990000', - 'currency' => 'USD', - 'product_id' => '30', - 'variation_title' => 'Storage 1', - 'variation_bundle' => 'default', - ], - ], - ]; - } - }