. */ declare(strict_types=1); namespace Tests\Unit\TransactionRules\Triggers; use FireflyIII\Models\TransactionJournal; use FireflyIII\TransactionRules\Triggers\HasAnyBudget; use Tests\TestCase; /** * Class HasAnyBudgetTest */ class HasAnyBudgetTest extends TestCase { /** * @covers \FireflyIII\TransactionRules\Triggers\HasAnyBudget::triggered */ public function testTriggered() { $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $budget = $journal->user->budgets()->first(); $journal->budgets()->detach(); $journal->budgets()->save($budget); $this->assertEquals(1, $journal->budgets()->count()); $trigger = HasAnyBudget::makeFromStrings('', false); $result = $trigger->triggered($journal); $this->assertTrue($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\HasAnyBudget::triggered */ public function testTriggeredNot() { $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $journal->budgets()->detach(); $this->assertEquals(0, $journal->budgets()->count()); $trigger = HasAnyBudget::makeFromStrings('', false); $result = $trigger->triggered($journal); $this->assertFalse($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\HasAnyBudget::triggered */ public function testTriggeredTransactions() { $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $budget = $journal->user->budgets()->first(); $journal->budgets()->detach(); $this->assertEquals(0, $journal->budgets()->count()); // append to transaction foreach ($journal->transactions()->get() as $index => $transaction) { $transaction->budgets()->detach(); if (0 === $index) { $transaction->budgets()->save($budget); } } $trigger = HasAnyBudget::makeFromStrings('', false); $result = $trigger->triggered($journal); $this->assertTrue($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\HasAnyBudget::willMatchEverything */ public function testWillMatchEverything() { $value = ''; $result = HasAnyBudget::willMatchEverything($value); $this->assertFalse($result); } }