Skip to content

Instantly share code, notes, and snippets.

@gersonfs
Created March 24, 2022 14:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gersonfs/78c27d3fe133e90ca65031840b8b83d8 to your computer and use it in GitHub Desktop.
Save gersonfs/78c27d3fe133e90ca65031840b8b83d8 to your computer and use it in GitHub Desktop.
<?php
namespace App\Test\TestCase\Dominio\ObjetoValor;
use App\Dominio\ObjetoValor\PeriodoMensal;
use Cake\TestSuite\TestCase;
/**
* Class PeriodoMensalTest
*
* @package App\Test\TestCase\Dominio\ObjetoValor
* @covers \App\Dominio\ObjetoValor\PeriodoMensal
*/
class PeriodoMensalTest extends TestCase
{
public function test__toString(): void
{
$periodo = new PeriodoMensal(1, 2020);
$this->assertEquals('01/2020', (string)$periodo);
}
public function test__construct_mes_invalido(): void
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Mês 0 é inválido!');
new PeriodoMensal(0, 2020);
}
public function test__construct_ano_invalido(): void
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Ano 0 é inválido!');
new PeriodoMensal(1, 0);
}
public function testBuildFromDate(): void
{
$periodo = PeriodoMensal::buildFromDate(new \DateTime('2020-04-01 16:40:01'));
$this->assertEquals('04/2020', (string)$periodo);
}
public function test_from_string(): void
{
$this->assertEquals('08/2020', (string)PeriodoMensal::fromString('08/2020'));
$this->assertEquals('12/2020', (string)PeriodoMensal::fromString('12/2020'));
$this->assertEquals('08-2020', (string)PeriodoMensal::fromString('08-2020'));
$this->assertEquals('12-2020', (string)PeriodoMensal::fromString('12-2020'));
}
public function test_from_string_invalidos_string_vazia(): void
{
$this->expectException(\InvalidArgumentException::class);
PeriodoMensal::fromString('');
}
public function test_from_string_invalidos_string_invalida1(): void
{
$this->expectException(\InvalidArgumentException::class);
PeriodoMensal::fromString('0902020');
}
public function test_from_string_invalidos_string_invalida2(): void
{
$this->expectException(\InvalidArgumentException::class);
PeriodoMensal::fromString('01/20');
}
public function testPrimeiroDiaMes(): void
{
$periodo = PeriodoMensal::buildFromDate(new \DateTime('2020-04-14 16:40:01'));
$this->assertEquals('01/04/2020', $periodo->primeiroDiaMes()->format('d/m/Y'));
}
public function testUltimoDiaMes(): void
{
$periodo = PeriodoMensal::buildFromDate(new \DateTime('2020-04-14 16:40:01'));
$this->assertEquals('30/04/2020', $periodo->ultimoDiaMes()->format('d/m/Y'));
}
public function test_incrementar_mes(): void
{
$periodo = PeriodoMensal::buildFromDate(new \DateTime('2020-04-14 16:40:01'));
$periodoNovo = $periodo->incrementarMes();
$this->assertEquals('05/2020', (string)$periodoNovo);
$this->assertEquals('04/2020', (string)$periodo);
$periodo = PeriodoMensal::buildFromDate(new \DateTime('2020-12-14 16:40:01'));
$periodoNovo = $periodo->incrementarMes();
$this->assertEquals('01/2021', (string)$periodoNovo);
$this->assertEquals('12/2020', (string)$periodo);
}
public function test_menor_igual_a(): void
{
$periodo1 = PeriodoMensal::buildFromDate(new \DateTime('2021-12-14 16:40:01'));
$periodo2 = PeriodoMensal::buildFromDate(new \DateTime('2020-12-14 16:40:01'));
$this->assertTrue($periodo2->menorOuIgualA($periodo1));
$this->assertFalse($periodo1->menorOuIgualA($periodo2));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment