From d579992c98f8a3b7f3eda6ee2d34c05d4935637e Mon Sep 17 00:00:00 2001 From: James Cole Date: Thu, 4 Jun 2015 23:08:44 +0200 Subject: [PATCH] Slightly improved test coverage. --- tests/models/TransactionJournalModelTest.php | 254 ++++++++++++++++--- 1 file changed, 220 insertions(+), 34 deletions(-) diff --git a/tests/models/TransactionJournalModelTest.php b/tests/models/TransactionJournalModelTest.php index 26c98d80be..23e547620c 100644 --- a/tests/models/TransactionJournalModelTest.php +++ b/tests/models/TransactionJournalModelTest.php @@ -1,6 +1,5 @@ transactions[0]->account_id = $asset->id; - $withdrawal->transactions[0]->amount = -300; + $withdrawal->transactions[0]->amount = -300; $withdrawal->transactions[0]->save(); $withdrawal->transactions[1]->account_id = $expense->id; - $withdrawal->transactions[1]->amount = 300; + $withdrawal->transactions[1]->amount = 300; $withdrawal->transactions[1]->save(); $deposit->transactions[0]->account_id = $revenue->id; - $deposit->transactions[0]->amount = -89.88; + $deposit->transactions[0]->amount = -89.88; $deposit->transactions[0]->save(); $deposit->transactions[1]->account_id = $asset->id; - $deposit->transactions[1]->amount = 89.88; + $deposit->transactions[1]->amount = 89.88; $deposit->transactions[1]->save(); // connect to tag: @@ -149,27 +148,27 @@ class TransactionJournalModelTest extends TestCase $tag->transactionJournals()->save($transfer); // make accounts: - $expense = FactoryMuffin::create('FireflyIII\Models\Account'); + $expense = FactoryMuffin::create('FireflyIII\Models\Account'); $revenue = FactoryMuffin::create('FireflyIII\Models\Account'); - $asset = FactoryMuffin::create('FireflyIII\Models\Account'); + $asset = FactoryMuffin::create('FireflyIII\Models\Account'); $revenue->account_type_id = $asset->account_type_id; $revenue->save(); // transactions are already in place, update them: $withdrawal->transactions[0]->account_id = $asset->id; - $withdrawal->transactions[0]->amount = -123.45; + $withdrawal->transactions[0]->amount = -123.45; $withdrawal->transactions[0]->save(); $withdrawal->transactions[1]->account_id = $expense->id; - $withdrawal->transactions[1]->amount = 123.45; + $withdrawal->transactions[1]->amount = 123.45; $withdrawal->transactions[1]->save(); $transfer->transactions[0]->account_id = $revenue->id; - $transfer->transactions[0]->amount = -123.45; + $transfer->transactions[0]->amount = -123.45; $transfer->transactions[0]->save(); $transfer->transactions[1]->account_id = $asset->id; - $transfer->transactions[1]->amount = 123.45; + $transfer->transactions[1]->amount = 123.45; $transfer->transactions[1]->save(); $amount = $withdrawal->amount; @@ -220,11 +219,11 @@ class TransactionJournalModelTest extends TestCase $expense = FactoryMuffin::create('FireflyIII\Models\Account'); $asset = FactoryMuffin::create('FireflyIII\Models\Account'); - $withdrawal->transactions[0]->amount = -300; + $withdrawal->transactions[0]->amount = -300; $withdrawal->transactions[0]->account_id = $asset->id; $withdrawal->transactions[0]->save(); - $withdrawal->transactions[1]->amount = 300; + $withdrawal->transactions[1]->amount = 300; $withdrawal->transactions[1]->account_id = $expense->id; $withdrawal->transactions[1]->save(); @@ -256,11 +255,11 @@ class TransactionJournalModelTest extends TestCase // update transactions $deposit->transactions[0]->account_id = $asset->id; - $deposit->transactions[0]->amount = 300; + $deposit->transactions[0]->amount = 300; $deposit->transactions[0]->save(); $deposit->transactions[1]->account_id = $revenue->id; - $deposit->transactions[1]->amount = -300; + $deposit->transactions[1]->amount = -300; $deposit->transactions[1]->save(); @@ -275,7 +274,9 @@ class TransactionJournalModelTest extends TestCase */ public function testGetAssetAccountAttributeFallback() { - FactoryMuffin::create('FireflyIII\Models\TransactionType'); + + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // withdrawal + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // deposit // make accounts FactoryMuffin::create('FireflyIII\Models\Account'); @@ -283,21 +284,21 @@ class TransactionJournalModelTest extends TestCase $asset = FactoryMuffin::create('FireflyIII\Models\Account'); // make withdrawal - $depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType'); - $deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); - $deposit->transaction_type_id = $depositType->id; - $deposit->save(); + $transferType = FactoryMuffin::create('FireflyIII\Models\TransactionType'); // transfer + $transfer = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); + $transfer->transaction_type_id = $transferType->id; + $transfer->save(); - $deposit->transactions[0]->account_id = $asset->id; - $deposit->transactions[0]->amount = 300; - $deposit->transactions[0]->save(); + $transfer->transactions[0]->account_id = $asset->id; + $transfer->transactions[0]->amount = 300; + $transfer->transactions[0]->save(); - $deposit->transactions[1]->account_id = $revenue->id; - $deposit->transactions[1]->amount = -300; - $deposit->transactions[1]->save(); + $transfer->transactions[1]->account_id = $revenue->id; + $transfer->transactions[1]->amount = -300; + $transfer->transactions[1]->save(); // get asset account: - $result = $deposit->asset_account; + $result = $transfer->asset_account; $this->assertEquals($asset->id, $result->id); } @@ -318,13 +319,12 @@ class TransactionJournalModelTest extends TestCase $withdrawal->save(); - $withdrawal->transactions[0]->account_id = $asset->id; - $withdrawal->transactions[0]->amount = -300; + $withdrawal->transactions[0]->amount = -300; $withdrawal->transactions[0]->save(); $withdrawal->transactions[1]->account_id = $expense->id; - $withdrawal->transactions[1]->amount = 300; + $withdrawal->transactions[1]->amount = 300; $withdrawal->transactions[1]->save(); // get asset account: @@ -333,6 +333,102 @@ class TransactionJournalModelTest extends TestCase $this->assertEquals($asset->id, $result->id); } + /** + * @covers FireflyIII\Models\TransactionJournal::getCorrectAmountAttribute + */ + public function testGetCorrectAmountAttribute() + { + $withdrawal = FactoryMuffin::create('FireflyIII\Models\TransactionType'); // withdrawal + + // make accounts + FactoryMuffin::create('FireflyIII\Models\Account'); + $revenue = FactoryMuffin::create('FireflyIII\Models\Account'); + $asset = FactoryMuffin::create('FireflyIII\Models\Account'); + + // make withdrawal + $journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); + $journal->transaction_type_id = $withdrawal->id; + $journal->save(); + + $journal->transactions[0]->account_id = $asset->id; + $journal->transactions[0]->amount = 300; + $journal->transactions[0]->save(); + + $journal->transactions[1]->account_id = $revenue->id; + $journal->transactions[1]->amount = -300; + $journal->transactions[1]->save(); + + // get asset account: + $result = $journal->correct_amount; + + $this->assertEquals(-300, $result); + } + + /** + * @covers FireflyIII\Models\TransactionJournal::getCorrectAmountAttribute + */ + public function testGetCorrectAmountAttributeDeposit() + { + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // withdrawal + $deposit = FactoryMuffin::create('FireflyIII\Models\TransactionType'); // deposit + + // make accounts + FactoryMuffin::create('FireflyIII\Models\Account'); + $revenue = FactoryMuffin::create('FireflyIII\Models\Account'); + $asset = FactoryMuffin::create('FireflyIII\Models\Account'); + + // make withdrawal + $journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); + $journal->transaction_type_id = $deposit->id; + $journal->save(); + + $journal->transactions[0]->account_id = $asset->id; + $journal->transactions[0]->amount = 300; + $journal->transactions[0]->save(); + + $journal->transactions[1]->account_id = $revenue->id; + $journal->transactions[1]->amount = -300; + $journal->transactions[1]->save(); + + // get asset account: + $result = $journal->correct_amount; + + $this->assertEquals(300, $result); + } + + /** + * @covers FireflyIII\Models\TransactionJournal::getCorrectAmountAttribute + */ + public function testGetCorrectAmountAttributeTransfer() + { + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // withdrawal + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // deposit + $transfer = FactoryMuffin::create('FireflyIII\Models\TransactionType'); // transfer + + // make accounts + FactoryMuffin::create('FireflyIII\Models\Account'); + $revenue = FactoryMuffin::create('FireflyIII\Models\Account'); + $asset = FactoryMuffin::create('FireflyIII\Models\Account'); + + // make withdrawal + $journal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); + $journal->transaction_type_id = $transfer->id; + $journal->save(); + + $journal->transactions[0]->account_id = $asset->id; + $journal->transactions[0]->amount = 300; + $journal->transactions[0]->save(); + + $journal->transactions[1]->account_id = $revenue->id; + $journal->transactions[1]->amount = -300; + $journal->transactions[1]->save(); + + // get asset account: + $result = $journal->correct_amount; + + $this->assertEquals('0', $result); + } + /** * @covers FireflyIII\Models\TransactionJournal::getDestinationAccountAttribute */ @@ -350,11 +446,11 @@ class TransactionJournalModelTest extends TestCase $asset = FactoryMuffin::create('FireflyIII\Models\Account'); $deposit->transactions[0]->account_id = $asset->id; - $deposit->transactions[0]->amount = 300; + $deposit->transactions[0]->amount = 300; $deposit->transactions[0]->save(); $deposit->transactions[1]->account_id = $revenue->id; - $deposit->transactions[1]->amount = -300; + $deposit->transactions[1]->amount = -300; $deposit->transactions[1]->save(); // get asset account: @@ -380,11 +476,11 @@ class TransactionJournalModelTest extends TestCase $asset = FactoryMuffin::create('FireflyIII\Models\Account'); $deposit->transactions[0]->account_id = $asset->id; - $deposit->transactions[0]->amount = -300; + $deposit->transactions[0]->amount = -300; $deposit->transactions[0]->save(); $deposit->transactions[1]->account_id = $revenue->id; - $deposit->transactions[1]->amount = -300; + $deposit->transactions[1]->amount = -300; $deposit->transactions[1]->save(); // get asset account: @@ -393,4 +489,94 @@ class TransactionJournalModelTest extends TestCase $this->assertEquals($asset->id, $result->id); } + /** + * @covers FireflyIII\Models\TransactionJournal::getExpenseAccountAttribute + */ + public function testGetExpenseAccountAttribute() + { + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // withdrawal + $depositType = FactoryMuffin::create('FireflyIII\Models\TransactionType'); // deposit + $deposit = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); + $deposit->transaction_type_id = $depositType->id; + $deposit->save(); + + // make accounts + FactoryMuffin::create('FireflyIII\Models\Account'); + $revenue = FactoryMuffin::create('FireflyIII\Models\Account'); + $asset = FactoryMuffin::create('FireflyIII\Models\Account'); + + $deposit->transactions[0]->account_id = $asset->id; + $deposit->transactions[0]->amount = 300; + $deposit->transactions[0]->save(); + + $deposit->transactions[1]->account_id = $revenue->id; + $deposit->transactions[1]->amount = -300; + $deposit->transactions[1]->save(); + + // get asset account: + $result = $deposit->expense_account; + + $this->assertEquals($revenue->id, $result->id); + } + + /** + * @covers FireflyIII\Models\TransactionJournal::getExpenseAccountAttribute + */ + public function testGetExpenseAccountAttributeFallback() + { + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // withdrawal + FactoryMuffin::create('FireflyIII\Models\TransactionType'); // deposit + $transferType = FactoryMuffin::create('FireflyIII\Models\TransactionType'); // transfer + $transfer = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); + $transfer->transaction_type_id = $transferType->id; + $transfer->save(); + + // make accounts + FactoryMuffin::create('FireflyIII\Models\Account'); + $revenue = FactoryMuffin::create('FireflyIII\Models\Account'); + $asset = FactoryMuffin::create('FireflyIII\Models\Account'); + + $transfer->transactions[0]->account_id = $asset->id; + $transfer->transactions[0]->amount = 300; + $transfer->transactions[0]->save(); + + $transfer->transactions[1]->account_id = $revenue->id; + $transfer->transactions[1]->amount = -300; + $transfer->transactions[1]->save(); + + // get asset account: + $result = $transfer->expense_account; + + $this->assertEquals($asset->id, $result->id); + } + + /** + * @covers FireflyIII\Models\TransactionJournal::getExpenseAccountAttribute + */ + public function testGetExpenseAccountAttributeWithdrawal() + { + $withdrawalType = FactoryMuffin::create('FireflyIII\Models\TransactionType'); // withdrawal + $withdrawal = FactoryMuffin::create('FireflyIII\Models\TransactionJournal'); + $withdrawal->transaction_type_id = $withdrawalType->id; + $withdrawal->save(); + + // make accounts + FactoryMuffin::create('FireflyIII\Models\Account'); + $revenue = FactoryMuffin::create('FireflyIII\Models\Account'); + $asset = FactoryMuffin::create('FireflyIII\Models\Account'); + + $withdrawal->transactions[0]->account_id = $asset->id; + $withdrawal->transactions[0]->amount = 300; + $withdrawal->transactions[0]->save(); + + $withdrawal->transactions[1]->account_id = $revenue->id; + $withdrawal->transactions[1]->amount = -300; + $withdrawal->transactions[1]->save(); + + // get asset account: + $result = $withdrawal->expense_account; + + $this->assertEquals($asset->id, $result->id); + } + }