• Tidak ada hasil yang ditemukan

Pengujian White Box a. Pengujian White Box Login

Dalam dokumen LAPORAN KERJA PRAKTEK kel 66 revisi (1) (Halaman 102-124)

BAB V PEMBAHASAN PROGRAM

4) Threats (Ancaman)

5.3 Pengujian White Box a. Pengujian White Box Login

lengkap 27 Edit Slide Mengisi form

edit slide dengan lengkap

Data terubah Sesuai Valid

28 Hapus Slide Menekan

tombol hapus Data

terhapus Sesuai Valid

29 Menu Admin

Data Member Admin memilih menu Member di nav

dashboard

Di arahkan ke halaman data

member

Sesuai Valid

30 Edit Data

Member Mengisi form edit data member dengan lengkap

Data terubah Sesuai Valid

31 Hapus Data Member

Menekan tombol hapus

Data terhapus

Sesuai Valid

5.3 Pengujian White Box

<?php

if (!Auth::attempt([

'email' => $this->email,

'password' => $this->password ])) {

session()->flash('error', 'Password salah.');

return;

}

Kasus Uji 3: Redirect Berdasarkan Peran

Memverifikasi bahwa sistem mengarahkan pengguna berdasarkan peran mereka.

Kode :

<?php

if ($user->role === 'admin') {

return $this->redirect('/dashboard', navigate: true);

} elseif ($user->role === 'owner') {

return $this->redirect('/dashboard', navigate: true);

} elseif ($user->role === 'member') {

return $this->redirect('/member', navigate: true);

}

Hasil yang Diharapkan: Sistem harus mengarahkan pengguna ke dashboard yang sesuai berdasarkan peran mereka.

b. Pengujian White Box Detai Produk asus Uji 1: Periksa Keberadaan Produk

Memverifikasi bahwa sistem memeriksa apakah produk ada dalam database.

Kode:

<?php

$this->produk = Produk::where('id', $id)->where('alias', $alias)-

>firstOrFail();

Hasil yang Diharapkan: Jika produk tidak ada, sistem harus mengembalikan kesalahan 404.

Kasus Uji 2: Periksa Keberadaan Pengguna

Memverifikasi bahwa sistem memeriksa apakah pengguna sedang login sebelum mengambil data pengguna.

Kode:

<?php

if (auth()->check()) {     $user = auth()->user();

    $this->nama = $user->name;

    $this->nomor_hp = $user->nomor_hp;

    $this->alamat = $user->alamat;

}

Hasil yang Diharapkan: Jika pengguna tidak sedang login, sistem tidak mencoba mengakses properti pengguna.

Kasus Uji 3: Hitung Harga Diskon

Memverifikasi bahwa sistem menghitung harga diskon dengan benar jika pengguna memenuhi syarat.

Kode:

<?php

if ($user->checkDiscountEligibility($this->produk)) {

    $this->hargaDiskon = $this->produk->harga * (1 - $this->produk-

>diskon_produk / 100);

} else {

    $this->hargaDiskon = null;

}

Hasil yang Diharapkan: Harga diskon dihitung dengan benar jika pengguna memenuhi syarat.

Kasus Uji 4: Hitung Total Bayar

Memverifikasi bahwa sistem menghitung total bayar dengan benar berdasarkan jumlah dan harga (diskon jika ada).

Kode:

<?php

public function calculateTotalBayar() {

    if ($this->hargaDiskon !== null) {

        $this->total_bayar = $this->jumlah * $this->hargaDiskon;

    } else {

        $this->total_bayar = $this->jumlah * $this->produk->harga;

    } }

Hasil yang Diharapkan: Total bayar dihitung dengan benar berdasarkan jumlah dan harga (diskon jika ada).

Kasus Uji 5: Simpan Pesanan

Memverifikasi bahwa sistem menyimpan pesanan dengan benar ke database.

Kode:

<?php

$pemesanan = Pemesanan::create([

    'produk_id' => $this->produk->id,     'member_id' => auth()->id(),     'nama' => $this->nama,

    'nomor_hp' => $this->nomor_hp,     'jumlah' => $this->jumlah,     'status' => 'pending',

    'total_bayar' => $this->total_bayar, ]);

