You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TrialBalanceReportTest.php 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. use App\Factories\ReportDateFactory;
  3. use App\Filament\Company\Pages\Reports\TrialBalance;
  4. use App\Models\Accounting\Transaction;
  5. use App\Utilities\Currency\CurrencyAccessor;
  6. use function Pest\Livewire\livewire;
  7. it('correctly builds a standard trial balance report', function () {
  8. $testCompany = $this->testCompany;
  9. $reportDatesDTO = ReportDateFactory::create($testCompany);
  10. $defaultDateRange = $reportDatesDTO->defaultDateRange;
  11. $defaultEndDate = $reportDatesDTO->defaultEndDate;
  12. $defaultReportType = 'standard';
  13. // Create transactions for the company
  14. Transaction::factory()
  15. ->forDefaultBankAccount()
  16. ->forUncategorizedRevenue()
  17. ->asDeposit(1000)
  18. ->count(10)
  19. ->create();
  20. $expectedBankAccountDebit = 10000;
  21. $expectedBankAccountCredit = 0;
  22. $defaultCurrencyCode = CurrencyAccessor::getDefaultCurrency();
  23. livewire(TrialBalance::class)
  24. ->assertFormSet([
  25. 'deferredFilters.reportType' => $defaultReportType,
  26. 'deferredFilters.dateRange' => $defaultDateRange,
  27. 'deferredFilters.asOfDate' => $defaultEndDate->toDateTimeString(),
  28. ])
  29. ->assertSet('filters', [
  30. 'reportType' => $defaultReportType,
  31. 'dateRange' => $defaultDateRange,
  32. 'asOfDate' => $defaultEndDate->toDateString(),
  33. ])
  34. ->call('applyFilters')
  35. ->assertDontSeeText('Retained Earnings')
  36. ->assertSeeTextInOrder([
  37. 'Cash on Hand',
  38. money($expectedBankAccountDebit, $defaultCurrencyCode, true),
  39. money($expectedBankAccountCredit, $defaultCurrencyCode, true),
  40. ])
  41. ->assertReportTableData();
  42. });
  43. it('correctly builds a post-closing trial balance report', function () {
  44. $testCompany = $this->testCompany;
  45. $reportDatesDTO = ReportDateFactory::create($testCompany);
  46. $defaultDateRange = $reportDatesDTO->defaultDateRange;
  47. $defaultEndDate = $reportDatesDTO->defaultEndDate;
  48. $defaultReportType = 'postClosing';
  49. // Create transactions for the company
  50. Transaction::factory()
  51. ->forDefaultBankAccount()
  52. ->forUncategorizedRevenue()
  53. ->asDeposit(1000)
  54. ->create();
  55. Transaction::factory()
  56. ->forDefaultBankAccount()
  57. ->forUncategorizedExpense()
  58. ->asWithdrawal(500)
  59. ->create();
  60. $expectedRetainedEarningsDebit = 0;
  61. $expectedRetainedEarningsCredit = 500;
  62. $defaultCurrencyCode = CurrencyAccessor::getDefaultCurrency();
  63. livewire(TrialBalance::class)
  64. ->set('deferredFilters.reportType', $defaultReportType)
  65. ->call('applyFilters')
  66. ->assertFormSet([
  67. 'deferredFilters.reportType' => $defaultReportType,
  68. 'deferredFilters.dateRange' => $defaultDateRange,
  69. 'deferredFilters.asOfDate' => $defaultEndDate->toDateTimeString(),
  70. ])
  71. ->assertSet('filters', [
  72. 'reportType' => $defaultReportType,
  73. 'dateRange' => $defaultDateRange,
  74. 'asOfDate' => $defaultEndDate->toDateString(),
  75. ])
  76. ->call('applyFilters')
  77. ->assertSeeTextInOrder([
  78. 'RE',
  79. 'Retained Earnings',
  80. money($expectedRetainedEarningsDebit, $defaultCurrencyCode, true),
  81. money($expectedRetainedEarningsCredit, $defaultCurrencyCode, true),
  82. ])
  83. ->assertSeeTextInOrder([
  84. 'Total Revenue',
  85. money(0, $defaultCurrencyCode, true),
  86. money(0, $defaultCurrencyCode, true),
  87. ])
  88. ->assertSeeTextInOrder([
  89. 'Total Expenses',
  90. money(0, $defaultCurrencyCode, true),
  91. money(0, $defaultCurrencyCode, true),
  92. ])
  93. ->assertReportTableData();
  94. });