<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Models\UserModel;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;

class datauser extends TestCase
{


    public function testAddUser()
{
    // Tambahkan pengguna baru
    $newUser = UserModel::create([
        'id_user_level' => 2,
        'nama' => 'New User',
        'email' => 'newuser@example.com',
        'username' => 'newuser',
        'password' => 'password'
    ]);

    // Ambil semua pengguna dari database
    $users = UserModel::get_user();

    // Pastikan pengguna baru telah berhasil ditambahkan
    $this->assertInstanceOf(UserModel::class, $newUser);
    $this->assertCount(6, $users);
    $this->assertFalse($users->contains('id_user', $newUser->id)); // Menggunakan ID pengguna baru sebagai kunci
}



    public function testDeleteUser()
    {
        // Ambil pengguna pertama dari database
        $user = UserModel::first();

        // Hapus pengguna tersebut
        $deleted = $user->delete();

        // Ambil semua pengguna setelah penghapusan
        $users = UserModel::get_user();

        // Pastikan pengguna berhasil dihapus dan jumlah pengguna berkurang
        $this->assertTrue($deleted);
        $this->assertCount(5, $users);
        $this->assertNotContains($user, $users);
    }
    
  
public function testGetUserM(){
    $users = UserModel::get_user();

    // Memastikan bahwa data yang dikembalikan adalah instance dari Collection
    $this->assertInstanceOf(Collection::class, $users);

    // Memastikan bahwa jumlah pengguna sesuai dengan yang diharapkan
    $this->assertCount(5, $users);

    // Memeriksa setiap pengguna
    foreach ($users as $user) {
        $this->assertInstanceOf(UserModel::class, $user);
        // Tambahkan assertion untuk memeriksa apakah atribut tidak kosong dan tidak NULL

        $this->assertNotEmpty($user->nama);
        $this->assertNotEmpty($user->email);
        $this->assertNotEmpty($user->username);
        $this->assertNotEmpty($user->password);
        // Tambahkan assertion untuk memeriksa apakah atribut tidak NULL
        $this->assertNotNull($user->nama);
    }
    
}

 
}
