PHP SP

Conhecendo e contribuindo para o Respect/Validation

O que é o Respect

Agora é hora de muito respeito, vamos falar da melhor e mais impressionante ferramenta de validação já feita, então, Respect por favor!

O Respect já é um projeto muito maduro e conhecido, e está nos principais veículos de mídias especializadas do brasil e do exterior como no SitePoint, PHPArch, Zurb, iMasters entre muitos outros.

RespectValidation – #testfest2015

Recentemente, o phpsp promoveu o #testfest no Centro de Treinamentos Novatec, onde pudemos criar teste para o microframework RespectValidation.

Estavam no evento caras de alto gabarito e nível técnico, entre eles o criador e arquiteto chefe do projeto @alganet, o @henriquemoody, engenheiro core commiter do projeto entre outros membros do phpsp.

Lá tivemos a oportunidade de aprender diretamente com os responsáveis do projeto, como programar com o respect utilizando as boas praticas e como contribuir para o mesmo.

Quais os pré-requisitos ?

Primeiramente é muito bom já ter uma certa familiaridade com o framework, se não tiver não tem problema, o @henriquemoody produziu um excelente documento onde explica passo a passo como funciona o framework, do nível básico ao ninja.

Vamos codar? – Teste Unitário

Vamos escrever testes usando esta classe de exemplo “IntType”, onde verifica se o que está sendo passado é um inteiro.

<?php /* IntType.php */
namespace RespectValidationRules;

class IntType extends AbstractRule
{
  public function validate($input)
  { 
    return is_int($input);
  }
}

Dentro do projeto validation, temos o diretório testes/unit/Rules/, é aqui que criaremos um teste unitário para testar a classe acima chamado de IntTypeTest.php
Neste teste, podemos estender de phpunit as funcionalidades que iremos utilizar a seguir.
Como precisaremos verificar se um determinado dado é um inteiro válido, precisaremos de uma fonte de dados, para ver se a validação realmente funciona.
Para isto o phpunit nos oferece o @dataProvider, onde podemos implementar dados para teste da função.

<?php /* IntTypeTest.php */

namespace RespectValidationRules;

/**
 * @group rule
 * @covers RespectValidationRulesIntType
 */

class IntTypeTest extends PHPUnit_framework_TestCase
{
  public function providerForValidIntType()
  { 
    return array(
        array(0),
        array(123456),
        array(PHP_INT_MAX),
        array(PHP_INT_MAX * -1)
    );
  }

  /**
   * @dataProvider providerForValidIntType
   */
  public function testShoudValidateInputWhenItIsAValidIntType($input)
  {
    $rule = new IntType();
    $this->assertTrue($rule->validate($input));
  }

}

Vamos codar? – Teste Integração

Depois de escrever teste unitário, devemos escrever um teste de integração.

/* IntType.phpt */
--TEST-- 
Validator::IntType()
--CREDITS--
marcosptf - 
--SKIPIF--
<?php
if(!is_file(__DIR__ . DIRECTORY_SEPARATOR . 'vendor/autoload.php')) die('skip, please install composer.');
?>
--FILE--
<?php
var_dump(Validator::IntType()->assert(42));
var_dump(Validator::IntType()->check(42));
?>
--EXPECT--
bool(true)
bool(true)

A idéia deste post não é esgotar o assunto, mais propositalmente, deixar um desejo de “quero mais”, se este for o seu caso e quiser se aprofundar no assunto e começar a contribuir, veja alguns itens mais avançados na apresentação realizada no dia do evento.

Powered by WPeMatico