Hasil yang Diharapkan: Pesanan disimpan dengan benar ke database.

c. Pengujian White Box Register Kasus Uji 1: Validasi Email Unik

Memverifikasi bahwa sistem memeriksa apakah email sudah terdaftar dalam database.

Kode:

<?php

protected $rules = [

    'email' => 'required|email|unique:users,email', ];

Hasil yang Diharapkan: Jika email sudah terdaftar, sistem harus mengatur pesan kesalahan "Email sudah digunakan."

Kasus Uji 2: Validasi Konfirmasi Password

Memverifikasi bahwa sistem memeriksa apakah password dan konfirmasi password cocok.

Kode:

<?php

protected $rules = [

    'password' => 'required|string|min:6|confirmed', ];

Hasil yang Diharapkan: Jika password dan konfirmasi password tidak cocok, sistem harus mengatur pesan kesalahan "Konfirmasi password tidak cocok."

Kasus Uji 3: Simpan Data Pengguna

Memverifikasi bahwa sistem menyimpan data pengguna dengan benar ke database.

Kode:

<?php

User::create([

    'email' => $this->email,     'name' => $this->name,

    'password' => Hash::make($this->password),     'alamat' => $this->alamat,

    'kategori_member' => $this->kategori_member,     'nomor_hp' => $this->nomor_hp,

]);

Hasil yang Diharapkan: Data pengguna disimpan dengan benar ke database.

Kasus Uji 4: Redirect ke Halaman Login

Memverifikasi bahwa sistem mengarahkan pengguna ke halaman login setelah registrasi berhasil.

Kode:

<?php

session()->flash('message', 'Registration successful.');

return redirect()->route('login');

Hasil yang Diharapkan: Pengguna diarahkan ke halaman login dengan pesan "Registration successful."

d. Pengujian White Box Daftar Pemesanan member Kasus Uji 1: Periksa Keberadaan Pengguna dan Peran

Memverifikasi bahwa sistem memeriksa apakah pengguna sedang login dan memiliki peran member.

Kode:

<?php

public function mount() {

    if (auth()->user()->role !== 'member') {

        abort(403, 'Mohon maaf Anda tidak memiliki akses ke halaman ini.');

    } }

Hasil yang Diharapkan: Jika pengguna tidak sedang login atau bukan member, sistem harus mengembalikan kesalahan 403.

Kasus Uji 2: Menampilkan Daftar Pesanan

Memverifikasi bahwa sistem mengambil dan menampilkan daftar pesanan dengan benar.

Kode:

<?php

public function render() {

    $query = Pemesanan::with('produk', 'transaksi')         ->where('member_id', auth()->id())

        ->latest();

    $orders = $query->paginate(10);

    return view('livewire.member.dash-member-pesanan', [         'orders' => $orders,

    ])->layout('components.layouts.memberfront');

}

Hasil yang Diharapkan: Daftar pesanan diambil dan ditampilkan dengan benar.

Kasus Uji 3: Menampilkan Modal Unggah Bukti Pembayaran

Memverifikasi bahwa sistem menampilkan modal unggah bukti pembayaran ketika pengguna mengklik tombol "Upload".

Kode:

<?php

public function showUploadModal($orderId) {

    $this->selectedOrderId = $orderId;

    $this->showModal = true;

}

Hasil yang Diharapkan: Modal unggah bukti pembayaran ditampilkan dengan benar.

Kasus Uji 4: Unggah Bukti Pembayaran

Memverifikasi bahwa sistem mengunggah dan menyimpan bukti pembayaran dengan benar.

Kode:

<?php

