Skip to content

Commit

Permalink
Merge pull request #56 from courtney-miles/feat-support-constraint-va…
Browse files Browse the repository at this point in the history
…lidator-factory

feat: Add support for Symfony Constraint Validator Factory, #55
  • Loading branch information
courtney-miles committed Jan 25, 2023
2 parents 2f66da2 + 84b74ec commit 151dcce
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
5 changes: 3 additions & 2 deletions src/SlurpBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
use MilesAsylum\Slurp\Validate\ConstraintValidation\ConstraintValidator;
use MilesAsylum\Slurp\Validate\SchemaValidation\SchemaValidator;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidatorFactoryInterface;
use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;

class SlurpBuilder
Expand Down Expand Up @@ -130,12 +131,12 @@ public function __construct(
$this->factory = $slurpFactory;
}

public static function create(): self
public static function create(?ConstraintValidatorFactoryInterface $constraintValidatorFactory = null): self
{
return new static(
new PipelineBuilder(),
new PipelineBuilder(),
new SlurpFactory()
new SlurpFactory($constraintValidatorFactory)
);
}

Expand Down
19 changes: 18 additions & 1 deletion src/SlurpFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,21 @@
use MilesAsylum\Slurp\Validate\ConstraintValidation\ConstraintValidator;
use MilesAsylum\Slurp\Validate\SchemaValidation\SchemaValidator;
use MilesAsylum\Slurp\Validate\ValidatorInterface;
use Symfony\Component\Validator\ConstraintValidatorFactoryInterface;
use Symfony\Component\Validator\Validation;

class SlurpFactory
{
/**
* @var ConstraintValidatorFactoryInterface|null
*/
private $constraintValidatorFactory;

public function __construct(?ConstraintValidatorFactoryInterface $constraintValidatorFactory = null)
{
$this->constraintValidatorFactory = $constraintValidatorFactory;
}

public function createCsvFileExtractor(string $path, Schema $schema): CsvFileExtractor
{
$primaryKeys = $schema->primaryKey();
Expand Down Expand Up @@ -119,8 +130,14 @@ public function createTableSchemaFromArray(array $arr): Schema

public function createConstraintValidator(): ConstraintValidator
{
$validationBuilder = Validation::createValidatorBuilder();

if (null !== $this->constraintValidatorFactory) {
$validationBuilder->setConstraintValidatorFactory($this->constraintValidatorFactory);
}

return new ConstraintValidator(
Validation::createValidator()
$validationBuilder->getValidator()
);
}

Expand Down
3 changes: 0 additions & 3 deletions tests/Slurp/SlurpFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
*
* @see https://github.com/courtney-miles/slurp
*
* @package milesasylum/slurp
*
* @license MIT
*/

declare(strict_types=1);

namespace MilesAsylum\Slurp\Tests\Slurp;
Expand Down

0 comments on commit 151dcce

Please sign in to comment.