. */ declare(strict_types=1); namespace Tests\Unit\TransactionRules\Triggers; use FireflyIII\Models\TransactionJournal; use FireflyIII\TransactionRules\Triggers\CategoryIs; use Tests\TestCase; /** * Class CategoryIsTest */ class CategoryIsTest extends TestCase { /** * @covers \FireflyIII\TransactionRules\Triggers\CategoryIs::triggered */ public function testTriggeredJournal(): void { $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $category = $journal->user->categories()->first(); $journal->categories()->detach(); $journal->categories()->save($category); $this->assertEquals(1, $journal->categories()->count()); $trigger = CategoryIs::makeFromStrings($category->name, false); $result = $trigger->triggered($journal); $this->assertTrue($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\CategoryIs::triggered */ public function testTriggeredNotJournal(): void { $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $category = $journal->user->categories()->first(); $otherCategory = $journal->user->categories()->where('id', '!=', $category->id)->first(); $journal->categories()->detach(); $journal->categories()->save($category); $this->assertEquals(1, $journal->categories()->count()); $trigger = CategoryIs::makeFromStrings($otherCategory->name, false); $result = $trigger->triggered($journal); $this->assertFalse($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\CategoryIs::triggered */ public function testTriggeredTransaction(): void { $journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first(); $transaction = $journal->transactions()->first(); $category = $journal->user->categories()->first(); $journal->categories()->detach(); $transaction->categories()->detach(); $transaction->categories()->save($category); $this->assertEquals(0, $journal->categories()->count()); $this->assertEquals(1, $transaction->categories()->count()); $trigger = CategoryIs::makeFromStrings($category->name, false); $result = $trigger->triggered($journal); $this->assertTrue($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\CategoryIs::willMatchEverything */ public function testWillMatchEverythingNotNull(): void { $value = 'x'; $result = CategoryIs::willMatchEverything($value); $this->assertFalse($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\CategoryIs::willMatchEverything */ public function testWillMatchEverythingNull(): void { $value = null; $result = CategoryIs::willMatchEverything($value); $this->assertTrue($result); } }