diff --git a/.gitignore b/.gitignore index 22d0d82..3e52175 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ +*.swp +tags vendor diff --git a/LICENSE b/LICENSE index 80445fb..b57a6c2 100644 --- a/LICENSE +++ b/LICENSE @@ -20,5 +20,4 @@ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/README.md b/README.md index a83c640..60a693c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ csv-validator ============= -[![](https://phpci.gitnet.fr/build-status/image/2?branch=master&label=PHPCensor&style=flat-square)](https://phpci.gitnet.fr/build-status/view/2) +![](https://phpci.gitnet.fr//build-status/image/1) CSV validator library @@ -45,7 +45,7 @@ $validator->addFieldConstraint(0, new Email()); $validator->addFieldConstraint(1, new Date()); // Validate the legend -$validator->setExpectedHeaders(['foo', 'bar', 'bim']); +$validator->setExpectedLegend(array('foo', 'bar', 'bim')); // An line must contain 3 columns $validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) { @@ -55,10 +55,10 @@ $validator->addDataConstraint(new Callback(function($data, ExecutionContextInter })); // Initialisation of the parser -$parser = new CsvParser(); -$parser->setHasHeaders(true); +$parser = new CsvParser(__DIR__.'/tests/fixtures/example.csv'); +$parser->setHasLegend(true); -$validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv')); +$validator->validate($parser); if ($validator->isValid() === false) { foreach ($validator->getErrors() as $error) { @@ -80,39 +80,6 @@ EOF; } ``` -Run `example.php` and see results: - -``` - - - - -``` - Contributors ------------ diff --git a/composer.json b/composer.json index 4e561ff..0233417 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "minimum-stability": "dev", "require": { "php": ">=5.6.0", - "symfony/validator": "3.*", - "deblan/csv": "v2.0.*" + "symfony/validator": "2.*", + "deblan/csv": "v1.2" } } diff --git a/example.php b/example.php index e764726..48250f6 100644 --- a/example.php +++ b/example.php @@ -2,6 +2,7 @@ use Deblan\Csv\CsvParser; use Deblan\CsvValidator\Validator; +use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints\Email; use Symfony\Component\Validator\Constraints\Date; use Symfony\Component\Validator\Constraints\Callback; @@ -19,27 +20,27 @@ $validator->addFieldConstraint(0, new Email()); $validator->addFieldConstraint(1, new Date()); // Validate the legend -$validator->setExpectedHeaders(['foo', 'bar', 'bim']); +$validator->setExpectedLegend(array('foo', 'bar', 'bim')); // An line must contain 3 columns -$validator->addDataConstraint(new Callback(function ($data, ExecutionContextInterface $context) { +$validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) { if (count($data) !== 6) { // 6 because of the legend (3 fields * 2) $context->addViolation('The line must contain 3 columns'); } })); // Initialisation of the parser -$parser = new CsvParser(); -$parser->setHasHeaders(true); +$parser = new CsvParser(__DIR__.'/tests/fixtures/example.csv'); +$parser->setHasLegend(true); -$validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv')); +$validator->validate($parser); if ($validator->isValid() === false) { foreach ($validator->getErrors() as $error) { - $line = $error->getLine(); + $line = $error->getLine(); $column = $error->getColumn(); $message = $error->getViolation()->getMessage(); - + echo <<
  • Line: $line
  • diff --git a/src/Deblan/CsvValidator/Validator.php b/src/Deblan/CsvValidator/Validator.php index 6374910..ee22932 100644 --- a/src/Deblan/CsvValidator/Validator.php +++ b/src/Deblan/CsvValidator/Validator.php @@ -49,7 +49,7 @@ class Validator /** * @var array */ - protected $expectedHeaders = []; + protected $expectedLegend = []; /** * Constructor. @@ -105,9 +105,9 @@ class Validator * * @return Validator */ - public function setExpectedHeaders(array $legend) + public function setExpectedLegend(array $legend) { - $this->expectedHeaders = $legend; + $this->expectedLegend = $legend; return $this; } @@ -121,12 +121,13 @@ class Validator { if ($this->parser !== $parser) { $this->parser = $parser; + $this->parser->parse(); $this->errors = []; } elseif ($this->hasValidate) { return; } - $this->validateHeaders(); + $this->validateLegend(); $this->validateDatas(); $this->validateFields(); @@ -136,17 +137,17 @@ class Validator /** * Validates the legend. */ - protected function validateHeaders() + protected function validateLegend() { - if (!$this->parser->getHasHeaders()) { + if (!$this->parser->getHasLegend()) { return; } - if (empty($this->expectedHeaders)) { + if (empty($this->expectedLegend)) { return; } - if ($this->parser->getHeaders() !== $this->expectedHeaders) { + if ($this->parser->getLegend() !== $this->expectedLegend) { $this->mergeErrorMessage('Invalid legend.', 1); } } @@ -293,7 +294,7 @@ class Validator */ protected function getTrueLine($line) { - if ($this->parser->getHasHeaders()) { + if ($this->parser->getHasLegend()) { ++$line; } diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php deleted file mode 100644 index 4d0705f..0000000 --- a/tests/ExampleTest.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ -class ExampleTest extends \PHPUnit_Framework_TestCase -{ - public function testExemple() - { - $content = shell_exec('php -f '.__DIR__.'/../example.php'); - - $this->assertEquals(' - - - -', $content); - } -} diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php index f3d75ac..4c8c617 100644 --- a/tests/ValidatorTest.php +++ b/tests/ValidatorTest.php @@ -16,20 +16,20 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase $validator->isValid(); } - public function testExpectedHeaders() + public function testExpectedLegend() { $parser = $this->generateParser('example.csv'); - $parser->setHasHeaders(true); + $parser->setHasLegend(true); $validator = $this->generateValidator(); - $validator->setExpectedHeaders(['foo', 'bar', 'boo']); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->setExpectedLegend(['foo', 'bar', 'boo']); + $validator->validate($parser); $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')); + $validator->setExpectedLegend(['bad', 'legend']); + $validator->validate($parser); $this->assertEquals(false, $validator->isValid()); $this->assertEquals(1, count($validator->getErrors())); } @@ -38,7 +38,7 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase { $parser = $this->generateParser('example.csv'); $validator = $this->generateValidator(); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->validate($parser); $this->assertEquals(true, $validator->isValid()); } @@ -47,14 +47,14 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase $parser = $this->generateParser('example.csv'); $validator = $this->generateValidator(); $validator->addFieldConstraint(0, new NotBlank()); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->validate($parser); $this->assertEquals(true, $validator->isValid()); $this->assertEquals(0, count($validator->getErrors())); $parser = $this->generateParser('example.csv'); $validator = $this->generateValidator(); $validator->addFieldConstraint(1, new NotBlank()); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->validate($parser); $this->assertEquals(true, $validator->isValid()); $this->assertEquals(0, count($validator->getErrors())); @@ -62,24 +62,24 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase $validator = $this->generateValidator(); $validator->addFieldConstraint(0, new NotBlank()); $validator->addFieldConstraint(1, new NotBlank()); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->validate($parser); $this->assertEquals(true, $validator->isValid()); $this->assertEquals(0, count($validator->getErrors())); } public function testFieldContraintsKo() { - $parser = $this->generateParser(); + $parser = $this->generateParser('example.csv'); $validator = $this->generateValidator(); $validator->addFieldConstraint(0, new Email()); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->validate($parser); $this->assertEquals(false, $validator->isValid()); $this->assertEquals(2, count($validator->getErrors())); - $parser = $this->generateParser(); + $parser = $this->generateParser('example.csv'); $validator = $this->generateValidator(); $validator->addFieldConstraint(1, new Email()); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->validate($parser); $this->assertEquals(false, $validator->isValid()); $this->assertEquals(5, count($validator->getErrors())); @@ -87,14 +87,14 @@ class ValidatorTest extends \PHPUnit_Framework_TestCase $validator = $this->generateValidator(); $validator->addFieldConstraint(0, new Email()); $validator->addFieldConstraint(1, new Email()); - $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv')); + $validator->validate($parser); $this->assertEquals(false, $validator->isValid()); $this->assertEquals(7, count($validator->getErrors())); } - protected function generateParser() + protected function generateParser($file) { - return new CsvParser(); + return new CsvParser(__DIR__.'/fixtures/'.$file); } protected function generateValidator()