. */ declare(strict_types=1); namespace Tests\Unit\TransactionRules\Actions; use FireflyIII\Models\RuleAction; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use FireflyIII\TransactionRules\Actions\ClearBudget; use Log; use Tests\TestCase; /** * Class ClearBudgetTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class ClearBudgetTest extends TestCase { /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\TransactionRules\Actions\ClearBudget */ public function testAct(): void { // associate budget with journal: $journal = $this->getRandomWithdrawal(); $budget = $this->getRandomBudget(); $journal->budgets()->save($budget); $this->assertGreaterThan(0, $journal->budgets()->count()); // fire the action: $ruleAction = new RuleAction; $ruleAction->action_value = null; $action = new ClearBudget($ruleAction); $result = $action->act($journal); $this->assertTrue($result); // assert result $this->assertEquals(0, $journal->budgets()->count()); /** @var Transaction $transaction */ foreach ($journal->transactions as $transaction) { $this->assertEquals(0, $transaction->budgets()->count()); } } }