mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-09-02 21:31:01 +00:00
54 lines
1.7 KiB
PHP
54 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Models\Customer;
|
|
use App\Models\Invoice;
|
|
use App\Models\Payment;
|
|
use App\Models\PaymentAllocation;
|
|
use App\Services\Document\PaymentService;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
|
|
beforeEach(function () {
|
|
Artisan::call('db:seed', ['--class' => 'DatabaseSeeder', '--force' => true]);
|
|
Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]);
|
|
});
|
|
|
|
test('payment receipt lists every allocated invoice and remaining credit', function () {
|
|
$customer = Customer::factory()->create();
|
|
$first = Invoice::factory()->create([
|
|
'company_id' => $customer->company_id,
|
|
'customer_id' => $customer->id,
|
|
'invoice_number' => 'INV-ALLOCATION-ONE',
|
|
]);
|
|
$second = Invoice::factory()->create([
|
|
'company_id' => $customer->company_id,
|
|
'customer_id' => $customer->id,
|
|
'invoice_number' => 'INV-ALLOCATION-TWO',
|
|
]);
|
|
$payment = Payment::factory()->create([
|
|
'company_id' => $customer->company_id,
|
|
'customer_id' => $customer->id,
|
|
'amount' => 1000,
|
|
'base_amount' => 1000,
|
|
]);
|
|
PaymentAllocation::factory()->create([
|
|
'payment_id' => $payment->id,
|
|
'invoice_id' => $first->id,
|
|
'amount' => 300,
|
|
'base_amount' => 300,
|
|
]);
|
|
PaymentAllocation::factory()->create([
|
|
'payment_id' => $payment->id,
|
|
'invoice_id' => $second->id,
|
|
'amount' => 400,
|
|
'base_amount' => 400,
|
|
]);
|
|
|
|
request()->query->set('preview', true);
|
|
$html = app(PaymentService::class)->getPdfData($payment)->render();
|
|
|
|
expect($html)
|
|
->toContain('INV-ALLOCATION-ONE')
|
|
->toContain('INV-ALLOCATION-TWO')
|
|
->toContain(__('unapplied_credit'));
|
|
});
|