public function saveBukti() {

    $this->validate([

        'buktiPembayaran' => 'required|image|max:2048', // 2MB Max     ]);

    $order = Pemesanan::find($this->selectedOrderId);

    $transaksi = $order->transaksi;

    if ($transaksi && $transaksi->bukti_pembayaran) {

        Storage::delete('public/img/bukti/' . $transaksi->bukti_pembayaran);

    }

    $buktiPath = $this->buktiPembayaran->store('public/img/bukti');

    if ($transaksi) {

        $transaksi->update([

      'bukti_pembayaran' => basename($buktiPath),         ]);

    } else {

        Transaksi::create([

      'pemesanan_id' => $order->id,

      'bukti_pembayaran' => basename($buktiPath),         ]);

    }

    $this->showModal = false;

    session()->flash('masuk');

    return $this->redirect('/member', navigate: true);

}

Hasil yang Diharapkan: Bukti pembayaran diunggah dan disimpan dengan benar, serta status pesanan diperbarui.

e. Pengujian White Box Ubah Password member Kasus Uji 1: Validasi Field

Memverifikasi bahwa sistem memvalidasi field dengan benar.

Kode:

<?php

$this->validate([

    'current_password' => 'required',

    'new_password' => 'required|min:6|same:confirm_password',     'confirm_password' => 'required',

], [

    'new_password.same' => 'Password baru dan konfirmasi password har us sama.',

    'confirm_password.required' => 'Konfirmasi password tidak boleh ko

song.',

    'new_password.required' => 'Password baru tidak boleh kosong.',     'current_password.required' => 'Password lama tidak boleh kosong.',     'new_password.min' => 'Password baru minimal 6 karakter.',

]);

Hasil yang Diharapkan: Sistem harus menampilkan pesan kesalahan yang sesuai jika validasi gagal.

Kasus Uji 2: Periksa Password Saat Ini

Memverifikasi bahwa sistem memeriksa apakah password saat ini sesuai dengan password yang tersimpan.

Kode:

<?php

if (!Hash::check($this->current_password, Auth::user()->password)) {     session()->flash('error', 'Password lama tidak sesuai.');

    return;

}

Hasil yang Diharapkan: Jika password saat ini tidak sesuai, sistem harus mengatur pesan kesalahan "Password lama tidak sesuai." dan kembali.

Kasus Uji 3: Ubah Password

Memverifikasi bahwa sistem mengubah password dengan benar.

Kode:

<?php

Auth::user()->update([

    'password' => Hash::make($this->new_password), ]);

Hasil yang Diharapkan: Password pengguna harus diubah dengan benar di database.

Kasus Uji 4: Reset Field Input

Memverifikasi bahwa sistem mereset field input setelah password berhasil diubah.

Kode:

<?php

$this->reset(['current_password', 'new_password', 'confirm_password']);

Hasil yang Diharapkan: Field input harus direset setelah password berhasil diubah.

f. Pengujian white box edit profile member Kasus Uji 1: Validasi Field

Memverifikasi bahwa sistem memvalidasi field dengan benar.

Kode:

<?php

$this->validate([

    'nama' => 'required|string|max:255',

    'email' => 'required|string|email|max:255|unique:users,email,' . Auth::id(),     'alamat' => 'nullable|string|max:255',

    'avatar' => 'nullable|image|max:2048', // 2MB Max ]);

Hasil yang Diharapkan: Sistem harus menampilkan pesan kesalahan yang sesuai jika validasi gagal.

Kasus Uji 2: Perbarui Data Pengguna

Memverifikasi bahwa sistem memperbarui data pengguna dengan benar.

Kode:

<?php

$user = Auth::user();

$user->name = $this->nama;

$user->email = $this->email;

$user->alamat = $this->alamat;

Hasil yang Diharapkan: Data pengguna harus diperbarui dengan benar di database.

Kasus Uji 3: Unggah dan Simpan Avatar

Memverifikasi bahwa sistem mengunggah dan menyimpan avatar dengan benar.

Kode:

<?php

if ($this->avatar) {

    // Delete old avatar if exists     if ($user->avatar) {

        Storage::delete('public/img/avatar/' . $user->avatar);

    }

    // Store new avatar

    $avatarName = Str::slug($this->nama) . '-' . time() . '.' . $this->avatar-

>extension();

    $this->avatar->storeAs('public/img/avatar', $avatarName);

    $user->avatar = $avatarName;

}

Hasil yang Diharapkan: Avatar diunggah dan disimpan dengan benar, dan avatar lama dihapus jika ada.

Kasus Uji 4: Simpan Perubahan

Memverifikasi bahwa sistem menyimpan perubahan dengan benar.

Kode:

<?php

$user->save();

Hasil yang Diharapkan: Perubahan disimpan dengan benar di database.

Kasus Uji 5: Redirect dan Pesan Sukses

Memverifikasi bahwa sistem mengarahkan pengguna ke halaman dashboard dan menampilkan pesan sukses setelah profil berhasil diperbarui.

Kode:

<?php

session()->flash('success', 'Profile updated successfully.');

return redirect()->route('member.dash');

Hasil yang Diharapkan: Pengguna diarahkan ke halaman dashboard dan pesan "Profile updated successfully." ditampilkan.

g. Pengujian White Box Admin Dashboard Kasus Uji 1: Menghitung Statistik Pesanan

Memverifikasi bahwa sistem menghitung statistik pesanan dengan benar.

Kode:

<?php

$this->pesananStats = [

    'selesai' => Pemesanan::where('status', 'selesai')->count(),

    'dibatalkan' => Pemesanan::where('status', 'dibatalkan')->count(), ];

Hasil yang Diharapkan: Sistem harus menghitung jumlah pesanan dengan status "selesai" dan "dibatalkan" dengan benar.

Kasus Uji 2: Menghitung Statistik Pesanan Bulanan

Memverifikasi bahwa sistem menghitung statistik pesanan bulanan dengan benar.

Kode:

<?php

$this->pesananMonthlyStats = Pemesanan::selectRaw('MONTH(created _at) as month, produk_id, SUM(jumlah) as total')

    ->with('produk:id,nama') // Include product name     ->whereYear('created_at', Carbon::now()->year)     ->where('status', 'selesai')

    ->groupBy('month', 'produk_id')     ->get()

    ->groupBy('produk.nama') // Use product name as key     ->map(function ($group) {

        return collect(range(1, 12))->mapWithKeys(function ($month) use  ($group) {

      return [$month => $group->firstWhere('month', $month)->total 

?? 0];

        });

    })

    ->toArray();

Hasil yang Diharapkan: Sistem harus menghitung jumlah pesanan bulanan dengan status "selesai" dan mengelompokkannya berdasarkan nama produk dengan benar.

Kasus Uji 3: Mengatur Filter Pesanan

Memverifikasi bahwa sistem mengatur filter pesanan dengan benar.

Kode:

<?php

public $filter = 'all'; // Default filter public function setFilter($filter) {

    $this->filter = $filter;

}

