. */ declare(strict_types=1); namespace Tests\Unit\TransactionRules\Triggers; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use FireflyIII\TransactionRules\Triggers\ToAccountEnds; use Illuminate\Support\Collection; use Tests\TestCase; /** * Class ToAccountEndsTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class ToAccountEndsTest extends TestCase { /** * @covers \FireflyIII\TransactionRules\Triggers\ToAccountEnds */ public function testTriggered(): void { $repository = $this->mock(JournalRepositoryInterface::class); /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); $account = $this->user()->accounts()->inRandomOrder()->first(); $collection = new Collection([$account]); $repository->shouldReceive('getJournalDestinationAccounts')->once()->andReturn($collection); $trigger = ToAccountEnds::makeFromStrings(substr($account->name, -3), false); $result = $trigger->triggered($journal); $this->assertTrue($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\ToAccountEnds */ public function testTriggeredLonger(): void { $repository = $this->mock(JournalRepositoryInterface::class); /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); $account = $this->user()->accounts()->inRandomOrder()->first(); $collection = new Collection([$account]); $repository->shouldReceive('getJournalDestinationAccounts')->once()->andReturn($collection); $trigger = ToAccountEnds::makeFromStrings('bla-bla-bla' . $account->name, false); $result = $trigger->triggered($journal); $this->assertFalse($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\ToAccountEnds */ public function testTriggeredNot(): void { $repository = $this->mock(JournalRepositoryInterface::class); /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); $account = $this->user()->accounts()->inRandomOrder()->first(); $collection = new Collection([$account]); $repository->shouldReceive('getJournalDestinationAccounts')->once()->andReturn($collection); $trigger = ToAccountEnds::makeFromStrings((string)$this->randomInt(), false); $result = $trigger->triggered($journal); $this->assertFalse($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\ToAccountEnds */ public function testWillMatchEverythingEmpty(): void { $repository = $this->mock(JournalRepositoryInterface::class); $value = ''; $result = ToAccountEnds::willMatchEverything($value); $this->assertTrue($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\ToAccountEnds */ public function testWillMatchEverythingNotNull(): void { $repository = $this->mock(JournalRepositoryInterface::class); $value = 'x'; $result = ToAccountEnds::willMatchEverything($value); $this->assertFalse($result); } /** * @covers \FireflyIII\TransactionRules\Triggers\ToAccountEnds */ public function testWillMatchEverythingNull(): void { $repository = $this->mock(JournalRepositoryInterface::class); $value = null; $result = ToAccountEnds::willMatchEverything($value); $this->assertTrue($result); } }