Skip to content

Commit f8cdb18

Browse files
committed
[WIP]OP-289: Add fixtures
1 parent 09dc0e8 commit f8cdb18

5 files changed

Lines changed: 97 additions & 1 deletion

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace BitBag\SyliusProductBundlePlugin\Fixture\Factory;
6+
7+
use BitBag\SyliusProductBundlePlugin\Entity\ProductBundleInterface;
8+
use Sylius\Bundle\CoreBundle\Fixture\Factory\ExampleFactoryInterface;
9+
use Symfony\Component\OptionsResolver\OptionsResolver;
10+
11+
final class ProductBundleFixtureFactory implements ExampleFactoryInterface
12+
{
13+
private readonly OptionsResolver $optionsResolver;
14+
15+
public function __construct(
16+
) {
17+
$this->optionsResolver = new OptionsResolver();
18+
}
19+
20+
protected function configureOptions(OptionsResolver $resolver): void
21+
{
22+
$resolver
23+
->setDefault('code', '')
24+
->setAllowedTypes('code', 'string')
25+
->setDefault('name', '')
26+
->setAllowedTypes('name', 'string')
27+
->setDefault('price', 0)
28+
->setAllowedTypes('price', 'integer')
29+
->setDefault('quantity', 0)
30+
->setAllowedTypes('quantity', 'integer')
31+
;
32+
}
33+
34+
public function create(array $options = []): ProductBundleInterface
35+
{
36+
$options = $this->optionsResolver->resolve($options);
37+
}
38+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace BitBag\SyliusProductBundlePlugin\Fixture;
6+
7+
use Sylius\Bundle\CoreBundle\Fixture\AbstractResourceFixture;
8+
use Sylius\Bundle\FixturesBundle\Fixture\FixtureInterface;
9+
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
10+
11+
final class ProductBundleFixture extends AbstractResourceFixture implements FixtureInterface
12+
{
13+
protected function configureResourceNode(ArrayNodeDefinition $resourceNode): void
14+
{
15+
$resourceNodeChildren = $resourceNode->children();
16+
$resourceNodeChildren->scalarNode('code')->cannotBeEmpty()->end();
17+
$resourceNodeChildren->scalarNode('name')->cannotBeEmpty()->end();
18+
$resourceNodeChildren->integerNode('price')->end();
19+
$resourceNodeChildren->integerNode('quantity')->end();
20+
}
21+
22+
public function getName(): string
23+
{
24+
return 'product_bundle';
25+
}
26+
}

src/Resources/config/services.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<import resource="services/menu.xml"/>
77
<import resource="services/factory.xml"/>
88
<import resource="services/filter.xml"/>
9+
<import resource="services/fixture.xml"/>
910
<import resource="services/controller.xml"/>
1011
<import resource="services/handler.xml"/>
1112
<import resource="services/processor.xml"/>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
5+
<services>
6+
<service id="bitbag_sylius_product_bundle.fixture.product_bundle"
7+
class="BitBag\SyliusProductBundlePlugin\Fixture\ProductBundleFixture">
8+
<argument type="service" id="bitbag_sylius_product_bundle.manager.product_bundle"/>
9+
<argument type="service" id="bitbag_sylius_product_bundle.fixture.factory.product_bundle"/>
10+
<tag name="sylius_fixtures.fixture"/>
11+
</service>
12+
<service id="bitbag_sylius_product_bundle.fixture.factory.product_bundle"
13+
class="BitBag\SyliusProductBundlePlugin\Fixture\Factory\ProductBundleFixtureFactory">
14+
</service>
15+
</services>
16+
</container>
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,17 @@
11
imports:
2-
- { resource: "@BitBagSyliusProductBundlePlugin/Resources/config/config.yml" }
2+
- { resource: "@BitBagSyliusProductBundlePlugin/Resources/config/config.yml" }
3+
4+
sylius_fixtures:
5+
suites:
6+
default:
7+
listeners:
8+
orm_purger: ~
9+
logger: ~
10+
fixtures:
11+
product_bundle:
12+
options:
13+
custom:
14+
code: 'bundle'
15+
name: Product Bundle
16+
price: 1000
17+
quantity: 100

0 commit comments

Comments
 (0)