Hasil yang Diharapkan: Sistem harus mengatur filter pesanan sesuai dengan input pengguna.

Kasus Uji 4: Mengambil Pesanan Terbaru Berdasarkan Filter

Memverifikasi bahwa sistem mengambil pesanan terbaru berdasarkan filter dengan benar.

Kode:

<?php

$orderterbaru = Pemesanan::query();

if ($this->filter === 'today') {

    $orderterbaru->whereDate('created_at', Carbon::today());

} elseif ($this->filter === 'month') {

    $orderterbaru->whereMonth('created_at', Carbon::now()->month)         ->whereYear('created_at', Carbon::now()->year);

} elseif ($this->filter === 'pending') {     $orderterbaru->where('status', 'pending');

}

$orderterbaru = $orderterbaru->latest()->take(5)->get();

Hasil yang Diharapkan: Sistem harus mengambil pesanan terbaru sesuai dengan filter yang dipilih oleh pengguna.

h. Pengujian Wihite box Produk admin Dashboard Kasus Uji 1: Validasi Field

Memverifikasi bahwa sistem memvalidasi field dengan benar saat menambahkan atau mengedit produk.

Kode:

<?php

$this->validate([

    'nama' => 'required|string|max:255',

    'email' => 'required|string|email|max:255|unique:users,email,' . Auth::id(),     'alamat' => 'nullable|string|max:255',

    'avatar' => 'nullable|image|max:2048', // 2MB Max ]);

Hasil yang Diharapkan: Sistem harus menampilkan pesan kesalahan yang sesuai jika validasi gagal.

Kasus Uji 2: Menampilkan Daftar Produk

Memverifikasi bahwa sistem mengambil dan menampilkan daftar produk dengan benar.

Kode:

<?php

public function render() {

    $produk = Produk::paginate(10);

    // Initialize Banyak Produk, Max Pesan, Harga, dan Diskon Produk     foreach ($produk as $item) {

        $this->banyakProduk[$item->id] = $item->banyak_produk ?? 0;

        $this->maxPesan[$item->id] = $item->maxpesan ?? 0;

        $this->harga[$item->id] = $item->harga ?? 0;

        $this->diskonProduk[$item->id] = $item->diskon_produk ?? 0;

    }

    return view('livewire.dash-produk', [         'produk' => $produk,

    ]);

}

Hasil yang Diharapkan: Daftar produk diambil dan ditampilkan dengan benar.

Kasus Uji 3: Menambahkan Produk Baru

Memverifikasi bahwa sistem menambahkan produk baru dengan benar.

Kode:

<?php

public function create() {

    $this->validate([

        'nama' => 'required|string|max:255',         'deskripsi' => 'required|string',         'harga' => 'required|numeric|min:0',

        'banyakProduk' => 'required|numeric|min:0',         'maxPesan' => 'required|numeric|min:0',

        'diskonProduk' => 'required|numeric|min:0|max:100',     ]);

    Produk::create([

        'nama' => $this->nama,

        'deskripsi' => $this->deskripsi,

        'harga' => $this->harga,

        'banyak_produk' => $this->banyakProduk,         'maxpesan' => $this->maxPesan,

        'diskon_produk' => $this->diskonProduk,     ]);

    session()->flash('masuk');

    return $this->redirect('/dashboard/dash-produk', navigate: true);

}

Hasil yang Diharapkan: Produk baru ditambahkan dengan benar ke database.

Kasus Uji 4: Mengedit Produk

Memverifikasi bahwa sistem mengedit produk dengan benar.

Kode:

<?php

public function update($id) {

    $this->validate([

        'nama' => 'required|string|max:255',         'deskripsi' => 'required|string',         'harga' => 'required|numeric|min:0',

        'banyakProduk' => 'required|numeric|min:0',         'maxPesan' => 'required|numeric|min:0',

        'diskonProduk' => 'required|numeric|min:0|max:100',     ]);

    $produk = Produk::find($id);

    $produk->update([

        'nama' => $this->nama,

        'deskripsi' => $this->deskripsi,         'harga' => $this->harga,

        'banyak_produk' => $this->banyakProduk,         'maxpesan' => $this->maxPesan,

        'diskon_produk' => $this->diskonProduk,     ]);

    session()->flash('diedit');

    return $this->redirect('/dashboard/dash-produk', navigate: true);

}

Hasil yang Diharapkan: Produk berhasil diedit dan disimpan ke database.

Kasus Uji 5: Menghapus Produk

Deskripsi: Memverifikasi bahwa sistem menghapus produk dengan benar.

Kode:

<?php

public function delete($id) {

    $produk = Produk::find($id);

    Storage::delete('public/img/umkm/' . $produk->gambar);

    $produk->delete();

    return $this->redirect('/dashboard/dash-produk', navigate: true);

}

Hasil yang Diharapkan: Produk berhasil dihapus dari database dan file gambar terkait dihapus dari penyimpanan.

Kasus Uji 6: Mengedit Harga Produk

Memverifikasi bahwa sistem mengedit harga produk dengan benar.

Kode:

<?php

public function updateHarga($id) {

    $produk = Produk::find($id);

    if ($produk) {

        $produk->harga = $this->harga[$id];

        $produk->save();

    }

    session()->flash('diedit');

    return $this->redirect('/dashboard/dash-produk', navigate: true);

}

Hasil yang Diharapkan: Harga produk berhasil diperbarui di database.

Kasus Uji 7: Mengedit Banyak Produk

Memverifikasi bahwa sistem mengedit banyak produk dengan benar.

Kode:

<?php

public function updateBanyakProduk($id) {

    $produk = Produk::find($id);

    if ($produk) {

        $produk->banyak_produk = $this->banyakProduk[$id];

        $produk->save();

    }

    session()->flash('diedit');

    return $this->redirect('/dashboard/dash-produk', navigate: true);

}

Hasil yang Diharapkan: Banyak produk berhasil diperbarui di database.

Kasus Uji 8: Mengedit Max Pesan

Memverifikasi bahwa sistem mengedit max pesan dengan benar.

Kode:

<?php

public function updateMaxPesan($id) {

    $produk = Produk::find($id);

    if ($produk) {

        $produk->maxpesan = $this->maxPesan[$id];

        $produk->save();

    }

    session()->flash('diedit');

    return $this->redirect('/dashboard/dash-produk', navigate: true);

}

Hasil yang Diharapkan: Max pesan berhasil diperbarui di database.

Kasus Uji 9: Mengedit Diskon Produk

Memverifikasi bahwa sistem mengedit diskon produk dengan benar.

Kode:

<?php

public function updateDiskonProduk($id) {

    $produk = Produk::find($id);

    if ($produk) {

        $produk->diskon_produk = $this->diskonProduk[$id];

        $produk->save();

    }

    session()->flash('diedit');

    return $this->redirect('/dashboard/dash-produk', navigate: true);

}

Hasil yang Diharapkan: Diskon produk berhasil diperbarui di database.

i. Pengujian white Box Daftar Pemesanan Admin Dashboard Kasus Uji 1: Menampilkan Daftar Pemesanan

Memverifikasi bahwa daftar pemesanan ditampilkan dengan benar dengan syarat ada pesanan dalam database.

Langkah-langkah:

1. Login sebagai admin.

2. Buka halaman daftar pemesanan.

Hasil yang Diharapkan: Daftar pemesanan ditampilkan dengan benar, termasuk nama pembeli, jenis produk, nomor HP, banyak produk, status, dan bukti pembayaran.

Kasus Uji 2: Mencari Pemesanan

Memverifikasi bahwa admin dapat mencari pemesanan berdasarkan nama atau nomor HP.

Langkah-langkah:

1. Login sebagai admin.

2. Buka halaman daftar pemesanan.

3. Masukkan nama atau nomor HP di kotak pencarian.

Hasil yang Diharapkan: Daftar pemesanan yang sesuai dengan kriteria pencarian ditampilkan.

Kasus Uji 3: Mengubah Status Pemesanan

Memverifikasi bahwa admin dapat mengubah status pemesanan menjadi "selesai"

atau "dibatalkan" ,dengan syarat ada pemesanan dengan status "pending" dalam database.

Langkah-langkah:

1. Login sebagai admin.

2. Buka halaman daftar pemesanan.

3. Klik tombol "Selesai" atau "Batalkan" pada salah satu pemesanan dengan status "pending".

Hasil yang Diharapkan: Status pemesanan berhasil diubah dan pesan

"Status berhasil diubah" ditampilkan.

Kasus Uji 4: Menampilkan Bukti Pembayaran

Memverifikasi bahwa admin dapat melihat bukti pembayaran jika sudah diunggah, dengan syarat ada pemesanan dengan bukti pembayaran dalam database.

Langkah-langkah:

1. Login sebagai admin.

2. Buka halaman daftar pemesanan.

3. Klik tombol "Lihat Bukti" pada salah satu pemesanan dengan bukti pembayaran.

Hasil yang Diharapkan: Bukti pembayaran ditampilkan dalam modal.

Kasus Uji 5: Pembatalan Otomatis Pemesanan

Memverifikasi bahwa pemesanan dengan status "pending" lebih dari 24 jam dibatalkan secara otomatis dikarenakan ada pemesanan dengan status "pending"

lebih dari 24 jam dalam database.

Langkah-langkah:

1. Login sebagai admin.

2. Buka halaman daftar pemesanan.

Hasil yang Diharapkan: Pemesanan dengan status "pending" lebih dari 24 jam dibatalkan secara otomatis.

Pengujian White Box Daftar Pemesanan Admin Dashboard Kasus Uji 1: Validasi Akses Admin

Memverifikasi bahwa sistem memvalidasi akses admin dengan benar.

Kode:

<?php

public function mount() {

    if (auth()->user()->role !== 'admin') {

        abort(403, 'Mohon maaf Anda tidak memiliki akses ke halaman ini.

');

    }

    // Batalkan pesanan otomatis jika tidak ada bukti bayar dalam 24 jam     $this->cancelUnpaidOrders();

}

Hasil yang Diharapkan: Jika pengguna bukan admin, sistem harus mengembalikan kesalahan 403.

Kasus Uji 2: Menampilkan Daftar Pemesanan

Memverifikasi bahwa sistem mengambil dan menampilkan daftar pemesanan dengan benar.

Kode:

<?php

public function render() {

    $pemesananQuery = Pemesanan::query()         ->when($this->search, function ($query) {

      $query->where('nama', 'LIKE', '%' . $this->search . '%')       ->orWhere('nomor_hp', 'LIKE', '%' . $this->search . '%');

        })

        ->orderBy('created_at', 'desc')         ->paginate(10);

    return view('livewire.dash-pemesanan', [         'pemesanan' => $pemesananQuery     ]);

}

Hasil yang Diharapkan: Daftar pemesanan diambil dan ditampilkan dengan benar.

Kasus Uji 3: Mengubah Status Pemesanan

Deskripsi: Memverifikasi bahwa sistem mengubah status pemesanan dengan benar.

Kode:

<?php

public function updateStatus($id, $status) {

    $pemesanan = Pemesanan::find($id);

    if ($pemesanan) {

        $pemesanan->status = $status;

        $pemesanan->save();

        if ($status === 'selesai') {

      $produk = $pemesanan->produk;

      if ($produk) {

      $produk->banyak_produk -= $pemesanan->jumlah;

      $produk->save();

      }         }     } }

Hasil yang Diharapkan: Status pemesanan berhasil diubah dan jumlah produk diperbarui jika statusnya "selesai".

Kasus Uji 4: Pembatalan Otomatis Pemesanan

Memverifikasi bahwa sistem membatalkan pemesanan dengan status "pending"

lebih dari 24 jam dengan benar.

Kode:

<?php

public function cancelUnpaidOrders() {

    $unpaidOrders = Pemesanan::where('status', 'pending')         ->where('created_at', '<', Carbon::now()->subDay())         ->get();

    foreach ($unpaidOrders as $order) {         $order->status = 'dibatalkan';

        $order->save();

    } }

Hasil yang Diharapkan: Pemesanan dengan status "pending" lebih dari 24 jam dibatalkan secara otomatis.

Dari laporan kerja praktik yang telah disusun, dapat disimpulkan bahwa sistem pemesanan beras yang dirancang bertujuan untuk mempermudah pengelolaan data penjualan, pemesanan, dan laporan dalam satu platform yang terintegrasi. Proses login untuk pemilik (Owner) menjadi salah satu bagian penting dalam memastikan bahwa sistem hanya dapat diakses oleh pihak yang berwenang, dengan keamanan yang terjaga melalui validasi kredensial dan pengelolaan sesi pengguna. Diagram aktivitas menunjukkan alur proses yang sistematis, mulai dari input data hingga penyajian informasi yang dibutuhkan oleh pemilik.

Sistem yang dirancang memiliki kemampuan untuk memberikan notifikasi kesalahan saat login tidak berhasil, memproses data secara efisien, dan menampilkan laporan yang sesuai kebutuhan pengguna. Hal ini menunjukkan bahwa sistem telah dikembangkan dengan prinsip keandalan dan user-friendly sehingga dapat mendukung kegiatan operasional bisnis dengan lebih baik..

Dalam dokumen LAPORAN KERJA PRAKTEK kel 66 revisi (1) (Halaman 102-124)

Dokumen terkait