parfum/tests/Feature/Livewire/Studio/Master/User/EditTest.php
Yoga Pangestu f8935a1c73 fix(user): kolom email dan username di table dijadikan 1 kolom yaitu Kredensial
-menyesuaikan validasi base_salary dan menghapus toDateString()
-menambahkan dispatch refreshDatatabse saat create
-membuat EmployeeFactory
-menyesuaikan UserFactory dan test
2025-09-29 17:38:28 +07:00

54 lines
1.6 KiB
PHP

<?php
use App\Livewire\Studio\Master\User\Edit;
use App\Livewire\Studio\Master\User\Index;
use App\Models\Employee;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
uses(RefreshDatabase::class);
it('renders successfully', function () {
$user = User::factory()
->has(Employee::factory())
->create();
Livewire::test(Edit::class, ['user' => $user])
->assertViewIs('livewire.studio.master.user.form')
->assertViewHas('pageTitle', 'Ubah Pegawai');
});
it('can update an user', function () {
$existingUser = User::factory()
->has(Employee::factory())
->create();
$user = User::factory()->raw();
$employee = Employee::factory()->raw();
$data = array_merge($user, $employee);
Livewire::test(Edit::class, ['user' => $existingUser])
->set('form.full_name', $data['full_name'])
->set('form.username', $data['username'])
->set('form.email', $data['email'])
->set('form.phone_number', $data['phone_number'])
->set('form.base_salary', $data['base_salary'])
->set('form.birthdate', $data['birthdate'])
->set('form.hire_date', $data['hire_date'])
->set('form.address', $data['address'])
->set('form.gender', $data['gender']->value)
->set('form.status', $data['status']->value)
->call('save')
->assertHasNoErrors()
->assertDispatched('refreshDatatable')
->assertRedirect(Index::class);
$this->assertDatabaseHas('users', [
'id' => $existingUser->id,
'email' => $data['email'],
'username' => $data['username'],
]);
});