MIF_E31230745/tests/Feature/CrudValidationTest.php

117 lines
3.5 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class CrudValidationTest extends TestCase
{
use RefreshDatabase;
public function test_admin_can_add_jurusan_data(): void
{
$admin = User::factory()->create([
'role' => 'admin',
'email_verified_at' => now(),
]);
$payload = [
'nama_jurusan' => 'Jurusan Uji Admin',
'deskripsi' => 'Deskripsi jurusan uji dari admin',
'keywords' => 'uji,admin',
'preferensi_studi' => 'Sains & Teknologi',
'prospek_kerja' => 'Tester aplikasi',
'bobot_mtk' => 0.8,
'bobot_fisika' => 0.7,
];
$response = $this->actingAs($admin)->post(route('admin.jurusan.store'), $payload);
$response->assertRedirect(route('admin.jurusan'));
$this->assertDatabaseHas('polije_majors', [
'nama_jurusan' => 'Jurusan Uji Admin',
]);
}
public function test_bk_can_add_jurusan_data(): void
{
$bk = User::factory()->create([
'role' => 'bk',
'email_verified_at' => now(),
]);
$payload = [
'nama_jurusan' => 'Jurusan Uji BK',
'deskripsi' => 'Deskripsi jurusan uji dari BK',
'keywords' => 'uji,bk',
'preferensi_studi' => 'Bisnis & Manajemen',
'prospek_kerja' => 'Konsultan BK',
'bobot_ekonomi' => 0.9,
'bobot_sosiologi' => 0.6,
];
$response = $this->actingAs($bk)->post(route('bk.jurusan.store'), $payload);
$response->assertRedirect(route('bk.jurusan'));
$this->assertDatabaseHas('polije_majors', [
'nama_jurusan' => 'Jurusan Uji BK',
]);
}
public function test_admin_guru_bk_store_validates_email_and_password(): void
{
$admin = User::factory()->create([
'role' => 'admin',
'email_verified_at' => now(),
]);
$response = $this->actingAs($admin)->from(route('admin.guru-bk.create'))->post(route('admin.guru-bk.store'), [
'name' => 'Guru BK Uji',
'email' => 'email-tidak-valid',
'password' => '123',
'password_confirmation' => '123',
]);
$response->assertRedirect(route('admin.guru-bk.create'));
$response->assertSessionHasErrors(['email', 'password']);
}
public function test_rekomendasi_ipa_requires_all_ipa_scores(): void
{
$siswa = User::factory()->create([
'role' => 'siswa',
'kelompok_asal' => 'IPA',
'email_verified_at' => now(),
]);
$response = $this->actingAs($siswa)->from(route('rekomendasi.index'))->post(route('rekomendasi.proses'), [
'mtk' => 90,
'minat' => 'coding',
'pref_studi' => 'Sains & Teknologi',
'cita_cita' => 'programmer',
]);
$response->assertRedirect(route('rekomendasi.index'));
$response->assertSessionHasErrors(['fisika', 'kimia', 'biologi']);
}
public function test_admin_student_detail_only_accepts_siswa_id(): void
{
$admin = User::factory()->create([
'role' => 'admin',
'email_verified_at' => now(),
]);
$bk = User::factory()->create([
'role' => 'bk',
'email_verified_at' => now(),
]);
$this->actingAs($admin)
->get(route('admin.student.detail', $bk->id))
->assertNotFound();
}
}