From d5416bad7c75ca41d0a43610ba1b33ec0ea773c2 Mon Sep 17 00:00:00 2001 From: James Cole Date: Thu, 26 Dec 2019 11:37:49 +0100 Subject: [PATCH] Final tests for #2723 --- .../Triggers/ToAccountNumberContainsTest.php | 164 +++++++++++++++ .../Triggers/ToAccountNumberEndsTest.php | 186 ++++++++++++++++++ .../Triggers/ToAccountNumberIsTest.php | 163 +++++++++++++++ .../Triggers/ToAccountNumberStartsTest.php | 180 +++++++++++++++++ 4 files changed, 693 insertions(+) create mode 100644 tests/Unit/TransactionRules/Triggers/ToAccountNumberContainsTest.php create mode 100644 tests/Unit/TransactionRules/Triggers/ToAccountNumberEndsTest.php create mode 100644 tests/Unit/TransactionRules/Triggers/ToAccountNumberIsTest.php create mode 100644 tests/Unit/TransactionRules/Triggers/ToAccountNumberStartsTest.php diff --git a/tests/Unit/TransactionRules/Triggers/ToAccountNumberContainsTest.php b/tests/Unit/TransactionRules/Triggers/ToAccountNumberContainsTest.php new file mode 100644 index 0000000000..9a6a353e16 --- /dev/null +++ b/tests/Unit/TransactionRules/Triggers/ToAccountNumberContainsTest.php @@ -0,0 +1,164 @@ +. + */ +declare(strict_types=1); + +namespace Tests\Unit\TransactionRules\Triggers; + +use FireflyIII\Models\AccountMeta; +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberContains; +use Illuminate\Support\Collection; +use Tests\TestCase; + +/** + * Class ToAccountNumberContainsTest + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings(PHPMD.TooManyPublicMethods) + */ +class ToAccountNumberContainsTest extends TestCase +{ + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberContains + */ + public function testTriggeredBoth(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data= '7027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberContains::makeFromStrings('7027', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberContains + */ + public function testTriggeredNumber(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data= '7027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberContains::makeFromStrings('7027', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberContains + */ + public function testTriggeredIban(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberContains::makeFromStrings('7027', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberContains + */ + public function testTriggeredNot(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberContains::makeFromStrings('some name' . random_int(1, 234), false); + $result = $trigger->triggered($journal); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberContains + */ + public function testWillMatchEverythingEmpty(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = ''; + $result = ToAccountNumberContains::willMatchEverything($value); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberContains + */ + public function testWillMatchEverythingNotNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = 'x'; + $result = ToAccountNumberContains::willMatchEverything($value); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberContains + */ + public function testWillMatchEverythingNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = null; + $result = ToAccountNumberContains::willMatchEverything($value); + $this->assertTrue($result); + } +} diff --git a/tests/Unit/TransactionRules/Triggers/ToAccountNumberEndsTest.php b/tests/Unit/TransactionRules/Triggers/ToAccountNumberEndsTest.php new file mode 100644 index 0000000000..0b481cd169 --- /dev/null +++ b/tests/Unit/TransactionRules/Triggers/ToAccountNumberEndsTest.php @@ -0,0 +1,186 @@ +. + */ +declare(strict_types=1); + +namespace Tests\Unit\TransactionRules\Triggers; + +use FireflyIII\Models\AccountMeta; +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds; +use Illuminate\Support\Collection; +use Tests\TestCase; + +/** + * Class ToAccountNumberEndsTest + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings(PHPMD.TooManyPublicMethods) + */ +class ToAccountNumberEndsTest extends TestCase +{ + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testTriggeredBoth(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data= '7027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberEnds::makeFromStrings('5181', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testTriggeredIban(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberEnds::makeFromStrings('5181', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testTriggeredNumber(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data= '7027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberEnds::makeFromStrings('5181', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testTriggeredLonger(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data= '7027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberEnds::makeFromStrings('bla-bla-bla' . $account->name, false); + $result = $trigger->triggered($journal); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testTriggeredNot(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberEnds::makeFromStrings((string)$this->randomInt(), false); + $result = $trigger->triggered($journal); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testWillMatchEverythingEmpty(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = ''; + $result = ToAccountNumberEnds::willMatchEverything($value); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testWillMatchEverythingNotNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = 'x'; + $result = ToAccountNumberEnds::willMatchEverything($value); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds + */ + public function testWillMatchEverythingNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = null; + $result = ToAccountNumberEnds::willMatchEverything($value); + $this->assertTrue($result); + } +} diff --git a/tests/Unit/TransactionRules/Triggers/ToAccountNumberIsTest.php b/tests/Unit/TransactionRules/Triggers/ToAccountNumberIsTest.php new file mode 100644 index 0000000000..14153d205c --- /dev/null +++ b/tests/Unit/TransactionRules/Triggers/ToAccountNumberIsTest.php @@ -0,0 +1,163 @@ +. + */ +declare(strict_types=1); + +namespace Tests\Unit\TransactionRules\Triggers; + +use FireflyIII\Models\AccountMeta; +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberIs; +use Illuminate\Support\Collection; +use Tests\TestCase; + +/** + * Class ToAccountNumberIsTest + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings(PHPMD.TooManyPublicMethods) + */ +class ToAccountNumberIsTest extends TestCase +{ + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberIs + */ + public function testTriggeredBoth(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data = 'FR7620041010053537027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberIs::makeFromStrings('FR7620041010053537027625181', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberIs + */ + public function testTriggeredIban(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberIs::makeFromStrings('FR7620041010053537027625181', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberIs + */ + public function testTriggeredNumber(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data = 'FR7620041010053537027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberIs::makeFromStrings('FR7620041010053537027625181', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberIs + */ + public function testTriggeredNot(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberIs::makeFromStrings('some name' . random_int(1, 234), false); + $result = $trigger->triggered($journal); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberIs + */ + public function testWillMatchEverythingEmpty(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = ''; + $result = ToAccountNumberIs::willMatchEverything($value); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberIs + */ + public function testWillMatchEverythingNotNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = 'x'; + $result = ToAccountNumberIs::willMatchEverything($value); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberIs + */ + public function testWillMatchEverythingNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = null; + $result = ToAccountNumberIs::willMatchEverything($value); + $this->assertTrue($result); + } +} diff --git a/tests/Unit/TransactionRules/Triggers/ToAccountNumberStartsTest.php b/tests/Unit/TransactionRules/Triggers/ToAccountNumberStartsTest.php new file mode 100644 index 0000000000..7a13a9c31a --- /dev/null +++ b/tests/Unit/TransactionRules/Triggers/ToAccountNumberStartsTest.php @@ -0,0 +1,180 @@ +. + */ +declare(strict_types=1); + +namespace Tests\Unit\TransactionRules\Triggers; + +use FireflyIII\Models\AccountMeta; +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts; +use Illuminate\Support\Collection; +use Tests\TestCase; + +/** + * Class ToAccountNumberStartsTest + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings(PHPMD.TooManyPublicMethods) + */ +class ToAccountNumberStartsTest extends TestCase +{ + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testTriggeredBoth(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data = 'FR7620041010053537027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberStarts::makeFromStrings('FR76', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testTriggeredIban(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $account->iban = 'FR7620041010053537027625181'; + $account->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberStarts::makeFromStrings('FR76', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testTriggeredNumber(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $meta = new AccountMeta; + $meta->account_id = $account->id; + $meta->name = 'account_number'; + $meta->data = 'FR7620041010053537027625181'; + $meta->save(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + + $trigger = ToAccountNumberStarts::makeFromStrings('FR76', false); + $result = $trigger->triggered($journal); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testTriggeredLonger(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberStarts::makeFromStrings('bla-bla-bla' . $account->name, false); + $result = $trigger->triggered($journal); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testTriggeredNot(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + + /** @var TransactionJournal $journal */ + $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); + $account = $this->user()->accounts()->inRandomOrder()->first(); + $repository->shouldReceive('getDestinationAccount')->once()->andReturn($account); + + $trigger = ToAccountNumberStarts::makeFromStrings('some name' . random_int(1, 234), false); + $result = $trigger->triggered($journal); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testWillMatchEverythingEmpty(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = ''; + $result = ToAccountNumberStarts::willMatchEverything($value); + $this->assertTrue($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testWillMatchEverythingNotNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = 'x'; + $result = ToAccountNumberStarts::willMatchEverything($value); + $this->assertFalse($result); + } + + /** + * @covers \FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts + */ + public function testWillMatchEverythingNull(): void + { + $repository = $this->mock(JournalRepositoryInterface::class); + $value = null; + $result = ToAccountNumberStarts::willMatchEverything($value); + $this->assertTrue($result); + } +}