aligent/oro-fixtures

一个OroCommerce扩展包,用于使用Alice fixtures填充开发环境中的测试数据。

v5.0.0 2022-07-12 01:36 UTC

README

描述

此扩展包提供了一个抽象的fixture类,可以扩展来加载Alice fixtures。为开发环境提供了一种轻松加载小部分演示/测试数据的方法。然后,这些fixtures可以轻松与为您的扩展包创建的任何Behat测试共享。

此扩展包不打算在生产环境中加载,并且只有在开发模式下才会加载其所需的服务。

安装说明

  1. 通过Composer安装此模块

     composer require --dev aligent/oro-fixtures
    
  2. 将以下内容添加到您的 src/AppKernel.php 文件中的 registerBundles 函数中

    if (class_exists('Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle')
        && class_exists('Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle')) {
        $bundles[] = new Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle();
        $bundles[] = new Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle();
    }
  3. 清除缓存

     php bin/console cache:clear --env=dev
    

初始化器

初始化器提供了一种方法,使Alice fixtures能够引用数据库中已经存在的实体。

此扩展包包含以下初始化器

添加和运行fixture

  1. 确保您的数据库已初始化为OroCommerce的空安装(即不要添加演示数据)

  2. 快照您的数据库以创建回滚点

  3. 在您的扩展包中创建演示fixture目录,例如 src/Acme/BaseBundle/Migrations/Data/Demo/ORM

  4. 创建一个名为 data 的子目录,例如 src/Acme/BaseBundle/Migrations/Data/Demo/ORM/data 并添加一个alice fixture,例如:

    Oro\Bundle\ProductBundle\Entity\ProductName:
        product_A_1_name:
            string: 'Product A 1'
    
    Oro\Bundle\ProductBundle\Entity\ProductUnitPrecision:
        unit_precisionA1:
            unit: '@unit_each'
            precision: '1'
    
    Oro\Bundle\ProductBundle\Entity\Product:
        product_A_1:
            type: 'simple'
            sku: 'PROD_A_1'
            organization: '@organization'
            attributeFamily: '@defaultProductFamily'
            primaryUnitPrecision: '@unit_precisionA1'
            __calls:
                - addName: ['@product_A_1_name']
            status: 'enabled'
            inventoryStatus: '@enumInventoryStatuses'
    
    Oro\Bundle\PricingBundle\Entity\ProductPrice:
        price_A_1:
            product: '@product_A_1'
            priceList: '@defaultPriceList'
            currency: 'AUD'
            quantity: 1
            unit: '@unit_each'
            value: 12
    
    Oro\Bundle\PricingBundle\Entity\PriceListToProduct:
        priceRelation_A_1:
            product: '@product_A_1'
            priceList: '@defaultPriceList'
  5. 在演示fixtures目录中创建一个新的fixture,它扩展了 AbstractAliceFixture 并实现了 getFixtures。这可以指向一个文件或一个包含yml文件的目录。

    <?php
    
    namespace Acme\BaseBundle\Migrations\Data\Demo\ORM;
    
    use Aligent\FixturesBundle\Fixtures\AbstractAliceFixture;
    
    class ExampleDemoDataFixture extends AbstractAliceFixture
    {
        protected function getFixtures(): string
        {
            return __DIR__ . '/data';
        }
    }
  6. 要执行fixture,请运行

        bin/console oro:migration:data:load --env=dev --fixtures-type=demo --bundles=AcmeBaseBundle --bundles=AcmeAnotherBundle

支持

如果您在此扩展包中遇到任何问题,请随时通过版本和复现步骤在GitHub上打开问题

贡献

任何贡献都将受到高度赞赏。最佳的代码贡献方式是在GitHub上打开pull request

开发者

Adam Hall adam.hall@aligent.com.au.

许可

GPLv3

版权

(C)2022 Aligent Consulting