ERP-API/tests/Unit/KasMasukTest.php

95 lines
2.8 KiB
PHP

<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Models\KasMasuk;
use App\Models\User;
use App\Models\Coa;
use Illuminate\Foundation\Testing\RefreshDatabase;
class KasMasukTest extends TestCase
{
use RefreshDatabase; // Reset the database after each test
protected $user;
protected $coa;
protected function setUp(): void
{
parent::setUp();
$this->user = User::factory()->create();
$this->coa = Coa::factory()->create();
}
/** @test */
public function test_can_list_all_kas_masuk()
{
KasMasuk::factory()->count(3)->create(['user_id' => $this->user->id, 'coa_id' => $this->coa->id]);
$response = $this->actingAs($this->user)->getJson('/api/kas-masuk');
$response->assertStatus(200)
->assertJsonCount(3);
}
/** @test */
public function test_can_create_a_kas_masuk_entry()
{
$data = [
'tanggal' => now()->toDateString(),
'deskripsi' => 'Pemasukan dari pelanggan',
'jumlah' => 1000000,
'coa_id' => $this->coa->id,
];
$response = $this->actingAs($this->user)->postJson('/api/kas-masuk', $data);
$response->assertStatus(201)
->assertJsonFragment(['deskripsi' => 'Pemasukan dari pelanggan']);
$this->assertDatabaseHas('kas_masuks', $data);
}
/** @test */
public function test_can_get_a_specific_kas_masuk_entry()
{
$kasMasuk = KasMasuk::factory()->create(['user_id' => $this->user->id, 'coa_id' => $this->coa->id]);
$response = $this->actingAs($this->user)->getJson("/api/kas-masuk/{$kasMasuk->id}");
$response->assertStatus(200)
->assertJsonFragment(['deskripsi' => $kasMasuk->deskripsi]);
}
/** @test */
public function test_can_update_a_kas_masuk_entry()
{
$kasMasuk = KasMasuk::factory()->create(['user_id' => $this->user->id, 'coa_id' => $this->coa->id]);
$updateData = [
'deskripsi' => 'Pemasukan dari investasi',
'jumlah' => 2000000,
'coa_id' => $this->coa->id,
];
$response = $this->actingAs($this->user)->putJson("/api/kas-masuk/{$kasMasuk->id}", $updateData);
$response->assertStatus(200)
->assertJsonFragment(['deskripsi' => 'Pemasukan dari investasi']);
$this->assertDatabaseHas('kas_masuks', $updateData);
}
/** @test */
public function test_can_delete_a_kas_masuk_entry()
{
$kasMasuk = KasMasuk::factory()->create(['user_id' => $this->user->id, 'coa_id' => $this->coa->id]);
$response = $this->actingAs($this->user)->deleteJson("/api/kas-masuk/{$kasMasuk->id}");
$response->assertStatus(200);
$this->assertDatabaseMissing('kas_masuks', ['id' => $kasMasuk->id]);
}
}