Files
backend/tests/Feature/V2/Dashboard/RoadPatrolProject/DeleteTest.php

134 lines
4.0 KiB
PHP

<?php
namespace Tests\Feature\V2\Dashboard\RoadPatrolProject;
use App\Models\City;
use App\Models\EdarateOstani;
use App\Models\EdarateShahri;
use App\Models\InfoItem;
use App\Models\LogList;
use App\Models\ObservedItem;
use App\Models\Permission;
use App\Models\RoadPatrol;
use App\Models\User;
use Illuminate\Foundation\Testing\DatabaseTruncation;
use Tests\TestCase;
class DeleteTest extends TestCase
{
use DatabaseTruncation;
/**
* A basic feature test example.
*/
public function test_type_is_required(): void
{
$user = User::factory()->create();
$roadPatrol = RoadPatrol::factory()->create();
$response = $this->actingAs($user)->postJson("v2/road_patrols/supervisor/cartable/delete/{$roadPatrol->id}");
$response->assertUnprocessable()
->assertInvalid([
'type' => __('validation.required', ['attribute' => 'type'])
]);
}
public function test_user_should_have_partial_delete_road_patrol_permission(): void
{
$user = User::factory()->create();
$roadPatrol = RoadPatrol::factory()->create();
$response = $this->actingAs($user)->postJson("v2/road_patrols/supervisor/cartable/delete/{$roadPatrol->id}", [
'type' => 1
]);
$response->assertForbidden();
}
public function test_user_can_partial_delete_a_observed_item_and_road_patrol(): void
{
$user = User::factory()
->has(Permission::factory([
'name' => 'partial-delete-road-patrol'
]))
->create();
$roadPatrol = RoadPatrol::factory()->create();
$observedItems = ObservedItem::factory()->create([
'road_patrol_id' => $roadPatrol->id
]);
$response = $this->actingAs($user)->postJson("v2/road_patrols/supervisor/cartable/delete/{$roadPatrol->id}", [
'type' => 1
]);
$response->assertStatus(200)
->assertExactJson([
'message' => 'succussful'
]);
$this->assertDatabaseMissing('road_patrols', [
'id' => $roadPatrol->id,
'operator_name' => $roadPatrol->operator_name,
'operator_id' => $roadPatrol->operator_id,
]);
$this->assertDatabaseMissing('observed_items', [
'item_name' => $observedItems->item_name,
'road_patrol_id' => $observedItems->road_patrol_id,
]);
}
public function test_user_should_have_complete_delete_road_patrol_permission(): void
{
$user = User::factory()->create();
$roadPatrol = RoadPatrol::factory()->create();
$response = $this->actingAs($user)->postJson("v2/road_patrols/supervisor/cartable/delete/{$roadPatrol->id}", [
'type' => 2
]);
$response->assertForbidden();
}
public function test_user_can_complete_delete_a_observed_item_and_road_patrol(): void
{
$user = User::factory()
->has(Permission::factory([
'name' => 'complete-delete-road-patrol'
]))
->create();
$roadPatrol = RoadPatrol::factory()->create();
$logList = LogList::factory()->create([
'log_unique_code' => 1144
]);
$observedItems = ObservedItem::factory()->create([
'road_patrol_id' => $roadPatrol->id
]);
$response = $this->actingAs($user)->postJson("v2/road_patrols/supervisor/cartable/delete/{$roadPatrol->id}", [
'type' => 2
]);
$response->assertStatus(200)
->assertExactJson([
'message' => 'succussful'
]);
$this->assertDatabaseMissing('road_patrols', [
'id' => $roadPatrol->id,
'operator_name' => $roadPatrol->operator_name,
'operator_id' => $roadPatrol->operator_id,
]);
$this->assertDatabaseMissing('observed_items', [
'item_name' => $observedItems->item_name,
'road_patrol_id' => $observedItems->road_patrol_id,
]);
}
}