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..