commerce_export-8.x-1.0-alpha1/tests/src/Kernel/Migrate/ProductVariationTest.php

tests/src/Kernel/Migrate/ProductVariationTest.php
<?php

namespace Drupal\Tests\commerce_export\Kernel\Migrate;

use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;

/**
 * Tests Product migration.
 *
 * @requires module migrate_source_csv
 *
 * @group commerce_export
 */
class ProductVariationTest extends TestBase {

  use MigrateTestTrait;

  /**
   * Modules to enable.
   *
   * @var array
   */
  public static $modules = [
    'file',
    'image',
    'path',
    'taxonomy',
    'commerce_product',
  ];

  /**
   * {@inheritdoc}
   */
  protected function setUp() {
    parent::setUp();
    $this->installEntitySchema('taxonomy_term');
    $this->installConfig('commerce_product');
    $this->installEntitySchema('commerce_product_variation');
    $this->installEntitySchema('commerce_product');
    $this->installEntitySchema('commerce_product_attribute');
    $this->installEntitySchema('commerce_product_attribute_value');
    $this->fileMigrationSetup();
    $this->createAttribute();

    $images = ['product_image', 'product_image_2', 'product_image_3'];
    foreach ($images as $image) {
      $field_name = 'field_' . $image;
      $field_storage_definition = [
        'field_name' => $field_name,
        'entity_type' => 'commerce_product_variation',
        'type' => 'image',
        'cardinality' => 1,
      ];
      $storage = FieldStorageConfig::create($field_storage_definition);
      $storage->save();

      $field_instance = [
        'field_name' => $field_name,
        'entity_type' => 'commerce_product_variation',
        'bundle' => 'default',
        'label' => $image,
        'settings' => [
          'handler' => 'default:file',
        ],
      ];
      $field = FieldConfig::create($field_instance);
      $field->save();
    }
  }

