commit melhorias sgf
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use App\Console\Commands\PopulateDimTempo;
|
||||
use App\Services\Sgc\CalendarDimension;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Console\Tester\CommandTester;
|
||||
|
||||
final class CalendarDimensionTest extends TestCase
|
||||
{
|
||||
private function tester(): CommandTester
|
||||
{
|
||||
$command = new PopulateDimTempo;
|
||||
$command->setLaravel(new \Illuminate\Foundation\Application(dirname(__DIR__, 2)));
|
||||
return new CommandTester($command);
|
||||
}
|
||||
public function test_ten_complete_years_have_unique_dates_and_correct_boundaries(): void
|
||||
{
|
||||
$days = iterator_to_array(CalendarDimension::days(2026, 10));
|
||||
self::assertCount(3652, $days);
|
||||
self::assertSame('2026-01-01', $days[0]['data_completa']);
|
||||
self::assertSame('2035-12-31', $days[array_key_last($days)]['data_completa']);
|
||||
self::assertCount(3652, array_unique(array_column($days, 'data_id')));
|
||||
$leap = array_values(array_filter($days, fn($d)=>$d['data_completa']==='2028-02-29'))[0];
|
||||
self::assertSame(2, $leap['dia_semana']);
|
||||
self::assertSame('Fevereiro', $leap['nome_mes']);
|
||||
self::assertSame(1, $leap['trimestre']);
|
||||
self::assertFalse($leap['eh_feriado']);
|
||||
}
|
||||
|
||||
public function test_weekend_and_semester_fields_are_calendar_based(): void
|
||||
{
|
||||
$days = array_column(iterator_to_array(CalendarDimension::days(2026, 1)), null, 'data_completa');
|
||||
self::assertFalse($days['2026-01-03']['eh_dia_util']);
|
||||
self::assertFalse($days['2026-01-04']['eh_dia_util']);
|
||||
self::assertTrue($days['2026-01-05']['eh_dia_util']);
|
||||
self::assertSame(2, $days['2026-07-01']['semestre']);
|
||||
self::assertSame(3, $days['2026-07-01']['trimestre']);
|
||||
}
|
||||
|
||||
public function test_dry_run_never_needs_an_application_or_database(): void
|
||||
{
|
||||
$tester = $this->tester();
|
||||
self::assertSame(0, $tester->execute(['--start-year'=>'2026', '--years'=>'10', '--dry-run'=>true]));
|
||||
self::assertStringContainsString('3652', $tester->getDisplay());
|
||||
}
|
||||
|
||||
public function test_invalid_range_is_refused_before_database_access(): void
|
||||
{
|
||||
$tester = $this->tester();
|
||||
self::assertSame(2, $tester->execute(['--start-year'=>'2026', '--years'=>'-1']));
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
iterator_to_array(CalendarDimension::days(9999, 2));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user