SmartCane/laravel_app/tests/Unit/Models/ProjectReportTest.php

106 lines
2.9 KiB
PHP

<?php
namespace Tests\Unit\Models;
use App\Jobs\ProjectDownloadTiffJob;
use App\Models\Project;
use App\Models\ProjectReport;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Mockery;
use Tests\TestCase;
class ProjectReportTest extends TestCase
{
use RefreshDatabase;
protected function setUp(): void
{
parent::setUp(); // TODO: Change the autogenerated stub
}
/**
* @test
* @dataProvider weeksAgoProvider
*/
public function it_can_calculatore_weeksAgo($year, $week, $expected)
{
Carbon::setTestNow(Carbon::now()->setISODate('2021', '41'));
$projectReport = ProjectReport::make([
'year' => $year,
'week' => $week,
]);
$this->assertEquals($expected, $projectReport->weeksAgo());
}
public static function weeksAgoProvider()
{
return [
'1 week ago' => [2021, 40, 1],
'2 weeks ago' => [2021, 39, 2],
'3 weeks ago' => [2021, 38, 3],
];
}
/**
* @test
*/
public function it_can_get_the_full_path_name()
{
$project = Project::create([
'name' => 'project_name',
'download_path' => 'project_download_path',
]);
$projectReport = $project->reports()->create([
'name' => 'name',
'year' => 2021,
'week' => 41,
'path' => 'path/doc.pdf',
]);
$projectReport->setStatusSuccess();
$this->assertEquals(storage_path('app/project_download_path/path/doc.pdf'), $projectReport->getFullPathName());
}
/**
* @test
* @dataProvider reportDateProvider
*/
public function it_can_return_the_reportDate($expected, $mail_day, $week, $year)
{
$project = Project::create([
'name' => 'project_name',
'download_path' => 'project_download_path',
'mail_day' => $mail_day,
]);
$projectReport = $project->reports()->create([
'name' => 'name',
'year' => $year,
'week' => $week,
'path' => 'path/doc.pdf',
]);
$projectReport->setStatusSuccess();
$this->assertEquals($expected, $projectReport->getReportDate());
}
public static function reportDateProvider()
{
return [
'monday' => ['2023-12-10', 'monday', 50, 2023],
'tuesday' => ['2023-12-11', 'tuesday', 50, 2023],
'wednesday' => ['2023-12-12', 'wednesday', 50, 2023],
'thursday' => ['2023-12-13', 'thursday', 50, 2023],
'friday' => ['2023-12-14', 'friday', 50, 2023],
'saturday' => ['2023-12-15', 'saturday', 50, 2023],
'sunday' => ['2023-12-16', 'sunday', 50, 2023],
];
}
}