  /**
   * Test product variation migration from CSV source file.
   */
  public function testProductVariation() {
    $this->enableModules(['commerce_export']);
    $this->executeMigrations([
      'import_attribute_value',
      'import_image',
      'import_product_variation',
    ]);

    // Set the attribute and files array for testing. Before each variation
    // test these are modified as needed for that variation.
    $attributes = [
      'attribute_color' =>
        [
          'id' => '16',
          'value' => 'Black',
        ],
      'attribute_size' =>
        [
          'id' => '18',
          'value' => 'XS',
        ],
      'attribute_accessory_size' =>
        [
          'id' => '15',
          'value' => NULL,
        ],
      'attribute_shoe_size' =>
        [
          'id' => '17',
          'value' => NULL,
        ],
    ];

    $files = [
      'field_product_image' =>
        [
          'target_id' => '1',
          'alt' => '',
          'title' => '',
          'width' => '322',
          'height' => '156',
        ],
      'field_product_image_2' =>
        [
          'target_id' => '2',
          'alt' => '',
          'title' => '',
          'width' => '211',
          'height' => '239',
        ],
      'field_product_image_3' => [],
    ];
    $this->assertProductVariationEntity(1, '0', 'HE-058', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '19';
    $attributes['attribute_size']['value'] = 'SM';
    $files['field_product_image'] =
      [
        'target_id' => '6',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $files['field_product_image_2'] = [];
    $this->assertProductVariationEntity(2, '0', 'HE-059', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '20';
    $attributes['attribute_size']['value'] = 'MD';
    $files['field_product_image'] =
      [
        'target_id' => '7',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $this->assertProductVariationEntity(3, '0', 'HE-060', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '21';
    $attributes['attribute_size']['value'] = 'LG';
    $files['field_product_image']['target_id'] = '8';
    $this->assertProductVariationEntity(4, '0', 'HE-061', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '22';
    $attributes['attribute_size']['value'] = 'XL';
    $files['field_product_image'] =
      [
        'target_id' => '9',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $this->assertProductVariationEntity(5, '0', 'HE-062', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '23';
    $attributes['attribute_size']['value'] = '2XL';
    $files['field_product_image'] =
      [
        'target_id' => '10',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $this->assertProductVariationEntity(6, '0', 'HE-063', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '24';
    $attributes['attribute_size']['value'] = '3XL';
    $files['field_product_image'] =
      [
        'target_id' => '11',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $this->assertProductVariationEntity(7, '0', 'HE-064', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_color']['id'] = '25';
    $attributes['attribute_color']['value'] = 'Blue';
    $attributes['attribute_size']['id'] = '18';
    $attributes['attribute_size']['value'] = 'XS';
    $files['field_product_image']['target_id'] = '12';
    $this->assertProductVariationEntity(8, '0', 'HE-065', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_color']['id'] = '16';
    $attributes['attribute_color']['value'] = 'Black';
    $files['field_product_image'] =
      [
        'target_id' => '13',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $this->assertProductVariationEntity(9, '0', 'HE-072', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '19';
    $attributes['attribute_size']['value'] = 'SM';
    $files['field_product_image']['target_id'] = '14';
    $this->assertProductVariationEntity(10, '0', 'HE-073', '349.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_size']['id'] = '24';
    $attributes['attribute_size']['value'] = '3XL';
    $files['field_product_image'] =
      [
        'target_id' => '15',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $this->assertProductVariationEntity(11, '0', 'HE-080', '349.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_color']['id'] = '16';
    $attributes['attribute_color']['value'] = 'Black';
    $attributes['attribute_size']['id'] = '26';
    $attributes['attribute_size']['value'] = '4';
    $files['field_product_image']['target_id'] = '16';
    $this->assertProductVariationEntity(12, '0', 'HE-081', '399.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_color']['id'] = '27';
    $attributes['attribute_color']['value'] = 'Purple';
    $attributes['attribute_size']['id'] = '28';
    $attributes['attribute_size']['value'] = '6';
    $files['field_product_image'] =
      [
        'target_id' => '17',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $this->assertProductVariationEntity(13, '0', 'HE-088', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_color']['id'] = '16';
    $attributes['attribute_color']['value'] = 'Black';
    $attributes['attribute_size']['id'] = '29';
    $attributes['attribute_size']['value'] = '8';
    $files['field_product_image']['target_id'] = '18';
    $this->assertProductVariationEntity(14, '0', 'HE-095', '299.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes['attribute_color']['id'] = '27';
    $attributes['attribute_color']['value'] = 'Purple';
    $attributes['attribute_size']['id'] = '30';
    $attributes['attribute_size']['value'] = '10';
    $files['field_product_image']['target_id'] = '19';
    $this->assertProductVariationEntity(15, '0', 'HE-102', '349.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $attributes = [];
    $files['field_product_image'] =
      [
        'target_id' => '20',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $files['field_product_image_2'] =
    [
      'target_id' => '2',
      'alt' => '',
      'title' => '',
      'width' => '211',
      'height' => '239',
    ];
    $this->assertProductVariationEntity(16, '0', 'MC-01', '349.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image'] =
      [
        'target_id' => '22',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $files['field_product_image_2'] = [];
    $this->assertProductVariationEntity(17, '0', 'MC-03', '25.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image'] =
      [
        'target_id' => '24',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $this->assertProductVariationEntity(18, '0', 'MC-04', '14.990000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image'] =
      [
        'target_id' => '25',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $this->assertProductVariationEntity(19, '0', 'MC-05', '9.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image']['target_id'] = '26';
    $this->assertProductVariationEntity(20, '0', 'MC-06', '10.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image']['target_id'] = '27';
    $this->assertProductVariationEntity(21, '0', 'MC-07', '10.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image'] =
      [
        'target_id' => '28',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $this->assertProductVariationEntity(22, '0', 'MC-08', '6.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image'] =
      [
        'target_id' => '29',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $this->assertProductVariationEntity(23, '0', 'MC-09', '7.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image'] =
      [
        'target_id' => '30',
        'alt' => '',
        'title' => '',
        'width' => '225',
        'height' => '225',
      ];
    $this->assertProductVariationEntity(24, '0', 'MC-10', '11.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image']['target_id'] = '31';
    $this->assertProductVariationEntity(25, '0', 'MC-12', '6.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image'] =
      [
        'target_id' => '32',
        'alt' => '',
        'title' => '',
        'width' => '322',
        'height' => '156',
      ];
    $this->assertProductVariationEntity(26, '0', 'MC-13', '14.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image']['target_id'] = '33';
    $this->assertProductVariationEntity(27, '0', 'GO-01', '5.950000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);

    $files['field_product_image']['target_id'] = '34';
    $files['field_product_image_3'] =
      [
        'target_id' => '35',
        'alt' => '',
        'title' => '',
        'width' => '88',
        'height' => '100',
      ];
    $this->assertProductVariationEntity(28, '0', 'GO-50', '399.000000', 'CAD', NULL, NULL, 'default', NULL, NULL, $attributes, $files);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc