Created
March 24, 2022 14:40
-
-
Save gersonfs/78c27d3fe133e90ca65031840b8b83d8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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