PHP Classes

File: tests/src/Melody/Validation/ValidationGroupsTest.php

Recommend this page to a friend!
  Classes of Marcelo Santos   Melody Validation   tests/src/Melody/Validation/ValidationGroupsTest.php   Download  
File: tests/src/Melody/Validation/ValidationGroupsTest.php
Role: Unit test script
Content type: text/plain
Description: Class source
Class: Melody Validation
Validate values according to many types of rules
Author: By
Last change:
Date: 11 years ago
Size: 4,720 bytes
 

Contents

Class file image Download
<?php

namespace Melody\Validation;

use
Melody\Validation\ValidationGroups\YamlParserStrategy;
use
Melody\Validation\ValidationGroups\ArrayParserStrategy;
use
Melody\Validation\ValidationGroups\PHPParserStrategy;
use
Melody\Validation\ValidationGroups\ValidationGroupsFactory;
use
Melody\Validation\ValidationGroups\ValidationGroups;
use
Melody\Validation\Common\Collections\ConstraintsCollection;
use
Melody\Validation\Validator as v;

class
ValidationGroupsTest extends \PHPUnit_Framework_TestCase
{

    public function
test_validation_groups_from_array()
    {
       
$config['registering'] = array(
               
'name' => v::maxLength(50),
               
'email' => v::email()->maxLength(50),
               
'username' => v::length(6, 12)->alnum()->noWhitespace(),
               
'password' => v::length(6, 12)->containsSpecial(1)->containsLetter(3)->containsDigit(2)->noWhitespace()
        );

       
$validationGroups = ValidationGroupsFactory::build(new ArrayParserStrategy($config));
       
$this->assertInstanceOf('Melody\Validation\ValidationGroups\ValidationGroups', $validationGroups);

       
$input['name'] = "Marcelo Santos";
       
$input['email'] = "marcelsud@gmail.com";
       
$input['username'] = "marcelsud";
       
$input['password'] = "pass@2013";

       
$this->assertTrue($validationGroups->validate($input, "registering"));
    }

    public function
test_validation_groups_custom_messages()
    {
       
$config['registering']['email'] = v::email()->maxLength(50);
       
$config['updating']['email'] = v::email()->maxLength(10);

       
$validationGroups = ValidationGroupsFactory::build(new ArrayParserStrategy($config));
       
$input['email'] = "marcelsud @gmail.com";

       
$validationGroups->validate($input, "registering", array(
               
'email' => "'{{input}}' deve conter um email válido"
       
));

       
$errors = $validationGroups->getViolations();
       
$this->assertEquals($errors['email'], "'marcelsud @gmail.com' deve conter um email válido");

       
$this->assertFalse($validationGroups->validate($input, "updating"));
    }

    public function
test_validation_groups_from_php()
    {
       
$validationGroups = ValidationGroupsFactory::build(new PHPParserStrategy(__DIR__ . '/../../Resources/config/validation.php'));
       
$this->assertInstanceOf('Melody\Validation\ValidationGroups\ValidationGroups', $validationGroups);
    }

    public function
test_validation_groups_from_yml()
    {
       
$validationGroups = ValidationGroupsFactory::build(new YamlParserStrategy(__DIR__ . '/../../Resources/config/validation.yml'));
       
$this->assertInstanceOf('Melody\Validation\ValidationGroups\ValidationGroups', $validationGroups);
    }

    public function
test_validation_groups_import_file_not_found()
    {
       
$this->setExpectedException('Melody\Validation\Exceptions\InvalidFileException');
       
$this->assertInstanceOf('Melody\Validation\Exceptions\InvalidFileException', ValidationGroupsFactory::build(new YamlParserStrategy("file/not/found")));
    }

    public function
test_validation_groups_import_file_not_readable()
    {
       
$this->setExpectedException('Melody\Validation\Exceptions\InvalidFileException');
       
$this->assertInstanceOf('Melody\Validation\Exceptions\InvalidFileException', ValidationGroupsFactory::build(new YamlParserStrategy(__DIR__ . '/../../Resources/config/empty_not_readable')));
    }

    public function
test_validation_groups_methods()
    {
       
$constraintsCollection = new ConstraintsCollection();
       
$constraintsCollection->set('name', v::maxLength(50));
       
$constraintsCollection->set('email', v::email()->maxLength(50));

       
$validationGroups = new ValidationGroups();
       
$validationGroups->add("registering", $constraintsCollection);

       
$this->assertTrue($validationGroups->has("registering"));
       
$this->assertInstanceOf('Melody\Validation\Common\Collections\ConstraintsCollection', $validationGroups->get("registering"));

       
$validationGroups->remove("registering");
       
$this->assertFalse($validationGroups->has("registering"));

       
$this->setExpectedException('InvalidArgumentException');
       
$this->assertInstanceOf('InvalidArgumentException', $validationGroups->get("registering"));
    }

    public function
test_validation_groups_import_not_accepted_file_format()
    {
       
$this->setExpectedException('Melody\Validation\Exceptions\InvalidFileTypeException');
       
$this->assertInstanceOf('Melody\Validation\Exceptions\InvalidFileTypeException', ValidationGroupsFactory::build(new YamlParserStrategy(__DIR__ . '/../../Resources/config/validation.ini')));
    }

}