. */ 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\SetCategory; use Tests\TestCase; /** * Class SetCategoryTest */ class SetCategoryTest extends TestCase { /** * @covers \FireflyIII\TransactionRules\Actions\SetCategory::__construct() * @covers \FireflyIII\TransactionRules\Actions\SetCategory::act() */ public function testAct(): void { // get journal, remove all budgets $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $category = $journal->user->categories()->first(); $journal->categories()->detach(); $this->assertEquals(0, $journal->categories()->count()); // fire the action: $ruleAction = new RuleAction; $ruleAction->action_value = $category->name; $action = new SetCategory($ruleAction); $result = $action->act($journal); $this->assertTrue($result); /** @var Transaction $transaction */ foreach ($journal->transactions as $transaction) { $this->assertEquals(1, $transaction->categories()->count()); $this->assertEquals($category->name, $transaction->categories()->first()->name); } } }