forked from admin/services_core
big update base struktur tahap 1
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Enums\UserAccessLevel;
|
||||
use App\Models\User;
|
||||
use App\Models\WilayahDesa;
|
||||
use App\Models\WilayahKabupaten;
|
||||
use App\Models\WilayahKecamatan;
|
||||
use App\Models\WilayahProvinsi;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
|
||||
class WilayahApiTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
public function test_master_admin_can_create_hierarchical_regions_and_get_full_address(): void
|
||||
{
|
||||
$user = User::factory()->create([
|
||||
'is_master' => true,
|
||||
'access_level' => UserAccessLevel::MASTER_ADMIN,
|
||||
]);
|
||||
|
||||
$provinsiId = $this->actingAs($user)
|
||||
->postJson('/api/wilayah/provinsi', ['kode' => '11', 'nama' => 'Aceh'])
|
||||
->assertCreated()
|
||||
->json('data.id');
|
||||
|
||||
$kabupatenId = $this->postJson('/api/wilayah/kabupaten', [
|
||||
'kode' => '11.01',
|
||||
'nama' => 'Kabupaten Simeulue',
|
||||
'provinsi_id' => $provinsiId,
|
||||
])->assertCreated()->json('data.id');
|
||||
|
||||
$kecamatanId = $this->postJson('/api/wilayah/kecamatan', [
|
||||
'kode' => '11.01.01',
|
||||
'nama' => 'Teupah Selatan',
|
||||
'kabupaten_id' => $kabupatenId,
|
||||
])->assertCreated()->json('data.id');
|
||||
|
||||
$desaId = $this->postJson('/api/wilayah/desa', [
|
||||
'kode' => '11.01.01.2001',
|
||||
'nama' => 'Latiung',
|
||||
'kecamatan_id' => $kecamatanId,
|
||||
])->assertCreated()->json('data.id');
|
||||
|
||||
$this->getJson("/api/wilayah/alamat-lengkap?desa_id={$desaId}")
|
||||
->assertOk()
|
||||
->assertJsonPath('data.desa.nama', 'Latiung')
|
||||
->assertJsonPath('data.kecamatan.nama', 'Teupah Selatan')
|
||||
->assertJsonPath('data.kabupaten.nama', 'Kabupaten Simeulue')
|
||||
->assertJsonPath('data.provinsi.nama', 'Aceh')
|
||||
->assertJsonPath(
|
||||
'data.alamat_wilayah',
|
||||
'Desa/Kelurahan Latiung, Kecamatan Teupah Selatan, Kabupaten Simeulue, Provinsi Aceh'
|
||||
);
|
||||
}
|
||||
|
||||
public function test_child_region_requires_its_direct_parent(): void
|
||||
{
|
||||
$user = User::factory()->create([
|
||||
'is_master' => true,
|
||||
'access_level' => UserAccessLevel::MASTER_ADMIN,
|
||||
]);
|
||||
|
||||
$this->actingAs($user)
|
||||
->postJson('/api/wilayah/desa', [
|
||||
'kode' => '01',
|
||||
'nama' => 'Desa Tanpa Kecamatan',
|
||||
])
|
||||
->assertUnprocessable()
|
||||
->assertJsonValidationErrors('kecamatan_id');
|
||||
}
|
||||
|
||||
public function test_parent_with_children_cannot_be_deleted(): void
|
||||
{
|
||||
$user = User::factory()->create([
|
||||
'is_master' => true,
|
||||
'access_level' => UserAccessLevel::MASTER_ADMIN,
|
||||
]);
|
||||
$provinsi = WilayahProvinsi::create(['kode' => '12', 'nama' => 'Sumatera Utara']);
|
||||
$kabupaten = WilayahKabupaten::create([
|
||||
'provinsi_id' => $provinsi->id,
|
||||
'kode' => '12.01',
|
||||
'nama' => 'Tapanuli Tengah',
|
||||
]);
|
||||
$kecamatan = WilayahKecamatan::create([
|
||||
'kabupaten_id' => $kabupaten->id,
|
||||
'kode' => '12.01.01',
|
||||
'nama' => 'Barus',
|
||||
]);
|
||||
WilayahDesa::create([
|
||||
'kecamatan_id' => $kecamatan->id,
|
||||
'kode' => '12.01.01.2001',
|
||||
'nama' => 'Kampung Mudik',
|
||||
]);
|
||||
|
||||
$this->actingAs($user)
|
||||
->deleteJson("/api/wilayah/provinsi/{$provinsi->id}")
|
||||
->assertUnprocessable()
|
||||
->assertJsonValidationErrors('wilayah');
|
||||
|
||||
$this->assertDatabaseHas('wilayah_provinsi', ['id' => $provinsi->id]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user