Merge branch 'feature/RoadPatrolTests' into 'develop'

write test for store road patrol

See merge request witelgroup/rms_v2!6
This commit is contained in:
2024-04-07 10:41:17 +00:00
6 changed files with 1328 additions and 0 deletions

View File

@@ -477,6 +477,7 @@ class RoadPatrolProjectController extends Controller
public function getAllDataToMap(Request $request)
{
// dd($request->date_from, $request->date_to, $request->province_id, $request->edare_id);
$date_from = $request->date_from ? $request->date_from .' 00:00:00' : Date('Y-m-d') .' 00:00:00';
$date_to = $request->date_to ? $request->date_to.' 23:59:59' : (new \DateTime('tomorrow'))->format('Y-m-d').' 23:59:59';

View File

@@ -2,10 +2,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RoadPatrol extends Model
{
use HasFactory;
protected $guarded = ['id'];
public function observedItems()

View File

@@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
*/
class RoadPatrolFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'operator_name' => $this->faker->name
];
}
}

View File

@@ -0,0 +1,134 @@
<?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\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class DeleteTest extends TestCase
{
use RefreshDatabase, WithFaker;
/**
* 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,
]);
}
}

View File

@@ -0,0 +1,95 @@
<?php
namespace Tests\Feature\V2\Dashboard\RoadPatrolProject;
use App\Models\Province;
use App\Models\RoadPatrol;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class GetAllDataToMapTest extends TestCase
{
use RefreshDatabase, WithFaker;
/**
* A basic feature test example.
*/
public function test_all_data_can_be_seen_with_no_filter(): void
{
$user = User::factory()->create();
RoadPatrol::factory()
->sequence(
['id' => 1],
['id' => 2],
['id' => 3],
['id' => 4],
['id' => 5],
['id' => 6],
['id' => 7],
)
->count(7)
->create();
$response = $this->actingAs($user)->getJson('/v2/road_patrols/report/map');
$response->assertStatus(200)
->assertExactJson([
'status' => 'succeed',
'count' => 7,
'message' => '',
'data' => [
["id" => 1, "start_lat" => 0, "start_lon" => 0],
["id" => 2, "start_lat" => 0, "start_lon" => 0],
["id" => 3, "start_lat" => 0, "start_lon" => 0],
["id" => 4, "start_lat" => 0, "start_lon" => 0],
["id" => 5, "start_lat" => 0, "start_lon" => 0],
["id" => 6, "start_lat" => 0, "start_lon" => 0],
["id" => 7, "start_lat" => 0, "start_lon" => 0],
]
]);
}
public function test_all_data_can_be_seen_with_filter(): void
{
$user = User::factory()->create();
$province = Province::factory()->create();
RoadPatrol::factory()
->sequence(
['created_at' => '2022-05-03 12:25:00', 'province_id' => $province->id, 'edare_id' => 1],
['created_at' => '2025-05-03 12:25:00', 'province_id' => $province->id, 'edare_id' => 5],
['created_at' => '2022-05-03 12:25:00', 'province_id' => $province->id, 'edare_id' => 9],
['created_at' => '2026-05-03 12:25:00', 'province_id' => $province->id, 'edare_id' => 2],
['created_at' => '2022-05-03 12:25:00', 'province_id' => $province->id, 'edare_id' => 6],
['created_at' => '2026-08-03 12:25:00', 'province_id' => $province->id, 'edare_id' => 16],
['created_at' => '2022-05-03 12:25:00', 'province_id' => $province->id, 'edare_id' => 35],
)
->count(7)
->create();
// $response = $this->actingAs($user)->getJson(route('v2.road_patrols.report.map', [
// 'date_from' => '2021-05-02',
// 'date_to' => '2024-09-01',
// 'province_id' => 1,
// 'edare_id' => 1,
// ]));
$response = $this->actingAs($user)->getJson('/v2/road_patrols/report/map?date_from=2021-05-02&date_to=2024-09-01&province_id=1&edare_id=1');
$response->assertStatus(200)
->assertExactJson([
'status' => 'succeed',
'count' => 1,
'message' => '',
'data' => [
[
"id" => 1,
"start_lat" => 0,
"start_lon" => 0
]
]
]);
}
}

File diff suppressed because it is too large Load Diff