Login   Register  
PHP Classes
elePHPant
Icontem

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

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  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: 2013-10-17 20:23
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(612)->alnum()->noWhitespace(),
                
'password' => v::length(612)->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')));
    }

}