diff --git a/app/TransactionRules/Triggers/HasAnyBudget.php b/app/TransactionRules/Triggers/HasAnyBudget.php index 46bd011a64..224c4b9212 100644 --- a/app/TransactionRules/Triggers/HasAnyBudget.php +++ b/app/TransactionRules/Triggers/HasAnyBudget.php @@ -81,7 +81,7 @@ final class HasAnyBudget extends AbstractTrigger implements TriggerInterface } } - Log::debug(sprintf('RuleTrigger HasAnyBudget for journal #%d: count is %d, return false.', $journal->id, $count)); + Log::debug(sprintf('RuleTrigger HasAnyBudget for journal #%d: final is false.', $journal->id)); return false; } diff --git a/tests/Unit/TransactionRules/Triggers/HasAnyBudgetTest.php b/tests/Unit/TransactionRules/Triggers/HasAnyBudgetTest.php index fe532b16b0..d983ed8c64 100644 --- a/tests/Unit/TransactionRules/Triggers/HasAnyBudgetTest.php +++ b/tests/Unit/TransactionRules/Triggers/HasAnyBudgetTest.php @@ -25,6 +25,7 @@ namespace Tests\Unit\TransactionRules\Triggers; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use FireflyIII\TransactionRules\Triggers\HasAnyBudget; +use Log; use Tests\TestCase; /** @@ -43,9 +44,9 @@ class HasAnyBudgetTest extends TestCase $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $count = $journal->transactions()->count(); $loop++; - } while ($count !== 0 && $loop < 30); + } while ($count !== 2 && $loop < 30); - $budget = $journal->user->budgets()->first(); + $budget = $journal->user->budgets()->first(); $journal->budgets()->detach(); $journal->budgets()->save($budget); @@ -67,7 +68,7 @@ class HasAnyBudgetTest extends TestCase $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $count = $journal->transactions()->count(); $loop++; - } while ($count !== 0 && $loop < 30); + } while ($count !== 2 && $loop < 30); $journal->budgets()->detach(); $this->assertEquals(0, $journal->budgets()->count()); @@ -88,26 +89,37 @@ class HasAnyBudgetTest extends TestCase */ public function testTriggeredTransactions(): void { + Log::debug('Now in testTriggeredTransactions()'); $loop = 0; do { + Log::debug(sprintf('Loop is now at #%d', $loop)); /** @var TransactionJournal $journal */ $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $count = $journal->transactions()->count(); - $loop++; - } while ($count !== 0 && $loop < 30); - $budget = $journal->user->budgets()->first(); + Log::debug(sprintf('Found journal #%d with %d transactions', $journal->id, $count)); + + $loop++; + } while ($count !== 2 && $loop < 30); + Log::debug('end of loop!'); + + $budget = $journal->user->budgets()->first(); + Log::debug(sprintf('First budget is %d ("%s")', $budget->id, $budget->name)); $journal->budgets()->detach(); $this->assertEquals(0, $journal->budgets()->count()); + Log::debug('Survived the assumption.'); // append to transaction + Log::debug('Do transaction loop.'); foreach ($journal->transactions()->get() as $index => $transaction) { + Log::debug(sprintf('Now at index #%d, transaction #%d', $index, $transaction->id)); $transaction->budgets()->detach(); if (0 === $index) { + Log::debug('Index is zero, attach budget.'); $transaction->budgets()->save($budget); } } - + Log::debug('Done with loop, make trigger'); $trigger = HasAnyBudget::makeFromStrings('', false); $result = $trigger->triggered($journal); $this->assertTrue($result);