Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

InvoiceTest.php 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. use App\Enums\Accounting\InvoiceStatus;
  3. use App\Models\Accounting\Invoice;
  4. use App\Utilities\Currency\CurrencyAccessor;
  5. beforeEach(function () {
  6. $this->defaultCurrency = CurrencyAccessor::getDefaultCurrency();
  7. $this->withOfferings();
  8. });
  9. it('creates a basic invoice with line items and calculates totals correctly', function () {
  10. $invoice = Invoice::factory()
  11. ->withLineItems()
  12. ->create();
  13. $invoice->refresh();
  14. expect($invoice)
  15. ->hasLineItems()->toBeTrue()
  16. ->lineItems->count()->toBe(3)
  17. ->subtotal->toBeGreaterThan(0)
  18. ->total->toBeGreaterThan(0)
  19. ->amount_due->toBe($invoice->total);
  20. });
  21. test('approved invoices are marked as Unsent when not Overdue', function () {
  22. $invoice = Invoice::factory()
  23. ->withLineItems()
  24. ->state([
  25. 'due_date' => now()->addDays(30),
  26. ])
  27. ->create();
  28. $invoice->refresh();
  29. $invoice->approveDraft();
  30. expect($invoice)
  31. ->hasLineItems()->toBeTrue()
  32. ->status->toBe(InvoiceStatus::Unsent)
  33. ->wasApproved()->toBeTrue()
  34. ->approvalTransaction->not->toBeNull();
  35. });
  36. test('approved invoices are marked as Overdue when Overdue', function () {
  37. $invoice = Invoice::factory()
  38. ->withLineItems()
  39. ->state([
  40. 'due_date' => now()->subDays(30),
  41. ])
  42. ->create();
  43. $invoice->refresh();
  44. $invoice->approveDraft();
  45. expect($invoice)
  46. ->hasLineItems()->toBeTrue()
  47. ->status->toBe(InvoiceStatus::Overdue)
  48. ->wasApproved()->toBeTrue()
  49. ->approvalTransaction->not->toBeNull();
  50. });