TaskServiceTest.php
1 <?php 2 3 namespace Tests\Services; 4 5 use App\Enums\StatusEnum; 6 use App\Http\Services\TaskService; 7 use App\Models\Notification; 8 use App\Models\Stage; 9 use App\Models\Task; 10 use App\Notifications\TaskAssigned; 11 use Illuminate\Support\Facades\DB; 12 use Tests\TestCase; 13 14 class TaskServiceTest extends TestCase 15 { 16 public function testSearchInStage() 17 { 18 $query = TaskService::searchInStage(1, '', 'id', 'asc', []); 19 20 $this->assertInstanceOf(\Illuminate\Database\Eloquent\Builder::class, $query); 21 } 22 23 public function testFind() 24 { 25 $task = Task::factory()->create(); 26 $this->assertInstanceOf(Task::class, TaskService::find($task->id)); 27 } 28 29 public function testSearchTasks() 30 { 31 $query = TaskService::searchTasks('', 'id', 'asc', []); 32 33 $this->assertInstanceOf(\Illuminate\Database\Eloquent\Builder::class, $query); 34 } 35 36 /** 37 * @throws \Throwable 38 */ 39 public function testCreate() 40 { 41 $taskData = $this->exampleDataArray(); 42 43 $created = TaskService::create($taskData['task'], $taskData['relation']); 44 $this->assertTrue($created); 45 } 46 47 /** 48 * @throws \Throwable 49 */ 50 public function testUpdate() 51 { 52 $task = Task::factory()->create(); 53 54 $newData = $this->exampleDataArray(); 55 56 $updated = TaskService::update($newData, $task->id); 57 58 $this->assertTrue($updated); 59 } 60 61 /** 62 * @throws \Throwable 63 */ 64 public function testRemove() 65 { 66 $task = Task::factory()->create(); 67 TaskService::remove($task->id); 68 $this->assertSoftDeleted($task->getTable(), ['id' => $task->id]); 69 } 70 71 /** 72 * @throws \Throwable 73 */ 74 public function testChangeStatus() 75 { 76 $stage=Stage::factory()->create(); 77 $task = Task::factory()->create( 78 ['task_status_id' => StatusEnum::pending()->value] 79 ); 80 81 $task->stage_id=$stage->id; 82 $task->save(); 83 84 $this->assertTrue(TaskService::changeStatus($task->id)); 85 } 86 87 public function testGetStatusMessage() 88 { 89 $task = Task::factory()->create(); 90 $expectedMessage = __('tasks.task.cards.actions.statuses.in_process'); 91 $statusMessage = TaskService::getStatusMessage($task->id); 92 $this->assertEquals($expectedMessage, $statusMessage); 93 } 94 95 public function testIsCompleted() 96 { 97 $task = Task::factory()->create(['task_status_id' => StatusEnum::finished()->value]); 98 $this->assertTrue(TaskService::isCompleted($task->id)); 99 } 100 101 private function exampleDataArray() : array 102 { 103 return [ 104 'task' => [ 105 'title' => 'New title', 106 'description' => 'New description', 107 'task_status_id' => StatusEnum::pending()->value, 108 'start_date' => '2021-01-01', 109 'end_date' => '2021-01-01', 110 ], 111 'relation' => [ 112 'user_id' => $this->getAdminUser()->id 113 ] 114 ]; 115 } 116 }