mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Fixed the account controller and tests.
This commit is contained in:
parent
99500d6201
commit
913b5fd267
@ -1,14 +1,19 @@
|
||||
<?php
|
||||
|
||||
use Mockery as m;
|
||||
use \League\FactoryMuffin\Facade\FactoryMuffin as f;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Mockery as m;
|
||||
use Zizaco\FactoryMuff\Facade\FactoryMuff as f;
|
||||
|
||||
/**
|
||||
* Class AccountControllerTest
|
||||
*/
|
||||
class AccountControllerTest extends TestCase
|
||||
{
|
||||
protected $_repository;
|
||||
protected $_user;
|
||||
protected $_accounts;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
@ -17,7 +22,7 @@ class AccountControllerTest extends TestCase
|
||||
$this->_repository = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$this->_accounts = $this->mock('Firefly\Helper\Controllers\AccountInterface');
|
||||
$this->_user = m::mock('User', 'Eloquent');
|
||||
$this->app->instance('User', $this->_user);
|
||||
// $this->app->instance('User', $this->_user);
|
||||
|
||||
}
|
||||
|
||||
@ -37,10 +42,12 @@ class AccountControllerTest extends TestCase
|
||||
{
|
||||
|
||||
$account = f::create('Account');
|
||||
|
||||
// for successful binding:
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn($account->email);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email');
|
||||
|
||||
$this->action('GET', 'AccountController@delete', $account->id);
|
||||
$this->assertResponseOk();
|
||||
@ -49,8 +56,13 @@ class AccountControllerTest extends TestCase
|
||||
public function testDestroy()
|
||||
{
|
||||
$account = f::create('Account');
|
||||
|
||||
// for successful binding:
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
$this->_repository->shouldReceive('destroy')->once()->with("")->andReturn(true);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
$this->_repository->shouldReceive('destroy')->once()->andReturn(true);
|
||||
|
||||
$this->action('POST', 'AccountController@destroy', $account->id);
|
||||
$this->assertRedirectedToRoute('accounts.index');
|
||||
$this->assertSessionHas('success');
|
||||
@ -59,7 +71,13 @@ class AccountControllerTest extends TestCase
|
||||
public function testDestroyFails()
|
||||
{
|
||||
$account = f::create('Account');
|
||||
$this->_repository->shouldReceive('destroy')->once()->with("")->andReturn(false);
|
||||
|
||||
// for successful binding:
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
$this->_repository->shouldReceive('destroy')->once()->andReturn(false);
|
||||
|
||||
$this->action('POST', 'AccountController@destroy', $account->id);
|
||||
$this->assertRedirectedToRoute('accounts.index');
|
||||
$this->assertSessionHas('error');
|
||||
@ -69,10 +87,17 @@ class AccountControllerTest extends TestCase
|
||||
{
|
||||
$account = f::create('Account');
|
||||
|
||||
// for successful binding.
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn($account->email);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email');
|
||||
|
||||
|
||||
// Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
// Auth::shouldReceive('check')->andReturn(true);
|
||||
// $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
// $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn($account->email);
|
||||
$this->_accounts->shouldReceive('openingBalanceTransaction')->once()->andReturn(null);
|
||||
|
||||
$this->action('GET', 'AccountController@edit', $account->id);
|
||||
@ -102,11 +127,42 @@ class AccountControllerTest extends TestCase
|
||||
{
|
||||
$account = f::create('Account');
|
||||
|
||||
// for successful binding.
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
$this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn($account->email);
|
||||
$this->_accounts->shouldReceive('paginate')->with($account,40)->once()->andReturn();
|
||||
$this->session(['start' => new Carbon, 'end' => new Carbon]);
|
||||
|
||||
// some more mockery
|
||||
$paginator = \Paginator::make([], 0, 10);
|
||||
|
||||
$data = [
|
||||
'statistics' => [
|
||||
'period' => [
|
||||
'in' => 0,
|
||||
'out' => 0,
|
||||
'diff' => 0,
|
||||
't_in' => 0,
|
||||
't_out' => 0,
|
||||
't_diff' => 0
|
||||
],
|
||||
'categories' => [],
|
||||
'budgets' => [],
|
||||
'accounts' => []
|
||||
],
|
||||
'journals' => $paginator,
|
||||
];
|
||||
|
||||
$this->_accounts->shouldReceive('show')->once()->andReturn($data);
|
||||
|
||||
//$this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email');
|
||||
|
||||
// Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
// Auth::shouldReceive('check')->andReturn(true);
|
||||
// $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
// $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn($account->email);
|
||||
// $this->_accounts->shouldReceive('paginate')->with($account,40)->once()->andReturn();
|
||||
|
||||
$this->action('GET', 'AccountController@show', $account->id);
|
||||
$this->assertResponseOk();
|
||||
@ -114,8 +170,54 @@ class AccountControllerTest extends TestCase
|
||||
|
||||
public function testStore()
|
||||
{
|
||||
// $this->action('POST', 'AccountController@store');
|
||||
// $this->assertResponseOk();
|
||||
$account = f::create('Account');
|
||||
$this->_repository->shouldReceive('store')->andReturn($account);
|
||||
$this->action('POST', 'AccountController@store');
|
||||
$this->assertRedirectedToRoute('accounts.index');
|
||||
}
|
||||
public function testStoreRecreate()
|
||||
{
|
||||
$account = f::create('Account');
|
||||
$this->_repository->shouldReceive('store')->andReturn($account);
|
||||
$this->action('POST', 'AccountController@store',['create' => '1']);
|
||||
$this->assertRedirectedToRoute('accounts.create');
|
||||
}
|
||||
|
||||
public function testStoreFails()
|
||||
{
|
||||
$account = f::create('Account');
|
||||
unset($account->id);
|
||||
$this->_repository->shouldReceive('store')->andReturn($account);
|
||||
$this->action('POST', 'AccountController@store');
|
||||
$this->assertRedirectedToRoute('accounts.create');
|
||||
}
|
||||
|
||||
public function testUpdate()
|
||||
{
|
||||
$account = f::create('Account');
|
||||
// for successful binding.
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
$this->_repository->shouldReceive('update')->andReturn($account);
|
||||
|
||||
$this->action('POST', 'AccountController@update',$account->id);
|
||||
$this->assertRedirectedToRoute('accounts.index');
|
||||
|
||||
}
|
||||
public function testUpdateFails()
|
||||
{
|
||||
$account = f::create('Account');
|
||||
unset($account->name);
|
||||
// for successful binding.
|
||||
Auth::shouldReceive('user')->andReturn($this->_user);
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
$this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id);
|
||||
$this->_repository->shouldReceive('update')->andReturn($account);
|
||||
|
||||
$this->action('POST', 'AccountController@update',$account->id);
|
||||
$this->assertRedirectedToRoute('accounts.edit',$account->id);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -204,7 +306,5 @@ class AccountControllerTest extends TestCase
|
||||
//// }
|
||||
////
|
||||
|
||||
public function testUpdate()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
use League\FactoryMuffin\Facade\FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Class BudgetControllerTest
|
||||
*/
|
||||
class BudgetControllerTest extends TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
Artisan::call('migrate');
|
||||
Artisan::call('db:seed');
|
||||
}
|
||||
|
||||
public function testIndex()
|
||||
{
|
||||
// create some objects:
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
$limit = FactoryMuffin::create('Limit');
|
||||
$rep = FactoryMuffin::create('LimitRepetition');
|
||||
$limit->limitrepetitions()->save($rep);
|
||||
$budget->limits()->save($limit);
|
||||
|
||||
|
||||
// mock budget repository:
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('get')->once()->andReturn([$budget]);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/budgets/date');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testIndexBudget()
|
||||
{
|
||||
// create some objects:
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
$limit = FactoryMuffin::create('Limit');
|
||||
$rep = FactoryMuffin::create('LimitRepetition');
|
||||
$limit->limitrepetitions()->save($rep);
|
||||
$budget->limits()->save($limit);
|
||||
|
||||
|
||||
// mock budget repository:
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('get')->once()->andReturn([$budget]);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/budgets/budget');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testCreate()
|
||||
{
|
||||
// call
|
||||
$this->call('GET', '/budget/create');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testStore()
|
||||
{
|
||||
$data = [
|
||||
'name' => 'X',
|
||||
'amount' => 100,
|
||||
'period' => 'monthly',
|
||||
'repeats' => 0
|
||||
];
|
||||
$return = $data;
|
||||
$return['repeat_freq'] = 'monthly';
|
||||
unset($return['period']);
|
||||
|
||||
// mock budget repository:
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('store')->with($return)->once()->andReturn(true);
|
||||
|
||||
// call
|
||||
$this->call('POST', '/budget/store', $data);
|
||||
|
||||
// test
|
||||
$this->assertResponseStatus(302);
|
||||
$this->assertSessionHas('success');
|
||||
}
|
||||
|
||||
public function testShow()
|
||||
{
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
$transaction = FactoryMuffin::create('Transaction');
|
||||
$journal->transactions()->save($transaction);
|
||||
$budget->transactionjournals()->save($journal);
|
||||
|
||||
|
||||
// mock budget repository:
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('find')->with($budget->id)->once()->andReturn($budget);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/budget/show/' . $budget->id);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,212 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\FactoryMuffin\Facade\FactoryMuffin;
|
||||
|
||||
class ChartControllerTest extends TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
Artisan::call('migrate');
|
||||
Artisan::call('db:seed');
|
||||
}
|
||||
|
||||
public function testHomeAccount()
|
||||
{
|
||||
// mock preference:
|
||||
$pref2 = $this->mock('Preference');
|
||||
$pref2->shouldReceive('getAttribute', 'data')->andReturn([]);
|
||||
|
||||
// mock preferences helper:
|
||||
$preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
||||
$preferences->shouldReceive('get')->with('frontpageAccounts', [])->once()->andReturn($pref2);
|
||||
|
||||
|
||||
// mock toolkit:
|
||||
$start = new Carbon\Carbon;
|
||||
$start->startOfMonth();
|
||||
$end = new \Carbon\Carbon;
|
||||
$end->endOfMonth();
|
||||
$toolkit = $this->mock('Firefly\Helper\Toolkit\ToolkitInterface');
|
||||
$toolkit->shouldReceive('getDateRange')->with()->once()->andReturn([$start, $end]);
|
||||
|
||||
// create a semi-mocked collection of accounts:
|
||||
|
||||
// mock account(s)
|
||||
$personal = $this->mock('AccountType');
|
||||
$personal->shouldReceive('jsonSerialize')->andReturn('');
|
||||
|
||||
$one = $this->mock('Account');
|
||||
$one->shouldReceive('getAttribute')->andReturn($personal);
|
||||
$one->shouldReceive('balance')->andReturn(0);
|
||||
$one->shouldReceive('predict')->andReturn(null);
|
||||
|
||||
// collection:
|
||||
$c = new \Illuminate\Database\Eloquent\Collection([$one]);
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('getActiveDefault')->andReturn($c);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/chart/home/account');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testHomeAccountWithPref()
|
||||
{
|
||||
|
||||
// mock toolkit:
|
||||
$start = new Carbon\Carbon;
|
||||
$start->startOfMonth();
|
||||
$end = new \Carbon\Carbon;
|
||||
$end->endOfMonth();
|
||||
$toolkit = $this->mock('Firefly\Helper\Toolkit\ToolkitInterface');
|
||||
$toolkit->shouldReceive('getDateRange')->with()->once()->andReturn([$start, $end]);
|
||||
|
||||
// mock account(s)
|
||||
$personal = $this->mock('AccountType');
|
||||
$personal->shouldReceive('jsonSerialize')->andReturn('');
|
||||
|
||||
$one = $this->mock('Account');
|
||||
$one->shouldReceive('getAttribute')->andReturn($personal);
|
||||
$one->shouldReceive('balance')->andReturn(0);
|
||||
$one->shouldReceive('predict')->andReturn(null);
|
||||
|
||||
// collection:
|
||||
$c = new \Illuminate\Database\Eloquent\Collection([$one]);
|
||||
|
||||
// mock preference:
|
||||
$pref2 = $this->mock('Preference');
|
||||
$pref2->shouldReceive('getAttribute', 'data')->andReturn([$one->id]);
|
||||
|
||||
// mock preferences helper:
|
||||
$preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
||||
$preferences->shouldReceive('get')->with('frontpageAccounts', [])->once()->andReturn($pref2);
|
||||
|
||||
|
||||
// create a semi-mocked collection of accounts:
|
||||
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('getByIds')->andReturn($c);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/chart/home/account');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testHomeAccountWithInput()
|
||||
{
|
||||
// save actual account:
|
||||
$account = FactoryMuffin::create('Account');
|
||||
|
||||
// mock toolkit:
|
||||
$start = new Carbon\Carbon;
|
||||
$start->startOfMonth();
|
||||
$end = new \Carbon\Carbon;
|
||||
$end->endOfMonth();
|
||||
$toolkit = $this->mock('Firefly\Helper\Toolkit\ToolkitInterface');
|
||||
$toolkit->shouldReceive('getDateRange')->with()->once()->andReturn([$start, $end]);
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('find')->with(1)->andReturn($account);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/chart/home/account/' . $account->id);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testhomeCategories()
|
||||
{
|
||||
$start = new \Carbon\Carbon;
|
||||
$end = new \Carbon\Carbon;
|
||||
|
||||
// mock journals:
|
||||
$transaction = FactoryMuffin::create('Transaction');
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
$journal->transactions()->save($transaction);
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('getByDateRange')->once()->with($start, $end)->andReturn([$journal]);
|
||||
|
||||
|
||||
// mock toolkit
|
||||
$toolkit = $this->mock('Firefly\Helper\Toolkit\ToolkitInterface');
|
||||
$toolkit->shouldReceive('getDateRange')->andReturn([$start, $end]);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/chart/home/categories');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Firefly\Exception\FireflyException
|
||||
*/
|
||||
public function testhomeCategoriesException()
|
||||
{
|
||||
$start = new \Carbon\Carbon;
|
||||
$end = new \Carbon\Carbon;
|
||||
|
||||
// mock journals:
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('getByDateRange')->once()->with($start, $end)->andReturn([$journal]);
|
||||
|
||||
|
||||
// mock toolkit
|
||||
$toolkit = $this->mock('Firefly\Helper\Toolkit\ToolkitInterface');
|
||||
$toolkit->shouldReceive('getDateRange')->andReturn([$start, $end]);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/chart/home/categories');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testHomeAccountInfo()
|
||||
{
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$second = FactoryMuffin::create('Account');
|
||||
$date = \Carbon\Carbon::createFromDate('2012', '01', '01');
|
||||
$transaction = FactoryMuffin::create('Transaction');
|
||||
$transaction->account()->associate($second);
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
$journal->transactions()->save($transaction);
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('findByName')->with($account->name)->andReturn($account);
|
||||
|
||||
// mock journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('getByAccountAndDate')->once()->andReturn([$journal]);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/chart/home/info/' . $account->name . '/' . $date->format('d/m/Y'));
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
|
||||
|
||||
} //($name, $day, $month, $year)
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
}
|
@ -1,94 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\FactoryMuffin\Facade\FactoryMuffin;
|
||||
|
||||
/**
|
||||
* Class HomeControllerTest
|
||||
*/
|
||||
class HomeControllerTest extends TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
Artisan::call('migrate');
|
||||
Artisan::call('db:seed');
|
||||
}
|
||||
|
||||
public function testIndex()
|
||||
{
|
||||
// mock:
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('index')->once()->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once() // Pass a 'with' parameter
|
||||
->with('count', 0)->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once() // Pass a 'with' parameter
|
||||
->with('transactions', [])->andReturn(\Mockery::self());
|
||||
|
||||
// pass another
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
|
||||
|
||||
// mock account repository
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('count')->andReturn(0);
|
||||
$accounts->shouldReceive('getActiveDefault')->andReturn([]);
|
||||
|
||||
// mock preferences & pref:
|
||||
$pref = $this->mock('Preference');
|
||||
$pref->shouldReceive('getAttribute', 'data')->andReturn([]);
|
||||
|
||||
$preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
||||
$preferences->shouldReceive('get')->with('frontpageAccounts', [])->once()->andReturn($pref);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testIndexWithAccounts()
|
||||
{
|
||||
// mock:
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('index')->once()->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once() // Pass a 'with' parameter
|
||||
->with('count', 1)->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once() // Pass a 'with' parameter
|
||||
->with('transactions', [])->andReturn(\Mockery::self());
|
||||
|
||||
// pass another
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
|
||||
// make account:
|
||||
$account = FactoryMuffin::create('Account');
|
||||
|
||||
|
||||
// mock account repository
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('count')->andReturn(1);
|
||||
$accounts->shouldReceive('getByIds')->with([$account->id])->andReturn([$account]);
|
||||
|
||||
// mock transaction journal repository:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('getByAccount')->with($account, 15)->andReturn([]);
|
||||
|
||||
// mock preferences & pref:
|
||||
$pref = $this->mock('Preference');
|
||||
$pref->shouldReceive('getAttribute', 'data')->andReturn([$account->id]);
|
||||
|
||||
$preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
||||
$preferences->shouldReceive('get')->with('frontpageAccounts', [])->once()->andReturn($pref);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
class JsonControllerTest extends TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
public function testBeneficiaries()
|
||||
{
|
||||
|
||||
$obj = new stdClass;
|
||||
$obj->name = 'Bla bla';
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('getBeneficiaries')->andReturn([$obj]);
|
||||
|
||||
$this->call('GET', '/json/beneficiaries');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
|
||||
}
|
||||
|
||||
public function testCategories()
|
||||
{
|
||||
$obj = new stdClass;
|
||||
$obj->name = 'Bla bla';
|
||||
|
||||
// mock category repository:
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('get')->andReturn([$obj]);
|
||||
|
||||
$this->call('GET', '/json/categories');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
class MigrationControllerTest extends TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
public function testIndex()
|
||||
{
|
||||
// mock:
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('migrate.index');
|
||||
|
||||
// call
|
||||
$this->call('GET', '/migrate');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
<?php
|
||||
|
||||
class PreferencesControllerTest extends TestCase
|
||||
{
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
public function testIndex()
|
||||
{
|
||||
|
||||
// mock preferences helper:
|
||||
$pref = $this->mock('Preference');
|
||||
$pref->shouldReceive('getAttribute', 'data')->andReturn([]);
|
||||
|
||||
$viewPref = $this->mock('Preference');
|
||||
$viewPref->shouldReceive('getAttribute', 'data')->andReturn('1M');
|
||||
|
||||
|
||||
// mock view:
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('preferences.index')->once()->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once()->with('accounts', [])->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once()->with('viewRange', '1M')->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once()->with('frontpageAccounts', $pref)->andReturn(\Mockery::self());
|
||||
|
||||
|
||||
$preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
||||
$preferences->shouldReceive('get')->with('frontpageAccounts', [])->andReturn($pref);
|
||||
$preferences->shouldReceive('get')->with('viewRange', '1M')->andReturn($viewPref);
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('accounts')->andReturn([]);
|
||||
$accounts->shouldReceive('getDefault')->andReturn([]);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/preferences');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testPostIndex()
|
||||
{
|
||||
// mock
|
||||
$preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface');
|
||||
$preferences->shouldReceive('set')->with('frontpageAccounts', [1])->andReturn(true);
|
||||
$preferences->shouldReceive('set')->with('viewRange', '1M')->andReturn(true);
|
||||
|
||||
// call
|
||||
$this->call('POST', '/preferences', ['frontpageAccounts' => [1], 'viewRange' => '1M']);
|
||||
|
||||
|
||||
// test
|
||||
$this->assertSessionHas('success');
|
||||
$this->assertRedirectedToRoute('preferences');
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
}
|
@ -1,148 +0,0 @@
|
||||
<?php
|
||||
|
||||
class ProfileControllerTest extends TestCase
|
||||
{
|
||||
|
||||
public function testIndex()
|
||||
{
|
||||
// mock:
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('profile.index');
|
||||
|
||||
// call
|
||||
$this->call('GET', '/profile');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testChangePassword()
|
||||
{
|
||||
// mock:
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('profile.change-password');
|
||||
|
||||
// call
|
||||
$this->call('GET', '/profile/change-password');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testOldNoMatch()
|
||||
{
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
Auth::shouldReceive('user')->andReturn(new User);
|
||||
Hash::shouldReceive('check')->andReturn(false);
|
||||
|
||||
$data = [
|
||||
'old' => 'lala',
|
||||
'new1' => 'a',
|
||||
'new2' => 'a',
|
||||
];
|
||||
|
||||
|
||||
// call
|
||||
$this->call('POST', '/profile/change-password', $data);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
$this->assertSessionHas('error', 'Invalid current password!');
|
||||
}
|
||||
|
||||
public function testNewEmpty()
|
||||
{
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
Auth::shouldReceive('user')->andReturn(new User);
|
||||
Hash::shouldReceive('check')->andReturn(true);
|
||||
|
||||
$data = [
|
||||
'old' => 'lala',
|
||||
'new1' => '',
|
||||
'new2' => '',
|
||||
];
|
||||
|
||||
|
||||
// call
|
||||
$this->call('POST', '/profile/change-password', $data);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
$this->assertSessionHas('error', 'Do fill in a password!');
|
||||
}
|
||||
|
||||
public function testOldSame()
|
||||
{
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
Auth::shouldReceive('user')->andReturn(new User);
|
||||
Hash::shouldReceive('check')->andReturn(true);
|
||||
Hash::shouldReceive('make')->andReturn('blala');
|
||||
|
||||
$data = [
|
||||
'old' => 'a',
|
||||
'new1' => 'a',
|
||||
'new2' => 'a',
|
||||
];
|
||||
|
||||
|
||||
// call
|
||||
$this->call('POST', '/profile/change-password', $data);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
$this->assertSessionHas('error', 'The idea is to change your password.');
|
||||
}
|
||||
|
||||
public function testNewNoMatch()
|
||||
{
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
Auth::shouldReceive('user')->andReturn(new User);
|
||||
Hash::shouldReceive('check')->andReturn(true);
|
||||
Hash::shouldReceive('make')->andReturn('blala');
|
||||
|
||||
$data = [
|
||||
'old' => 'b',
|
||||
'new1' => 'c',
|
||||
'new2' => 'd',
|
||||
];
|
||||
|
||||
|
||||
// call
|
||||
$this->call('POST', '/profile/change-password', $data);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
$this->assertSessionHas('error', 'New passwords do not match!');
|
||||
}
|
||||
|
||||
public function testPostChangePassword()
|
||||
{
|
||||
Auth::shouldReceive('check')->andReturn(true);
|
||||
Auth::shouldReceive('user')->andReturn(new User);
|
||||
Hash::shouldReceive('check')->andReturn(true);
|
||||
Hash::shouldReceive('make')->andReturn('blala');
|
||||
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$repository->shouldReceive('updatePassword')->once()->andReturn(true);
|
||||
|
||||
$data = [
|
||||
'old' => 'b',
|
||||
'new1' => 'c',
|
||||
'new2' => 'c',
|
||||
];
|
||||
|
||||
|
||||
// call
|
||||
$this->call('POST', '/profile/change-password', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('profile');
|
||||
$this->assertSessionHas('success', 'Password changed!');
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
|
||||
}
|
@ -1,562 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\FactoryMuffin\Facade\FactoryMuffin;
|
||||
|
||||
class TransactionControllerTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Default preparation for each test
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->prepareForTests();
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrate the database
|
||||
*/
|
||||
private function prepareForTests()
|
||||
{
|
||||
Artisan::call('migrate');
|
||||
Artisan::call('db:seed');
|
||||
}
|
||||
|
||||
public function testCreateWithdrawal()
|
||||
{
|
||||
|
||||
$set = [0 => '(no budget)'];
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('transactions.create')->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('what', 'withdrawal')
|
||||
->andReturn(Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('accounts', [])
|
||||
->andReturn(Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('budgets', $set)->andReturn(Mockery::self());
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]);
|
||||
|
||||
// mock budget repository:
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('getAsSelectList')->andReturn($set);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/transactions/create/withdrawal');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testCreateDeposit()
|
||||
{
|
||||
|
||||
$set = [0 => '(no budget)'];
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('transactions.create')->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('what', 'deposit')
|
||||
->andReturn(Mockery::self())
|
||||
|
||||
->shouldReceive('with')->once()
|
||||
->with('accounts', [])
|
||||
->andReturn(Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('budgets', $set)->andReturn(Mockery::self());
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]);
|
||||
|
||||
// mock budget repository:
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('getAsSelectList')->andReturn($set);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/transactions/create/deposit');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testCreateTransfer()
|
||||
{
|
||||
|
||||
$set = [0 => '(no budget)'];
|
||||
View::shouldReceive('share');
|
||||
View::shouldReceive('make')->with('transactions.create')->andReturn(\Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('what', 'transfer')
|
||||
->andReturn(Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('accounts', [])
|
||||
->andReturn(Mockery::self())
|
||||
->shouldReceive('with')->once()
|
||||
->with('budgets', $set)->andReturn(Mockery::self());
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]);
|
||||
|
||||
// mock budget repository:
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('getAsSelectList')->andReturn($set);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/transactions/create/transfer');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
|
||||
public function testPostCreateWithdrawal()
|
||||
{
|
||||
// create objects.
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$beneficiary = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'beneficiary' => $beneficiary->name,
|
||||
'category' => $category->name,
|
||||
'budget_id' => $budget->id,
|
||||
'account_id' => $account->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('createOrFindBeneficiary')->with($beneficiary->name)->andReturn($beneficiary);
|
||||
$accounts->shouldReceive('find')->andReturn($account);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with($budget->name)->andReturn($budget);
|
||||
$budgets->shouldReceive('find')->andReturn($budget);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->once()->andReturn($journal);
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/withdrawal', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('index');
|
||||
}
|
||||
|
||||
public function testPostCreateDeposit()
|
||||
{
|
||||
// create objects.
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$beneficiary = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'beneficiary' => $beneficiary->name,
|
||||
'category' => $category->name,
|
||||
'account_id' => $account->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('createOrFindBeneficiary')->with($beneficiary->name)->andReturn($beneficiary);
|
||||
$accounts->shouldReceive('find')->andReturn($account);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->once()->andReturn($journal);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with('')->andReturn(null);
|
||||
$budgets->shouldReceive('find')->andReturn(null);
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/deposit', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('index');
|
||||
}
|
||||
|
||||
public function testPostCreateTransfer()
|
||||
{
|
||||
// create objects.
|
||||
$from = FactoryMuffin::create('Account');
|
||||
$to = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'category' => $category->name,
|
||||
'account_from_id' => $from->id,
|
||||
'account_to_id' => $to->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('find')->with($from->id)->andReturn($from);
|
||||
$accounts->shouldReceive('find')->with($to->id)->andReturn($to);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->once()->andReturn($journal);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with('')->andReturn(null);
|
||||
$budgets->shouldReceive('find')->andReturn(null);
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/transfer', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('index');
|
||||
}
|
||||
|
||||
public function testPostCreateWithdrawalEmptyBeneficiary()
|
||||
{
|
||||
// create objects.
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$beneficiary = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'beneficiary' => '',
|
||||
'category' => $category->name,
|
||||
'budget_id' => $budget->id,
|
||||
'account_id' => $account->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('createOrFindBeneficiary')->with('')->andReturn(null);
|
||||
$accounts->shouldReceive('getCashAccount')->andReturn($beneficiary);
|
||||
$accounts->shouldReceive('find')->andReturn($account);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with($budget->name)->andReturn($budget);
|
||||
$budgets->shouldReceive('find')->andReturn($budget);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->once()->andReturn($journal);
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/withdrawal', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('index');
|
||||
}
|
||||
|
||||
public function testPostCreateDepositEmptyBeneficiary()
|
||||
{
|
||||
// create objects.
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$beneficiary = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'beneficiary' => '',
|
||||
'category' => $category->name,
|
||||
'budget_id' => $budget->id,
|
||||
'account_id' => $account->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('createOrFindBeneficiary')->with('')->andReturn(null);
|
||||
$accounts->shouldReceive('getCashAccount')->andReturn($beneficiary);
|
||||
$accounts->shouldReceive('find')->andReturn($account);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with($budget->name)->andReturn($budget);
|
||||
$budgets->shouldReceive('find')->andReturn($budget);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->once()->andReturn($journal);
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/deposit', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('index');
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Firefly\Exception\FireflyException;
|
||||
*/
|
||||
public function testPostCreateWithdrawalException()
|
||||
{
|
||||
// create objects.
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$beneficiary = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'beneficiary' => '',
|
||||
'category' => $category->name,
|
||||
'budget_id' => $budget->id,
|
||||
'account_id' => $account->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('createOrFindBeneficiary')->with('')->andReturn(null);
|
||||
$accounts->shouldReceive('getCashAccount')->andReturn($beneficiary);
|
||||
$accounts->shouldReceive('find')->andReturn($account);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with($budget->name)->andReturn($budget);
|
||||
$budgets->shouldReceive('find')->andReturn($budget);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->andThrow('Firefly\Exception\FireflyException');
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/withdrawal', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('transactions.create', ['what' => 'withdrawal']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Firefly\Exception\FireflyException;
|
||||
*/
|
||||
public function testPostCreateDepositException()
|
||||
{
|
||||
// create objects.
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$beneficiary = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'beneficiary' => '',
|
||||
'category' => $category->name,
|
||||
'budget_id' => $budget->id,
|
||||
'account_id' => $account->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('createOrFindBeneficiary')->with('')->andReturn(null);
|
||||
$accounts->shouldReceive('getCashAccount')->andReturn($beneficiary);
|
||||
$accounts->shouldReceive('find')->andReturn($account);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with($budget->name)->andReturn($budget);
|
||||
$budgets->shouldReceive('find')->andReturn($budget);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->andThrow('Firefly\Exception\FireflyException');
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/deposit', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('transactions.create', ['what' => 'deposit']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Firefly\Exception\FireflyException;
|
||||
*/
|
||||
public function testPostCreateTransferException()
|
||||
{
|
||||
// create objects.
|
||||
$from = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
|
||||
|
||||
// data to send:
|
||||
$data = [
|
||||
'category' => $category->name,
|
||||
'account_from_id' => $from->id,
|
||||
'account_to_id' => $from->id,
|
||||
'description' => 'Bla',
|
||||
'amount' => 1.2,
|
||||
'date' => '2012-01-01'
|
||||
];
|
||||
|
||||
// mock account repository:
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('find')->with($from->id)->andReturn($from);
|
||||
$accounts->shouldReceive('find')->with($from->id)->andReturn($from);
|
||||
|
||||
// mock category repository
|
||||
$categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface');
|
||||
$categories->shouldReceive('createOrFind')->with($category->name)->andReturn($category);
|
||||
|
||||
// mock budget repository
|
||||
$budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface');
|
||||
$budgets->shouldReceive('createOrFind')->with('')->andReturn(null);
|
||||
$budgets->shouldReceive('find')->andReturn(null);
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('createSimpleJournal')->andThrow('Firefly\Exception\FireflyException');
|
||||
|
||||
// call
|
||||
$this->call('POST', '/transactions/store/transfer', $data);
|
||||
|
||||
// test
|
||||
$this->assertRedirectedToRoute('transactions.create', ['what' => 'transfer']);
|
||||
}
|
||||
|
||||
public function testShow()
|
||||
{
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('find')->with($journal->id)->andReturn($journal);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/transaction/show/' . $journal->id);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testShowError()
|
||||
{
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('find')->with(1)->andReturn(null);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/transaction/show/1');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
$this->assertViewHas('message');
|
||||
}
|
||||
|
||||
public function testEdit()
|
||||
{
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('find')->with($journal->id)->andReturn($journal);
|
||||
|
||||
// mock account repository
|
||||
$accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface');
|
||||
$accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]);
|
||||
|
||||
|
||||
// call
|
||||
$this->call('GET', '/transaction/edit/' . $journal->id);
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testEditError()
|
||||
{
|
||||
// mock transaction journal:
|
||||
$tj = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface');
|
||||
$tj->shouldReceive('find')->with(1)->andReturn(null);
|
||||
|
||||
// call
|
||||
$this->call('GET', '/transaction/edit/1');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
}
|
@ -1,246 +0,0 @@
|
||||
<?php
|
||||
|
||||
class UserControllerTest extends TestCase
|
||||
{
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
public function testLogin()
|
||||
{
|
||||
// mock:
|
||||
View::shouldReceive('make')->with('user.login');
|
||||
|
||||
// call
|
||||
$this->call('GET', '/login');
|
||||
|
||||
// test
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testPostLogin()
|
||||
{
|
||||
// data:
|
||||
$data = ['email' => 'bla@bla.nl', 'password' => 'xxxx', 'remember_me' => '1'];
|
||||
|
||||
// mock
|
||||
Auth::shouldReceive('attempt')->once()->andReturn(true);
|
||||
|
||||
// test
|
||||
$this->call('POST', '/login', $data);
|
||||
$this->assertSessionHas('success');
|
||||
$this->assertRedirectedToRoute('index');
|
||||
}
|
||||
|
||||
public function testPostFalseLogin()
|
||||
{
|
||||
// data
|
||||
$data = ['email' => 'bla@bla.nl', 'password' => 'xxxx', 'remember_me' => '1'];
|
||||
|
||||
// mock
|
||||
Auth::shouldReceive('attempt')->once()->andReturn(false);
|
||||
View::shouldReceive('make')->with('user.login')->once();
|
||||
|
||||
// test
|
||||
$this->call('POST', '/login', $data);
|
||||
$this->assertSessionHas('error');
|
||||
}
|
||||
|
||||
public function testRegister()
|
||||
{
|
||||
// no mock for config! :(
|
||||
Config::set('auth.allow_register', true);
|
||||
// test
|
||||
$this->call('GET', '/register');
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testRegisterNotAllowed()
|
||||
{
|
||||
// no mock for config! :(
|
||||
Config::set('auth.allow_register', false);
|
||||
// test
|
||||
$this->call('GET', '/register');
|
||||
$this->assertResponseStatus(200);
|
||||
$this->assertViewHas('message', 'Not possible');
|
||||
}
|
||||
|
||||
/**
|
||||
* Register and verify:
|
||||
*/
|
||||
public function testPostRegisterAllowed()
|
||||
{
|
||||
// no mock for config! :(
|
||||
Config::set('auth.verify_mail', true);
|
||||
Config::set('auth.allow_register', true);
|
||||
|
||||
// mock repository:
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$email = $this->mock('Firefly\Helper\Email\EmailHelper');
|
||||
$repository->shouldReceive('register')->once()->andReturn(new User);
|
||||
$email->shouldReceive('sendVerificationMail')->once()->andReturn(true);
|
||||
// data:
|
||||
$data = [
|
||||
'email' => 'bla@bla'
|
||||
];
|
||||
|
||||
// test
|
||||
$crawler = $this->client->request('POST', '/register', $data);
|
||||
$this->assertTrue($this->client->getResponse()->isOk());
|
||||
$this->assertCount(1, $crawler->filter('h1:contains("Verification pending")'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register and verify FAILED:
|
||||
*/
|
||||
public function testPostRegisterAllowedFailed()
|
||||
{
|
||||
// no mock for config! :(
|
||||
Config::set('auth.verify_mail', true);
|
||||
Config::set('auth.allow_register', true);
|
||||
|
||||
// mock repository:
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$email = $this->mock('Firefly\Helper\Email\EmailHelper');
|
||||
$repository->shouldReceive('register')->once()->andReturn(null);
|
||||
// test
|
||||
$crawler = $this->client->request('POST', '/register');
|
||||
$this->assertTrue($this->client->getResponse()->isOk());
|
||||
$this->assertCount(1, $crawler->filter('h1:contains("Register")'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Register and NO verify:
|
||||
*/
|
||||
public function testPostRegisterNoVerifyAllowed()
|
||||
{
|
||||
// no mock for config! :(
|
||||
Config::set('auth.verify_mail', false);
|
||||
Config::set('auth.allow_register', true);
|
||||
|
||||
// mock repository:
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$email = $this->mock('Firefly\Helper\Email\EmailHelper');
|
||||
$repository->shouldReceive('register')->once()->andReturn(new User);
|
||||
$email->shouldReceive('sendPasswordMail')->once()->andReturn(true);
|
||||
// data:
|
||||
$data = [
|
||||
'email' => 'bla@bla'
|
||||
];
|
||||
|
||||
// test
|
||||
$crawler = $this->client->request('POST', '/register', $data);
|
||||
$this->assertTrue($this->client->getResponse()->isOk());
|
||||
$this->assertCount(1, $crawler->filter('h1:contains("Password sent")'));
|
||||
|
||||
}
|
||||
|
||||
public function testLogout()
|
||||
{
|
||||
|
||||
Auth::shouldReceive('logout');
|
||||
|
||||
$this->call('GET', '/logout');
|
||||
|
||||
}
|
||||
|
||||
public function testRemindme()
|
||||
{
|
||||
|
||||
$this->call('GET', '/remindme');
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testPostRemindmeWithVerification()
|
||||
{
|
||||
Config::set('auth.verify_reset', true);
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$email = $this->mock('Firefly\Helper\Email\EmailHelper');
|
||||
$repository->shouldReceive('findByEmail')->once()->andReturn(new User);
|
||||
$email->shouldReceive('sendResetVerification')->once()->andReturn(true);
|
||||
|
||||
$this->call('POST', '/remindme');
|
||||
$this->assertResponseOk();
|
||||
|
||||
}
|
||||
|
||||
public function testPostRemindmeWithoutVerification()
|
||||
{
|
||||
Config::set('auth.verify_reset', false);
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$email = $this->mock('Firefly\Helper\Email\EmailHelper');
|
||||
$repository->shouldReceive('findByEmail')->once()->andReturn(new User);
|
||||
$email->shouldReceive('sendPasswordMail')->once()->andReturn(true);
|
||||
|
||||
$this->call('POST', '/remindme');
|
||||
$this->assertResponseOk();
|
||||
}
|
||||
|
||||
public function testPostRemindmeFails()
|
||||
{
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$repository->shouldReceive('findByEmail')->once()->andReturn(null);
|
||||
|
||||
$this->call('POST', '/remindme');
|
||||
$this->assertResponseOk();
|
||||
$this->assertSessionHas('error', 'No good!');
|
||||
}
|
||||
|
||||
public function testPostRegisterNotAllowed()
|
||||
{
|
||||
// no mock for config! :(
|
||||
Config::set('auth.verify_mail', true);
|
||||
Config::set('auth.verify_reset', true);
|
||||
Config::set('auth.allow_register', false);
|
||||
|
||||
// mock repository:
|
||||
$data = [
|
||||
'email' => 'bla@bla'
|
||||
];
|
||||
|
||||
// test
|
||||
$this->call('POST', '/register', $data);
|
||||
$this->assertResponseStatus(200);
|
||||
$this->assertViewHas('message', 'Not possible');
|
||||
|
||||
}
|
||||
|
||||
public function testReset()
|
||||
{
|
||||
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$email = $this->mock('Firefly\Helper\Email\EmailHelper');
|
||||
|
||||
$repository->shouldReceive('findByReset')->once()->andReturn(new User);
|
||||
$email->shouldReceive('sendPasswordMail')->once()->andReturn(true);
|
||||
|
||||
// test
|
||||
$crawler = $this->client->request('GET', '/reset/blabla');
|
||||
$this->assertTrue($this->client->getResponse()->isOk());
|
||||
$this->assertCount(1, $crawler->filter('h1:contains("Password sent")'));
|
||||
|
||||
}
|
||||
|
||||
public function testResetFails()
|
||||
{
|
||||
$repository = $this->mock('Firefly\Storage\User\UserRepositoryInterface');
|
||||
$repository->shouldReceive('findByReset')->once()->andReturn(null);
|
||||
|
||||
// test
|
||||
$crawler = $this->client->request('GET', '/reset/blabla');
|
||||
$this->assertTrue($this->client->getResponse()->isOk());
|
||||
$this->assertCount(1, $crawler->filter('h1:contains("Error")'));
|
||||
$this->assertViewHas('message');
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
|
||||
}
|
@ -1,223 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\FactoryMuffin\Facade\FactoryMuffin;
|
||||
|
||||
class AllModelsTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Default preparation for each test
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->prepareForTests();
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrate the database
|
||||
*/
|
||||
private function prepareForTests()
|
||||
{
|
||||
Artisan::call('migrate');
|
||||
Artisan::call('db:seed');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* User tests
|
||||
*/
|
||||
public function testUser()
|
||||
{
|
||||
$user = FactoryMuffin::create('User');
|
||||
$pref = FactoryMuffin::create('Preference');
|
||||
$account = FactoryMuffin::create('Account');
|
||||
|
||||
// some more stuff:
|
||||
$component = FactoryMuffin::create('Component');
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
|
||||
$account->user()->associate($user);
|
||||
$pref->user()->associate($user);
|
||||
$user->accounts()->save($account);
|
||||
$user->preferences()->save($pref);
|
||||
$user->components()->save($component);
|
||||
$user->budgets()->save($budget);
|
||||
$user->categories()->save($category);
|
||||
|
||||
$this->assertEquals($account->user_id, $user->id);
|
||||
$this->assertEquals($pref->user_id, $user->id);
|
||||
$this->assertEquals($budget->user_id, $user->id);
|
||||
$this->assertEquals($category->user_id, $user->id);
|
||||
$this->assertEquals($component->user_id, $user->id);
|
||||
|
||||
// test pref?
|
||||
$pref->data = 'Blabla';
|
||||
$this->assertEquals($pref->data, 'Blabla');
|
||||
|
||||
$this->assertCount(1, $user->accounts()->get());
|
||||
$this->assertCount(1, $user->preferences()->get());
|
||||
|
||||
|
||||
$this->assertTrue(true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Account tests
|
||||
*/
|
||||
public function testUserAccounts()
|
||||
{
|
||||
|
||||
$this->assertTrue(true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Transaction journal tests.
|
||||
*/
|
||||
|
||||
public function testTransactionJournals()
|
||||
{
|
||||
$tj = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
$t1 = FactoryMuffin::create('Transaction');
|
||||
$t2 = FactoryMuffin::create('Transaction');
|
||||
$t3 = FactoryMuffin::create('Transaction');
|
||||
$user = FactoryMuffin::create('User');
|
||||
|
||||
$tj->transactions()->save($t1);
|
||||
$tj->transactions()->save($t2);
|
||||
$tj->transactions()->save($t3);
|
||||
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
|
||||
$tj->components()->save($budget);
|
||||
$tj->components()->save($category);
|
||||
$user->transactionjournals()->save($tj);
|
||||
$tj->user()->associate($user);
|
||||
|
||||
$this->assertEquals($tj->user_id, $user->id);
|
||||
|
||||
$this->assertCount(2, $tj->components()->get());
|
||||
$this->assertCount(1, $tj->budgets()->get());
|
||||
$this->assertCount(1, $tj->categories()->get());
|
||||
$this->assertCount(1, $user->transactionjournals()->get());
|
||||
|
||||
|
||||
$this->assertCount(3, $tj->transactions()->get());
|
||||
|
||||
$this->assertTrue($tj->validate());
|
||||
|
||||
$this->assertEquals($tj->transaction_type_id, $tj->transactionType()->first()->id);
|
||||
$this->assertEquals($tj->transaction_currency_id, $tj->transactionCurrency()->first()->id);
|
||||
|
||||
}
|
||||
|
||||
public function testTransactionJournalScope()
|
||||
{
|
||||
$tj = FactoryMuffin::create('TransactionJournal');
|
||||
$tj->date = new \Carbon\Carbon('2012-01-02');
|
||||
|
||||
$set = $tj->after(new \Carbon\Carbon)->before(new \Carbon\Carbon)->get();
|
||||
$this->assertCount(0, $set);
|
||||
}
|
||||
|
||||
public function testTransactionType()
|
||||
{
|
||||
$j1 = FactoryMuffin::create('TransactionJournal');
|
||||
$j2 = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
$type = FactoryMuffin::create('TransactionType');
|
||||
$type->transactionjournals()->save($j1);
|
||||
$type->transactionjournals()->save($j2);
|
||||
|
||||
$this->assertCount(2, $type->transactionjournals()->get());
|
||||
|
||||
}
|
||||
|
||||
public function testTransactionCurrency()
|
||||
{
|
||||
$j1 = FactoryMuffin::create('TransactionJournal');
|
||||
$j2 = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
$currency = FactoryMuffin::create('TransactionCurrency');
|
||||
$currency->transactionjournals()->save($j1);
|
||||
$currency->transactionjournals()->save($j2);
|
||||
|
||||
$this->assertCount(2, $currency->transactionjournals()->get());
|
||||
|
||||
}
|
||||
|
||||
public function testAccountTypes()
|
||||
{
|
||||
$type = FactoryMuffin::create('AccountType');
|
||||
$a1 = FactoryMuffin::create('Account');
|
||||
$a2 = FactoryMuffin::create('Account');
|
||||
|
||||
$type->accounts()->save($a1);
|
||||
$type->accounts()->save($a2);
|
||||
$a1->accounttype()->associate($type);
|
||||
|
||||
$this->assertEquals($a1->account_type_id, $type->id);
|
||||
|
||||
$this->assertCount(2, $type->accounts()->get());
|
||||
}
|
||||
|
||||
public function testBalance()
|
||||
{
|
||||
$account = FactoryMuffin::create('Account');
|
||||
|
||||
$this->assertEquals(0.0, $account->balance());
|
||||
|
||||
}
|
||||
|
||||
public function testTransactions()
|
||||
{
|
||||
$transaction = FactoryMuffin::create('Transaction');
|
||||
|
||||
$budget = FactoryMuffin::create('Budget');
|
||||
$account = FactoryMuffin::create('Account');
|
||||
$category = FactoryMuffin::create('Category');
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
|
||||
$transaction->components()->save($budget);
|
||||
$transaction->components()->save($category);
|
||||
$transaction->account()->associate($account);
|
||||
$transaction->transactionjournal()->associate($journal);
|
||||
|
||||
$account->transactions()->save($transaction);
|
||||
|
||||
|
||||
$this->assertEquals($transaction->account_id, $account->id);
|
||||
$this->assertCount(1, $transaction->transactionjournal()->get());
|
||||
$this->assertCount(1, $transaction->account()->get());
|
||||
$this->assertCount(2, $transaction->components()->get());
|
||||
$this->assertCount(1, $transaction->budgets()->get());
|
||||
$this->assertCount(1, $transaction->categories()->get());
|
||||
|
||||
}
|
||||
|
||||
public function testComponents()
|
||||
{
|
||||
$component = FactoryMuffin::create('Component');
|
||||
$user = FactoryMuffin::create('User');
|
||||
$transaction = FactoryMuffin::create('Transaction');
|
||||
|
||||
$journal = FactoryMuffin::create('TransactionJournal');
|
||||
$component->transactionjournals()->save($journal);
|
||||
$component->user()->associate($user);
|
||||
$component->transactions()->save($transaction);
|
||||
|
||||
$this->assertCount(1, $component->transactionjournals()->get());
|
||||
$this->assertCount(1, $component->user()->get());
|
||||
$this->assertCount(1, $component->transactions()->get());
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user