setupUser(); }); it('renders the voucher page', function () { $this->actingAs($this->user); Livewire::test(MyVouchers::class) ->assertStatus(200) ->assertSee('Voucher Saya'); }); it('shows active vouchers data correctly', function () { $this->actingAs($this->user); $voucher = Voucher::factory()->create([ 'name' => 'Diskon Awal Tahun', 'code' => 'NEWYEAR2024', 'type' => VoucherType::FIXED, 'discount_amount' => 10000, 'start_date' => now()->subDay(), 'end_date' => now()->addDay(), ]); $this->user->vouchers()->attach($voucher->id, ['created_at' => now(), 'quantity' => 1]); Livewire::test(MyVouchers::class) ->assertSee('Diskon Awal Tahun') ->assertSee('NEWYEAR2024') ->assertSee('10.000'); // Formatted currency // ->assertSee('active'); // Status string (might need view check to confirm 'active' is literally printed or used as class) }); it('identifies expired vouchers', function () { $this->actingAs($this->user); $voucher = Voucher::factory()->create([ 'name' => 'Expired Voucher', 'start_date' => now()->subDays(10), 'end_date' => now()->subDays(1), ]); $this->user->vouchers()->attach($voucher->id, ['created_at' => now()->subDays(5)]); Livewire::test(MyVouchers::class) ->assertSee('Expired Voucher'); // Logic check: The component sets 'status' => 'expired'. valid assertion depends on view. }); it('identifies upcoming vouchers', function () { $this->actingAs($this->user); $voucher = Voucher::factory()->create([ 'name' => 'Future Voucher', 'start_date' => now()->addDays(5), ]); $this->user->vouchers()->attach($voucher->id); Livewire::test(MyVouchers::class) ->assertSee('Future Voucher'); });