From 61f7fbe95160fb7aa4636d2ebb2f1f9c4378f368 Mon Sep 17 00:00:00 2001 From: James Cole Date: Wed, 9 Jul 2014 13:35:33 +0200 Subject: [PATCH] Some more tests, don't know if they'll cover. --- app/models/Budget.php | 6 +++++- app/models/Category.php | 5 +++++ app/models/Component.php | 5 +++++ app/models/Transaction.php | 8 ++++++++ app/models/TransactionCurrency.php | 11 ++++++++-- app/models/TransactionJournal.php | 28 ++++++++++++++++++++------ app/models/TransactionType.php | 4 ++++ app/tests/models/AllModelsTest.php | 32 ++++++++++++++++++++++++++++++ 8 files changed, 90 insertions(+), 9 deletions(-) diff --git a/app/models/Budget.php b/app/models/Budget.php index 32041abb3c..de469c125d 100644 --- a/app/models/Budget.php +++ b/app/models/Budget.php @@ -3,6 +3,10 @@ class Budget extends Component { protected $isSubclass = true; - + public static $factory = [ + 'name' => 'string', + 'user_id' => 'factory|User', + 'class' => 'Budget' + ]; } \ No newline at end of file diff --git a/app/models/Category.php b/app/models/Category.php index b278b5909c..ead0ffac31 100644 --- a/app/models/Category.php +++ b/app/models/Category.php @@ -3,4 +3,9 @@ class Category extends Component { protected $isSubclass = true; + public static $factory = [ + 'name' => 'string', + 'user_id' => 'factory|User', + 'class' => 'Category' + ]; } \ No newline at end of file diff --git a/app/models/Component.php b/app/models/Component.php index a8d21c68e4..1775d77562 100644 --- a/app/models/Component.php +++ b/app/models/Component.php @@ -14,6 +14,11 @@ class Component extends Firefly\Database\SingleTableInheritanceEntity protected $table = 'components'; protected $subclassField = 'class'; + public static $factory = [ + 'name' => 'string', + 'user_id' => 'factory|User', + ]; + public function transactions() { return $this->belongsToMany('Transaction'); diff --git a/app/models/Transaction.php b/app/models/Transaction.php index 54e1df081d..eaea8e0c7c 100644 --- a/app/models/Transaction.php +++ b/app/models/Transaction.php @@ -11,6 +11,13 @@ class Transaction extends Elegant 'amount' => 'required|between:-65536,65536', ]; + public static $factory + = [ + 'account_id' => 'factory|Account', + 'transaction_journal_id' => 'factory|TransactionJournal', + 'description' => 'string', + 'amount' => 'integer:5' + ]; public function account() { @@ -31,6 +38,7 @@ class Transaction extends Elegant { return $this->belongsToMany('Budget'); } + public function categories() { return $this->belongsToMany('Category'); diff --git a/app/models/TransactionCurrency.php b/app/models/TransactionCurrency.php index cdc97aea30..d3c06ad319 100644 --- a/app/models/TransactionCurrency.php +++ b/app/models/TransactionCurrency.php @@ -1,9 +1,16 @@ 'string' + ]; + + public function transactionJournals() + { return $this->hasMany('TransactionJournal'); } diff --git a/app/models/TransactionJournal.php b/app/models/TransactionJournal.php index 8b6ff79e8d..3fc4aab322 100644 --- a/app/models/TransactionJournal.php +++ b/app/models/TransactionJournal.php @@ -13,6 +13,15 @@ class TransactionJournal extends Elegant 'completed' => 'required|between:0,1' ]; + public static $factory + = [ + 'transaction_type_id' => 'factory|TransactionType', + 'transaction_currency_id' => 'factory|TransactionCurrency', + 'description' => 'string', + 'completed' => '1', + 'date' => 'date|Y-m-d' + ]; + public function transactionType() { return $this->belongsTo('TransactionType'); @@ -35,12 +44,16 @@ class TransactionJournal extends Elegant public function budgets() { - return $this->belongsToMany('Budget','component_transaction_journal','transaction_journal_id','component_id'); + return $this->belongsToMany( + 'Budget', 'component_transaction_journal', 'transaction_journal_id', 'component_id' + ); } public function categories() { - return $this->belongsToMany('Category','component_transaction_journal','transaction_journal_id','component_id'); + return $this->belongsToMany( + 'Category', 'component_transaction_journal', 'transaction_journal_id', 'component_id' + ); } public function getDates() @@ -48,11 +61,14 @@ class TransactionJournal extends Elegant return array('created_at', 'updated_at', 'date'); } - public function scopeAfter($query, \Carbon\Carbon $date) { - return $query->where('date','>=',$date->format('Y-m-d')); + public function scopeAfter($query, \Carbon\Carbon $date) + { + return $query->where('date', '>=', $date->format('Y-m-d')); } - public function scopeBefore($query, \Carbon\Carbon $date) { - return $query->where('date','<=',$date->format('Y-m-d')); + + public function scopeBefore($query, \Carbon\Carbon $date) + { + return $query->where('date', '<=', $date->format('Y-m-d')); } } \ No newline at end of file diff --git a/app/models/TransactionType.php b/app/models/TransactionType.php index ce69ee75eb..57ef064b64 100644 --- a/app/models/TransactionType.php +++ b/app/models/TransactionType.php @@ -6,4 +6,8 @@ class TransactionType extends Eloquent { return $this->hasMany('TransactionJournal'); } + public static $factory = [ + 'type' => 'string' + ]; + } \ No newline at end of file diff --git a/app/tests/models/AllModelsTest.php b/app/tests/models/AllModelsTest.php index e7150eded5..ac70dadcba 100644 --- a/app/tests/models/AllModelsTest.php +++ b/app/tests/models/AllModelsTest.php @@ -52,4 +52,36 @@ class AllModelsTest extends TestCase $this->assertTrue(true); } + + /** + * Transaction journal tests. + */ + + public function testTransactionJournals() { + $tj = FactoryMuff::create('TransactionJournal'); + + $t1 = FactoryMuff::create('Transaction'); + $t2 = FactoryMuff::create('Transaction'); + $t3 = FactoryMuff::create('Transaction'); + + $tj->transactions()->save($t1); + $tj->transactions()->save($t2); + $tj->transactions()->save($t3); + + $budget = FactoryMuff::create('Budget'); + $category = FactoryMuff::create('Category'); + + $tj->components()->save($budget); + $tj->components()->save($category); + + $this->assertCount(2,$tj->components()->get()); + $this->assertCount(1,$tj->budgets()->get()); + $this->assertCount(1,$tj->categories()->get()); + + $this->assertCount(3,$tj->transactions()->get()); + + $this->assertEquals($tj->transaction_type_id,$tj->transactionType()->first()->id); + $this->assertEquals($tj->transaction_currency_id,$tj->transactionCurrency()->first()->id); + + } } \ No newline at end of file