csv-validator/tests/ValidatorTest.php

105 lines
4.1 KiB
PHP
Raw Normal View History

2016-05-22 19:17:47 +02:00
<?php
use Deblan\Csv\CsvParser;
use Deblan\CsvValidator\Validator;
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Email;
class ValidatorTest extends \PHPUnit_Framework_TestCase
{
public function testViolation()
{
$parser = $this->generateParser('example.csv');
$validator = $this->generateValidator($parser);
$this->setExpectedException('\RuntimeException');
$validator->isValid();
}
2016-12-02 14:26:50 +01:00
public function testExpectedHeaders()
2016-12-02 15:18:33 +01:00
{
$parser = $this->generateParser('example.csv');
$parser->setHasHeaders(true);
2016-12-02 15:18:33 +01:00
$validator = $this->generateValidator();
$validator->setExpectedHeaders(['foo', 'bar', 'boo']);
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-12-02 15:18:33 +01:00
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
$validator = $this->generateValidator();
$validator->setExpectedHeaders(['bad', 'legend']);
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-12-02 15:18:33 +01:00
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(1, count($validator->getErrors()));
}
2016-05-22 19:17:47 +02:00
public function testNoConstraint()
{
$parser = $this->generateParser('example.csv');
2016-12-02 14:26:50 +01:00
$validator = $this->generateValidator();
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-05-22 19:17:47 +02:00
$this->assertEquals(true, $validator->isValid());
}
2016-12-02 14:26:50 +01:00
2016-05-22 19:17:47 +02:00
public function testFieldContraintsOk()
{
$parser = $this->generateParser('example.csv');
2016-12-02 14:26:50 +01:00
$validator = $this->generateValidator();
2016-05-22 19:17:47 +02:00
$validator->addFieldConstraint(0, new NotBlank());
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-05-22 19:17:47 +02:00
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
2016-12-02 14:26:50 +01:00
2016-05-22 19:17:47 +02:00
$parser = $this->generateParser('example.csv');
2016-12-02 14:26:50 +01:00
$validator = $this->generateValidator();
2016-05-22 19:17:47 +02:00
$validator->addFieldConstraint(1, new NotBlank());
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-05-22 19:17:47 +02:00
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
2016-12-02 14:26:50 +01:00
2016-05-22 19:17:47 +02:00
$parser = $this->generateParser('example.csv');
2016-12-02 14:26:50 +01:00
$validator = $this->generateValidator();
2016-05-22 19:17:47 +02:00
$validator->addFieldConstraint(0, new NotBlank());
$validator->addFieldConstraint(1, new NotBlank());
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-05-22 19:17:47 +02:00
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
}
2016-12-02 14:26:50 +01:00
2016-05-22 19:17:47 +02:00
public function testFieldContraintsKo()
{
$parser = $this->generateParser();
2016-12-02 14:26:50 +01:00
$validator = $this->generateValidator();
2016-05-22 19:17:47 +02:00
$validator->addFieldConstraint(0, new Email());
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-05-22 19:17:47 +02:00
$this->assertEquals(false, $validator->isValid());
2016-12-02 14:26:50 +01:00
$this->assertEquals(2, count($validator->getErrors()));
$parser = $this->generateParser();
2016-12-02 14:26:50 +01:00
$validator = $this->generateValidator();
2016-05-22 19:17:47 +02:00
$validator->addFieldConstraint(1, new Email());
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-05-22 19:17:47 +02:00
$this->assertEquals(false, $validator->isValid());
2016-12-02 14:26:50 +01:00
$this->assertEquals(5, count($validator->getErrors()));
2016-05-22 19:17:47 +02:00
$parser = $this->generateParser('example.csv');
2016-12-02 14:26:50 +01:00
$validator = $this->generateValidator();
2016-05-22 19:17:47 +02:00
$validator->addFieldConstraint(0, new Email());
$validator->addFieldConstraint(1, new Email());
$validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
2016-05-22 19:17:47 +02:00
$this->assertEquals(false, $validator->isValid());
2016-12-02 14:26:50 +01:00
$this->assertEquals(7, count($validator->getErrors()));
2016-05-22 19:17:47 +02:00
}
protected function generateParser()
2016-05-22 19:17:47 +02:00
{
return new CsvParser();
2016-05-22 19:17:47 +02:00
}
2016-12-02 14:26:50 +01:00
protected function generateValidator()
2016-05-22 19:17:47 +02:00
{
2016-12-02 14:26:50 +01:00
return new Validator(Validation::createValidator());
2016-05-22 19:17:47 +02:00
}
}