mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 10:47:00 +00:00 
			
		
		
		
	Removed ALL tests. Yes, I know.
This commit is contained in:
		| @@ -1,388 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use Illuminate\Database\Eloquent\Collection; |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class AccountTest |  | ||||||
|  * |  | ||||||
|  * Test EVERYTHING related to accounts. Models, views, and controllers. |  | ||||||
|  * |  | ||||||
|  * This class does not cover the /lib/ map, it is for a later date. |  | ||||||
|  * |  | ||||||
|  * As far as I am concerned, this class is complete! Yay! |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  * |  | ||||||
|  */ |  | ||||||
| class AccountTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_repository; |  | ||||||
|     protected $_user; |  | ||||||
|     protected $_accounts; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      */ |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_repository = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface'); |  | ||||||
|         $this->_accounts   = $this->mock('Firefly\Helper\Controllers\AccountInterface'); |  | ||||||
|         $this->_user       = m::mock('User', 'Eloquent'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      */ |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|  |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \Account |  | ||||||
|      * @covers \AccountType |  | ||||||
|      */ |  | ||||||
|     public function testAccountModel() |  | ||||||
|     { |  | ||||||
|         // create account and user: |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $user    = f::create('User'); |  | ||||||
|         $user->accounts()->save($account); |  | ||||||
|  |  | ||||||
|         // new account? balance should be 0.00 |  | ||||||
|         $this->assertEquals(0.0, $account->balance()); |  | ||||||
|  |  | ||||||
|         // create and link two transactions / piggybanks: |  | ||||||
|         for ($i = 0; $i < 2; $i++) { |  | ||||||
|             $transaction = f::create('Transaction'); |  | ||||||
|             $transaction->account()->associate($account); |  | ||||||
|             $transaction->save(); |  | ||||||
|  |  | ||||||
|             $piggy = f::create('Piggybank'); |  | ||||||
|             $piggy->account()->associate($account); |  | ||||||
|             $piggy->save(); |  | ||||||
|  |  | ||||||
|         } |  | ||||||
|         // test related models |  | ||||||
|         $this->assertCount(2, $account->transactions()->get()); |  | ||||||
|         $this->assertCount(2, $account->piggybanks()->get()); |  | ||||||
|  |  | ||||||
|         // predict should always be null: |  | ||||||
|         $this->assertNull($account->predict(new Carbon)); |  | ||||||
|  |  | ||||||
|         // user should equal test user: |  | ||||||
|         $this->assertEquals($user->id, $account->user()->first()->id); |  | ||||||
|  |  | ||||||
|         $this->assertEquals('testing', \App::environment()); |  | ||||||
|  |  | ||||||
|         // whatever the account type of this account, searching for it using the |  | ||||||
|         // scope method should return one account: |  | ||||||
|         $accountType = $account->accounttype()->first(); |  | ||||||
|         $accounts    = $accountType->accounts()->count(); |  | ||||||
|         $this->assertCount($accounts, \Account::AccountTypeIn([$accountType->type])->get()); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::create |  | ||||||
|      */ |  | ||||||
|     public function testCreate() |  | ||||||
|     { |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->once()->with('accounts.create')->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('title', 'Create account'); |  | ||||||
|  |  | ||||||
|         // call and final test: |  | ||||||
|         $this->action('GET', 'AccountController@create'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::delete |  | ||||||
|      */ |  | ||||||
|     public function testDelete() |  | ||||||
|     { |  | ||||||
|         // some prep work. |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         // for successful binding with the account to delete: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->once()->with('accounts.delete')->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('account', m::any())->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('title', 'Delete account "' . $account->name . '"'); |  | ||||||
|  |  | ||||||
|         // call and final test: |  | ||||||
|         $this->action('GET', 'AccountController@delete', $account->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::destroy |  | ||||||
|      */ |  | ||||||
|     public function testDestroy() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for successful binding with the account to destroy: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // test if the repository receives an argument: |  | ||||||
|         $this->_repository->shouldReceive('destroy')->once(); |  | ||||||
|  |  | ||||||
|         // post it: |  | ||||||
|         $this->action('POST', 'AccountController@destroy', $account->id); |  | ||||||
|         $this->assertRedirectedToRoute('accounts.index'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::edit |  | ||||||
|      */ |  | ||||||
|     public function testEdit() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         // for successful binding with the account to edit: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // test if the repository works: |  | ||||||
|         $this->_accounts->shouldReceive('openingBalanceTransaction')->once()->with(m::any())->andReturn(null); |  | ||||||
|  |  | ||||||
|         // test if the view works: |  | ||||||
|         View::shouldReceive('make')->once()->with('accounts.edit')->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('account', m::any())->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('openingBalance', null)->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('title', 'Edit account "' . $account->name . '"'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'AccountController@edit', $account->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::index |  | ||||||
|      */ |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         // two account types: |  | ||||||
|         $personalType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $benType      = \AccountType::whereType('Beneficiary account')->first(); |  | ||||||
|  |  | ||||||
|         // create two accounts: |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $personal = f::create('Account'); |  | ||||||
|         $personal->accountType()->associate($personalType); |  | ||||||
|         $personal->save(); |  | ||||||
|         $ben = f::create('Account'); |  | ||||||
|         $ben->accountType()->associate($benType); |  | ||||||
|         $ben->save(); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $collection = new Collection(); |  | ||||||
|         $collection->add($personal); |  | ||||||
|         $collection->add($ben); |  | ||||||
|  |  | ||||||
|         $list = [ |  | ||||||
|             'personal'      => [$personal], |  | ||||||
|             'beneficiaries' => [$ben], |  | ||||||
|         ]; |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_repository->shouldReceive('get')->once()->andReturn($collection); |  | ||||||
|  |  | ||||||
|         // test view: |  | ||||||
|         View::shouldReceive('make')->once()->with('accounts.index')->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('accounts', $list)->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('title', 'All your accounts'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'AccountController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::show |  | ||||||
|      */ |  | ||||||
|     public function testShow() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         // for successful binding with the account to show: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // test view: |  | ||||||
|         View::shouldReceive('make')->once()->with('accounts.show')->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('account', m::any())->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('show', [])->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->once()->with('title', 'Details for account "' . $account->name . '"'); |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('show')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'AccountController@show', $account->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::store |  | ||||||
|      */ |  | ||||||
|     public function testStore() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($account); |  | ||||||
|         $this->action('POST', 'AccountController@store'); |  | ||||||
|         $this->assertRedirectedToRoute('accounts.index'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::store |  | ||||||
|      */ |  | ||||||
|     public function testStoreFails() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         unset($account->name); |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($account); |  | ||||||
|         $this->action('POST', 'AccountController@store'); |  | ||||||
|         $this->assertRedirectedToRoute('accounts.create'); |  | ||||||
|         $this->assertSessionHas('error'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::store |  | ||||||
|      */ |  | ||||||
|     public function testStoreRecreate() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($account); |  | ||||||
|         $this->action('POST', 'AccountController@store', ['create' => '1']); |  | ||||||
|         $this->assertRedirectedToRoute('accounts.create'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::update |  | ||||||
|      */ |  | ||||||
|     public function testUpdate() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         // for successful binding with the account to update: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // test |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($account); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'AccountController@update', $account->id); |  | ||||||
|         $this->assertRedirectedToRoute('accounts.index'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \AccountController::update |  | ||||||
|      */ |  | ||||||
|     public function testUpdateFails() |  | ||||||
|     { |  | ||||||
|         /** @var \Account $account */ |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|  |  | ||||||
|         /** @var \AccountType $accountType */ |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accountType()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|  |  | ||||||
|         unset($account->name); |  | ||||||
|  |  | ||||||
|         // for successful binding with the account to show: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($account->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // test |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($account); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'AccountController@update', $account->id); |  | ||||||
|         $this->assertRedirectedToRoute('accounts.edit', $account->id); |  | ||||||
|         $this->assertSessionHas('error'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -1,460 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use Illuminate\Database\Eloquent\Collection; |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class BudgetTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class BudgetTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_repository; |  | ||||||
|     protected $_user; |  | ||||||
|     protected $_budgets; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      */ |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_repository = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface'); |  | ||||||
|         $this->_budgets    = $this->mock('Firefly\Helper\Controllers\BudgetInterface'); |  | ||||||
|         $this->_user       = m::mock('User', 'Eloquent'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \Budget |  | ||||||
|      * |  | ||||||
|      */ |  | ||||||
|     public function testBudgetModel() |  | ||||||
|     { |  | ||||||
|         // create budget: |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // create some transaction journals: |  | ||||||
|         $t1 = f::create('TransactionJournal'); |  | ||||||
|         $t2 = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|         $budget->transactionjournals()->save($t1); |  | ||||||
|         $budget->transactionjournals()->save($t2); |  | ||||||
|  |  | ||||||
|         $this->assertCount(2, $budget->transactionjournals()->get()); |  | ||||||
|         $this->assertEquals($budget->id, $t1->budgets()->first()->id); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::create |  | ||||||
|      */ |  | ||||||
|     public function testCreate() |  | ||||||
|     { |  | ||||||
|         // test config: |  | ||||||
|         $periods = [ |  | ||||||
|             'weekly'    => 'A week', |  | ||||||
|             'monthly'   => 'A month', |  | ||||||
|             'quarterly' => 'A quarter', |  | ||||||
|             'half-year' => 'Six months', |  | ||||||
|             'yearly'    => 'A year', |  | ||||||
|         ]; |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.create')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('periods', $periods)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'Create a new budget')->once(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@create'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::delete |  | ||||||
|      */ |  | ||||||
|     public function testDelete() |  | ||||||
|     { |  | ||||||
|  |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.delete')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('budget', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'Delete budget "' . $budget->name . '"')->once(); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to delete: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@delete', $budget->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::destroy |  | ||||||
|      */ |  | ||||||
|     public function testDestroy() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to delete: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // fire the event: |  | ||||||
|         Event::shouldReceive('fire')->once()->with('budgets.destroy', [$budget]); |  | ||||||
|  |  | ||||||
|         // fire the repository: |  | ||||||
|         $this->_repository->shouldReceive('destroy')->once()->andReturn(true); |  | ||||||
|  |  | ||||||
|         // fire and test: |  | ||||||
|         $this->action('POST', 'BudgetController@destroy', $budget->id); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.index.budget'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::destroy |  | ||||||
|      */ |  | ||||||
|     public function testDestroyFromDate() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to delete: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // fire the event: |  | ||||||
|         Event::shouldReceive('fire')->once()->with('budgets.destroy', [$budget]); |  | ||||||
|  |  | ||||||
|         // fire the repository: |  | ||||||
|         $this->_repository->shouldReceive('destroy')->once()->andReturn(true); |  | ||||||
|  |  | ||||||
|         // fire and test: |  | ||||||
|         $this->action('POST', 'BudgetController@destroy', [$budget->id, 'from' => 'date']); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.index'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::edit |  | ||||||
|      */ |  | ||||||
|     public function testEdit() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to delete: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); // |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.edit')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('budget', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'Edit budget "' . $budget->name . '"')->once(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@edit', $budget->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::indexByBudget |  | ||||||
|      */ |  | ||||||
|     public function testIndexByBudget() |  | ||||||
|     { |  | ||||||
|         $this->_repository->shouldReceive('get')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.indexByBudget')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('budgets', [])->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('today', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'All your budgets grouped by budget')->once(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@indexByBudget'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::indexByDate |  | ||||||
|      */ |  | ||||||
|     public function testIndexByDate() |  | ||||||
|     { |  | ||||||
|         $collection = new Collection(); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.indexByDate')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('budgets', [])->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'All your budgets grouped by date')->once(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('get')->once()->andReturn($collection); |  | ||||||
|         $this->_budgets->shouldReceive('organizeByDate')->with($collection)->andReturn([]); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@indexByDate'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::show |  | ||||||
|      */ |  | ||||||
|     public function testShowDefault() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to show: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); // |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_budgets->shouldReceive('organizeRepetitions')->with(m::any(), false)->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.show')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('budget', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('repetitions', [])->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('view', 4)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('highlight', null)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('useSessionDates', false)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', $budget->name)->once(); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@show', $budget->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::show |  | ||||||
|      */ |  | ||||||
|     public function testShowOutsideEnvelope() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to show: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->between(0, 2)->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->session(['start' => new Carbon, 'end' => new Carbon]); |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_budgets->shouldReceive('outsideRepetitions')->with(m::any())->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.show')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('budget', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('repetitions', [])->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('view', 2)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('highlight', null)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('useSessionDates', false)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', $budget->name . ', transactions outside an envelope')->once(); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@show', [$budget->id, null, 'noenvelope' => 'true']); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::show |  | ||||||
|      */ |  | ||||||
|     public function testShowWithRepetition() |  | ||||||
|     { |  | ||||||
|         $budget     = f::create('Budget'); |  | ||||||
|         $limit      = f::create('Limit'); |  | ||||||
|         $repetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($repetition); |  | ||||||
|         $budget->limits()->save($limit); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to show: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->between(0, 2)->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->session(['start' => new Carbon, 'end' => new Carbon]); |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_budgets->shouldReceive('organizeRepetition')->with(m::any())->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('budgets.show')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('budget', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('repetitions', [])->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('view', 1)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('highlight', null)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('useSessionDates', false)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', |  | ||||||
|                                        $budget->name . ', ' . $repetition->periodShow() . ', ' . |  | ||||||
|                                        mf($limit->amount, false))->once(); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'BudgetController@show', [$budget->id, $repetition->id]); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::store |  | ||||||
|      */ |  | ||||||
|     public function testStore() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($budget); |  | ||||||
|  |  | ||||||
|         // test event: |  | ||||||
|         Event::shouldReceive('fire')->with('budgets.store', [$budget])->once(); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'BudgetController@store'); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.index.budget'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::store |  | ||||||
|      */ |  | ||||||
|     public function testStoreComingFromDate() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($budget); |  | ||||||
|  |  | ||||||
|         // test event: |  | ||||||
|         Event::shouldReceive('fire')->with('budgets.store', [$budget])->once(); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'BudgetController@store', ['from' => 'date']); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.index'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::store |  | ||||||
|      */ |  | ||||||
|     public function testStoreFails() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         unset($budget->name); |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_repository->shouldReceive('store')->once()->andReturn($budget); |  | ||||||
|  |  | ||||||
|         // test event: |  | ||||||
|         $this->action('POST', 'BudgetController@store', ['name' => null]); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.create'); |  | ||||||
|         $this->assertSessionHas('error'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::store |  | ||||||
|      */ |  | ||||||
|     public function testStoreWithRecreation() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // test repository: |  | ||||||
|         $this->_repository->shouldReceive('store')->once()->andReturn($budget); |  | ||||||
|  |  | ||||||
|         // test event: |  | ||||||
|         Event::shouldReceive('fire')->with('budgets.store', [$budget])->once(); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'BudgetController@store', ['name' => $budget->name, 'create' => '1']); |  | ||||||
|         $this->assertRedirectedTo('http://localhost/budgets/create?'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::update |  | ||||||
|      */ |  | ||||||
|     public function testUpdate() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to update: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->between(0, 2)->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // update the budget |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($budget); |  | ||||||
|  |  | ||||||
|         // fire in the hole! |  | ||||||
|         Event::shouldReceive('fire')->with('budgets.update', [$budget]); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'BudgetController@update', $budget->id); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.index.budget'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::update |  | ||||||
|      */ |  | ||||||
|     public function testUpdateFails() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         unset($budget->name); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to update: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->between(0, 2)->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // update the budget |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($budget); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'BudgetController@update', [$budget->id]); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.edit', $budget->id); |  | ||||||
|         $this->assertSessionHas('error'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \BudgetController::update |  | ||||||
|      */ |  | ||||||
|     public function testUpdateFromDate() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the budget to update: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->between(0, 2)->andReturn($budget->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // update the budget |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($budget); |  | ||||||
|  |  | ||||||
|         // fire in the hole! |  | ||||||
|         Event::shouldReceive('fire')->with('budgets.update', [$budget]); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'BudgetController@update', [$budget->id, 'from' => 'date']); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.index'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @@ -1,220 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use Illuminate\Database\Eloquent\Collection; |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class CategoryTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class CategoryTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_repository; |  | ||||||
|     protected $_user; |  | ||||||
|     protected $_category; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      */ |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_repository = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface'); |  | ||||||
|         $this->_category   = $this->mock('Firefly\Helper\Controllers\CategoryInterface'); |  | ||||||
|         $this->_user       = m::mock('User', 'Eloquent'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * |  | ||||||
|      */ |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \CategoryController::create |  | ||||||
|      */ |  | ||||||
|     public function testCreate() |  | ||||||
|     { |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('categories.create')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'Create a new category')->once(); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'CategoryController@create'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \CategoryController::delete |  | ||||||
|      */ |  | ||||||
|     public function testDelete() |  | ||||||
|     { |  | ||||||
|  |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('categories.delete')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('category', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'Delete category "' . $category->name . '"')->once(); |  | ||||||
|  |  | ||||||
|         // for successful binding with the category to delete: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($category->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'CategoryController@delete', $category->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \CategoryController::destroy |  | ||||||
|      */ |  | ||||||
|     public function testDestroy() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the category to delete: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($category->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         // fire the repository: |  | ||||||
|         $this->_repository->shouldReceive('destroy')->once()->andReturn(true); |  | ||||||
|  |  | ||||||
|         // fire and test: |  | ||||||
|         $this->action('POST', 'CategoryController@destroy', $category->id); |  | ||||||
|         $this->assertRedirectedToRoute('categories.index'); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \CategoryController::edit |  | ||||||
|      */ |  | ||||||
|     public function testEdit() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the category to edit: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($category->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); // |  | ||||||
|  |  | ||||||
|         // test the view: |  | ||||||
|         View::shouldReceive('make')->with('categories.edit')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('category', m::any())->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'Edit category "' . $category->name . '"')->once(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'CategoryController@edit', $category->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \CategoryController::index |  | ||||||
|      */ |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         $category   = f::create('Category'); |  | ||||||
|         $collection = new Collection(); |  | ||||||
|         $collection->add($category); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('get')->with()->once()->andReturn($collection); |  | ||||||
|  |  | ||||||
|         View::shouldReceive('make')->with('categories.index')->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('categories', $collection)->once()->andReturn(m::self()) |  | ||||||
|             ->shouldReceive('with')->with('title', 'All your categories')->once(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'CategoryController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @covers \CategoryController::show |  | ||||||
|      */ |  | ||||||
|     public function testShow() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|  |  | ||||||
|         // for successful binding with the category to show: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user)->between(1, 3); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true)->between(1, 2); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($category->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); // |  | ||||||
|  |  | ||||||
|         $this->session(['start' => new Carbon, 'end' => new Carbon]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->_category->shouldReceive('journalsInRange')->once()->andReturn([]); |  | ||||||
|         $this->action('GET', 'CategoryController@show', $category->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStore() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($category); |  | ||||||
|         $this->action('POST', 'CategoryController@store'); |  | ||||||
|         $this->assertRedirectedToRoute('categories.index'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreFails() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         unset($category->name); |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($category); |  | ||||||
|         $this->action('POST', 'CategoryController@store'); |  | ||||||
|         $this->assertRedirectedToRoute('categories.create'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreRecreate() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($category); |  | ||||||
|         $this->action('POST', 'CategoryController@store', ['create' => '1']); |  | ||||||
|         $this->assertRedirectedToRoute('categories.create'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdate() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         // for successful binding. |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($category->user_id); |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($category); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'CategoryController@update', $category->id); |  | ||||||
|         $this->assertRedirectedToRoute('categories.index'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdateFails() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         unset($category->name); |  | ||||||
|         // for successful binding. |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($category->user_id); |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($category); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'CategoryController@update', [$category->id]); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -1,138 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use Illuminate\Database\Eloquent\Collection; |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class ChartControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class ChartControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_user; |  | ||||||
| //    protected $_repository; |  | ||||||
|     protected $_accounts; |  | ||||||
|     protected $_charts; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface'); |  | ||||||
|         $this->_charts = $this->mock('Firefly\Helper\Controllers\ChartInterface'); |  | ||||||
| //        $this->_category = $this->mock('Firefly\Helper\Controllers\CategoryInterface'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCategoryShowChart() |  | ||||||
|     { |  | ||||||
|         $this->session(['start' => new Carbon, 'end' => new Carbon, 'range' => '1M']); |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|  |  | ||||||
|         // for successful binding: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($category->user_id); |  | ||||||
|  |  | ||||||
|         $this->_charts->shouldReceive('categoryShowChart')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'ChartController@categoryShowChart', $category->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testHomeAccount() |  | ||||||
|     { |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $collection = new Collection(); |  | ||||||
|         $collection->add($account); |  | ||||||
|         $this->session(['start' => new Carbon, 'end' => new Carbon, 'range' => '1M']); |  | ||||||
|  |  | ||||||
|         // for successful binding: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('bla@bla'); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn(1); |  | ||||||
|         $this->_accounts->shouldReceive('getByIds')->andReturn($collection); |  | ||||||
|  |  | ||||||
|         $this->_charts->shouldReceive('account')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'ChartController@homeAccount'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testHomeAccountInfo() |  | ||||||
|     { |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $accountType = \AccountType::whereType('Default account')->first(); |  | ||||||
|         $account->accounttype()->associate($accountType); |  | ||||||
|         $account->save(); |  | ||||||
|         // for successful binding: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($account->user()->first()); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('bla@bla'); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($account->user_id); |  | ||||||
|         $this->_accounts->shouldReceive('findByName')->andReturn($account); |  | ||||||
|  |  | ||||||
|         $this->_charts->shouldReceive('accountDailySummary')->once()->andReturn(['rows' => [], 'sum' => 0]); |  | ||||||
|  |  | ||||||
|         $this->call('GET', 'chart/home/info/' . $account->name . '/01/08/2014'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testHomeAccountWithAccount() |  | ||||||
|     { |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $this->session(['start' => new Carbon, 'end' => new Carbon, 'range' => '1M']); |  | ||||||
|  |  | ||||||
|         // for successful binding: |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('bla@bla'); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($account->user_id); |  | ||||||
|  |  | ||||||
|         $this->_charts->shouldReceive('account')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'ChartController@homeAccount', $account->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testHomeBudgets() |  | ||||||
|     { |  | ||||||
|         $date = new Carbon; |  | ||||||
|         $this->session(['start' => $date]); |  | ||||||
|         $this->_charts->shouldReceive('budgets')->once()->with($date)->andReturn([]); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'ChartController@homeBudgets'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testHomeCategories() |  | ||||||
|     { |  | ||||||
|         $start = new Carbon; |  | ||||||
|         $end = new Carbon; |  | ||||||
|  |  | ||||||
|         $this->_charts->shouldReceive('categories')->once()->with($start, $end)->andReturn([]); |  | ||||||
|  |  | ||||||
|         $this->session(['start' => $start, 'end' => $end]); |  | ||||||
|         $this->action('GET', 'ChartController@homeCategories'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -1,142 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon as Carbon; |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class HomeControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class HomeControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_accounts; |  | ||||||
|     protected $_repository; |  | ||||||
|     protected $_preferences; |  | ||||||
|     protected $_journals; |  | ||||||
|     protected $_reminders; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_accounts = $this->mock('Firefly\Helper\Controllers\AccountInterface'); |  | ||||||
|         $this->_repository = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface'); |  | ||||||
|         $this->_preferences = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface'); |  | ||||||
|         $this->_journals = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface'); |  | ||||||
|         $this->_reminders = $this->mock('Firefly\Storage\Reminder\ReminderRepositoryInterface'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testFlush() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'HomeController@flush'); |  | ||||||
|         $this->assertRedirectedToRoute('index'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         // mock preference: |  | ||||||
|         $preference = $this->mock('Preference'); |  | ||||||
|         $preference->shouldReceive('getAttribute')->with('data')->andReturn([]); |  | ||||||
|  |  | ||||||
|         Event::shouldReceive('fire')->with('limits.check'); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.check'); |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.check'); |  | ||||||
|  |  | ||||||
|         $this->_reminders->shouldReceive('getCurrentRecurringReminders')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // mock accounts: |  | ||||||
|         $this->_repository->shouldReceive('count')->once()->andReturn(0); |  | ||||||
|         $this->_repository->shouldReceive('getActiveDefault')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // mock preferences: |  | ||||||
|         $this->_preferences->shouldReceive('get')->with('frontpageAccounts', [])->andReturn($preference); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'HomeController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndexWithAccount() |  | ||||||
|     { |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $start = new Carbon; |  | ||||||
|         $end = new Carbon; |  | ||||||
|         $this->session(['start' => $start, 'end' => $end]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // mock preference: |  | ||||||
|         $preference = $this->mock('Preference'); |  | ||||||
|         $preference->shouldReceive('getAttribute')->with('data')->andReturn([$account->id]); |  | ||||||
|  |  | ||||||
|         Event::shouldReceive('fire')->with('limits.check'); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.check'); |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.check'); |  | ||||||
|  |  | ||||||
|         $this->_reminders->shouldReceive('getCurrentRecurringReminders')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // mock accounts: |  | ||||||
|         $this->_repository->shouldReceive('count')->once()->andReturn(0); |  | ||||||
|         $this->_repository->shouldReceive('getByIds')->with([$account->id])->once()->andReturn([$account]); |  | ||||||
|  |  | ||||||
|         // mock preferences: |  | ||||||
|         $this->_preferences->shouldReceive('get')->with('frontpageAccounts', [])->andReturn($preference); |  | ||||||
|  |  | ||||||
|         // mock journals: |  | ||||||
|         $this->_journals->shouldReceive('getByAccountInDateRange')->once()->with($account, 10, $start, $end)->andReturn( |  | ||||||
|             [1, 2] |  | ||||||
|         ); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'HomeController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndexWithAccounts() |  | ||||||
|     { |  | ||||||
|         $accountOne = f::create('Account'); |  | ||||||
|         $accountTwo = f::create('Account'); |  | ||||||
|         $accounThree = f::create('Account'); |  | ||||||
|         $set = [$accountOne, $accountTwo, $accounThree]; |  | ||||||
|         $ids = [$accountOne->id, $accountTwo->id, $accounThree->id]; |  | ||||||
|         $start = new Carbon; |  | ||||||
|         $end = new Carbon; |  | ||||||
|         $this->session(['start' => $start, 'end' => $end]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // mock preference: |  | ||||||
|         $preference = $this->mock('Preference'); |  | ||||||
|         $preference->shouldReceive('getAttribute')->with('data')->andReturn($ids); |  | ||||||
|  |  | ||||||
|         Event::shouldReceive('fire')->with('limits.check'); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.check'); |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.check'); |  | ||||||
|  |  | ||||||
|         $this->_reminders->shouldReceive('getCurrentRecurringReminders')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // mock accounts: |  | ||||||
|         $this->_repository->shouldReceive('count')->once()->andReturn(0); |  | ||||||
|         $this->_repository->shouldReceive('getByIds')->with($ids)->once()->andReturn( |  | ||||||
|             $set |  | ||||||
|         ); |  | ||||||
|  |  | ||||||
|         // mock preferences: |  | ||||||
|         $this->_preferences->shouldReceive('get')->with('frontpageAccounts', [])->andReturn($preference); |  | ||||||
|  |  | ||||||
|         // mock journals: |  | ||||||
|         $this->_journals->shouldReceive('getByAccountInDateRange')->andReturn([1, 2]); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'HomeController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @@ -1,45 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class JsonControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class JsonControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_accounts; |  | ||||||
|     protected $_categories; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface'); |  | ||||||
|         $this->_categories = $this->mock('Firefly\Storage\Category\CategoryRepositoryInterface'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testBeneficiaries() |  | ||||||
|     { |  | ||||||
|         $beneficiary = f::create('Account'); |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('getBeneficiaries')->once()->andReturn([$beneficiary]); |  | ||||||
|         $this->action('GET', 'JsonController@beneficiaries'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCategories() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $this->_categories->shouldReceive('get')->once()->andReturn([$category]); |  | ||||||
|         $this->action('GET', 'JsonController@categories'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @@ -1,245 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class LimitControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class LimitControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|  |  | ||||||
|     protected $_budgets; |  | ||||||
|     protected $_limits; |  | ||||||
|     protected $_user; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|         $this->_budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface'); |  | ||||||
|         $this->_limits = $this->mock('Firefly\Storage\Limit\LimitRepositoryInterface'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCreate() |  | ||||||
|     { |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|         $this->action('GET', 'LimitController@create'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDelete() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'LimitController@delete', $limit->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDestroy() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('destroy')->once()->andReturn(true); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'LimitController@destroy', $limit->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDestroyFails() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('destroy')->once()->andReturn(false); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'LimitController@destroy', $limit->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDestroyRedirect() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('destroy')->once()->andReturn(true); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'LimitController@destroy', [$limit->id, 'from' => 'date']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testEdit() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'LimitController@edit', $limit->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStore() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('store')->once()->andReturn($limit); |  | ||||||
|         $this->action('POST', 'LimitController@store'); |  | ||||||
|         $this->assertRedirectedToRoute('budgets.index.budget'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreFails() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limit->budget()->associate($budget); |  | ||||||
|         $limit->save(); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|         unset($limit->startdate); |  | ||||||
|         unset($limit->component_id); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('store')->once()->andReturn($limit); |  | ||||||
|         $this->action('POST', 'LimitController@store', $budget->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreRedirect() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limit->budget()->associate($budget); |  | ||||||
|         $limit->save(); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('store')->once()->andReturn($limit); |  | ||||||
|         $this->action('POST', 'LimitController@store', [$budget->id, 'from' => 'date']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdate() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('update')->once()->andReturn($limit); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action( |  | ||||||
|             'POST', 'LimitController@update', |  | ||||||
|             [$limit->id, |  | ||||||
|              'date'    => '02-02-2012', |  | ||||||
|              'period'  => 'monthly', |  | ||||||
|              'repeats' => 0, |  | ||||||
|              'amount'  => '0.01' |  | ||||||
|  |  | ||||||
|             ] |  | ||||||
|         ); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdateFails() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         unset($limit->amount); |  | ||||||
|         $this->_limits->shouldReceive('update')->once()->andReturn($limit); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action( |  | ||||||
|             'POST', 'LimitController@update', |  | ||||||
|             $limit->id |  | ||||||
|         ); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdateRedirect() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $limitrepetition = f::create('LimitRepetition'); |  | ||||||
|         $limit->limitrepetitions()->save($limitrepetition); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($limit->budget()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->_limits->shouldReceive('update')->once()->andReturn($limit); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action( |  | ||||||
|             'POST', 'LimitController@update', |  | ||||||
|             [$limit->id, |  | ||||||
|              'date'    => '02-02-2012', |  | ||||||
|              'period'  => 'monthly', |  | ||||||
|              'repeats' => 0, |  | ||||||
|              'amount'  => '0.01', |  | ||||||
|              'from'    => 'date' |  | ||||||
|  |  | ||||||
|             ] |  | ||||||
|         ); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -1,440 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class PiggybankControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class PiggybankControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_accounts; |  | ||||||
|     protected $_piggybanks; |  | ||||||
|     protected $_user; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|         $this->_accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface'); |  | ||||||
|         $this->_piggybanks = $this->mock('Firefly\Storage\Piggybank\PiggybankRepositoryInterface'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testAddMoneyGET() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_piggybanks->shouldReceive('leftOnAccount')->andReturn(1); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PiggybankController@addMoney', $piggyBank->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCreatePiggybank() |  | ||||||
|     { |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->once()->andReturn([]); |  | ||||||
|         $this->action('GET', 'PiggybankController@createPiggybank'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCreateRepeated() |  | ||||||
|     { |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->once()->andReturn([]); |  | ||||||
|         $this->action('GET', 'PiggybankController@createRepeated'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDelete() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PiggybankController@delete', $piggyBank->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDestroy() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         $this->_piggybanks->shouldReceive('destroy')->andReturn(true); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.destroy', [$piggyBank]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@destroy', $piggyBank->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testEdit() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PiggybankController@edit', $piggyBank->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testEditRepeated() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|         $piggyBank->repeats = 1; |  | ||||||
|         $piggyBank->save(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PiggybankController@edit', $piggyBank->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         $aOne = f::create('Account'); |  | ||||||
|         $aTwo = f::create('Account'); |  | ||||||
|  |  | ||||||
|         $one = f::create('Piggybank'); |  | ||||||
|         $one->account()->associate($aOne); |  | ||||||
|         $two = f::create('Piggybank'); |  | ||||||
|         $two->account()->associate($aOne); |  | ||||||
|         $three = f::create('Piggybank'); |  | ||||||
|         $three->account()->associate($aTwo); |  | ||||||
|         $this->_piggybanks->shouldReceive('get')->andReturn([$one, $two, $three]); |  | ||||||
|         $this->_piggybanks->shouldReceive('countRepeating')->andReturn(0); |  | ||||||
|         $this->_piggybanks->shouldReceive('leftOnAccount')->andReturn(0); |  | ||||||
|         $this->_piggybanks->shouldReceive('countNonrepeating')->andReturn(0); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.change'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PiggybankController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testModifyMoneyAddPOST() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|         $piggyBank->targetamount = 200; |  | ||||||
|         $piggyBank->save(); |  | ||||||
|         $input = [ |  | ||||||
|             $piggyBank->id, |  | ||||||
|             'amount' => 10.0, |  | ||||||
|             'what'   => 'add' |  | ||||||
|         ]; |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         Event::shouldReceive('fire'); //->with('piggybanks.modifyAmountAdd', [$piggyBank, 10.0]); |  | ||||||
|         $this->_piggybanks->shouldReceive('modifyAmount')->once(); |  | ||||||
|  |  | ||||||
|         $this->_piggybanks->shouldReceive('leftOnAccount')->once()->andReturn(200); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@modMoney', $input); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testModifyMoneyAddPOSTFails() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|         $piggyBank->targetamount = 200; |  | ||||||
|         $piggyBank->save(); |  | ||||||
|         $input = [ |  | ||||||
|             $piggyBank->id, |  | ||||||
|             'amount' => 10.0, |  | ||||||
|             'what'   => 'add' |  | ||||||
|         ]; |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($piggyBank->account()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.modifyAmountAdd', [$piggyBank, -10.0]); |  | ||||||
|         $this->_piggybanks->shouldReceive('leftOnAccount')->once()->andReturn(5); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@modMoney', $input); |  | ||||||
|         $this->assertSessionHas('warning'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @expectedException \Firefly\Exception\FireflyException |  | ||||||
|      */ |  | ||||||
|     public function testModifyMoneyPOSTException() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|         $piggyBank->targetamount = 200; |  | ||||||
|         $piggyBank->save(); |  | ||||||
|         $input = [ |  | ||||||
|             $piggyBank->id, |  | ||||||
|             'amount' => 10.0, |  | ||||||
|             'what'   => 'yomoma' |  | ||||||
|         ]; |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($piggyBank->account()->first()->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@modMoney', $input); |  | ||||||
|         $this->assertSessionHas('warning'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testModifyMoneyRemovePOST() |  | ||||||
|     { |  | ||||||
|         $pig = $this->mock('Piggybank'); |  | ||||||
|         $piggybank = f::create('Piggybank'); |  | ||||||
|         $rep = f::create('PiggybankRepetition'); |  | ||||||
|         $rep->piggybank_id = $piggybank->id; |  | ||||||
|         $rep->save(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $rep->piggybank()->first()->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $pig->shouldReceive('currentRelevantRep')->andReturn($rep); |  | ||||||
|         $this->_piggybanks->shouldReceive('leftOnAccount')->andReturn(11); |  | ||||||
|         $this->_piggybanks->shouldReceive('modifyAmount')->once(); |  | ||||||
|  |  | ||||||
|         $input = [ |  | ||||||
|             $rep->piggybank()->first()->id, |  | ||||||
|             'amount' => 10.0, |  | ||||||
|             'what'   => 'remove' |  | ||||||
|         ]; |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@modMoney', $input); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testModifyMoneyRemovePOSTFails() |  | ||||||
|     { |  | ||||||
|         $pig = $this->mock('Piggybank'); |  | ||||||
|         $piggybank = f::create('Piggybank'); |  | ||||||
|         $rep = f::create('PiggybankRepetition'); |  | ||||||
|         $rep->piggybank_id = $piggybank->id; |  | ||||||
|         $rep->currentAmount = 5; |  | ||||||
|         $rep->save(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $rep->piggybank()->first()->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $pig->shouldReceive('currentRelevantRep')->andReturn($rep); |  | ||||||
|  |  | ||||||
|         $input = [ |  | ||||||
|             $rep->piggybank()->first()->id, |  | ||||||
|             'amount' => 10.0, |  | ||||||
|             'what'   => 'remove' |  | ||||||
|         ]; |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@modMoney', $input); |  | ||||||
|         $this->assertSessionHas('warning'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testRemoveMoneyGET() |  | ||||||
|     { |  | ||||||
|         $pig = $this->mock('Piggybank'); |  | ||||||
|         $piggybank = f::create('Piggybank'); |  | ||||||
|         $rep = f::create('PiggybankRepetition'); |  | ||||||
|         $rep->piggybank_id = $piggybank->id; |  | ||||||
|         $rep->save(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $rep->piggybank()->first()->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $pig->shouldReceive('currentRelevantRep')->andReturn($rep); |  | ||||||
|  |  | ||||||
|         $this->_piggybanks->shouldReceive('leftOnAccount')->andReturn(1)->once(); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PiggybankController@removeMoney', $piggybank->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testShow() |  | ||||||
|     { |  | ||||||
|         $pig = $this->mock('Piggybank'); |  | ||||||
|         $piggybank = f::create('Piggybank'); |  | ||||||
|         $rep = f::create('PiggybankRepetition'); |  | ||||||
|         $rep->piggybank_id = $piggybank->id; |  | ||||||
|         $rep->save(); |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn( |  | ||||||
|             $piggybank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $pig->shouldReceive('currentRelevantRep')->andReturn($rep); |  | ||||||
|  |  | ||||||
|         // repos: |  | ||||||
|         $this->_piggybanks->shouldReceive('leftOnAccount'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PiggybankController@show', $piggybank->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreRepeated() |  | ||||||
|     { |  | ||||||
|         $piggy = f::create('Piggybank'); |  | ||||||
|         $piggy->repeats = 1; |  | ||||||
|         $piggy->save(); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.store', [$piggy])->once(); |  | ||||||
|         $this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy); |  | ||||||
|         $this->action('POST', 'PiggybankController@storeRepeated'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreRepeatedFails() |  | ||||||
|     { |  | ||||||
|         $piggy = f::create('Piggybank'); |  | ||||||
|         unset($piggy->id); |  | ||||||
|         $this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy); |  | ||||||
|         $this->action('POST', 'PiggybankController@storeRepeated'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdate() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|  |  | ||||||
|         $this->_piggybanks->shouldReceive('update')->andReturn($piggyBank); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.update', [$piggyBank]); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@update', $piggyBank->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdateFails() |  | ||||||
|     { |  | ||||||
|         $piggyBank = f::create('Piggybank'); |  | ||||||
|         unset($piggyBank->name); |  | ||||||
|  |  | ||||||
|         $this->_piggybanks->shouldReceive('update')->andReturn($piggyBank); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn( |  | ||||||
|             $piggyBank->account()->first()->user_id |  | ||||||
|         ); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.change'); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'PiggybankController@update', $piggyBank->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function teststorePiggybank() |  | ||||||
|     { |  | ||||||
|         $piggy = f::create('Piggybank'); |  | ||||||
|         $piggy->repeats = 0; |  | ||||||
|         $piggy->save(); |  | ||||||
|         Event::shouldReceive('fire')->with('piggybanks.store', [$piggy])->once(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy); |  | ||||||
|         $this->action('POST', 'PiggybankController@storePiggybank'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function teststorePiggybankFails() |  | ||||||
|     { |  | ||||||
|         $piggy = f::create('Piggybank'); |  | ||||||
|         unset($piggy->id); |  | ||||||
|         $this->_piggybanks->shouldReceive('store')->once()->andReturn($piggy); |  | ||||||
|         $this->action('POST', 'PiggybankController@storePiggybank'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -1,56 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
|  |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class PreferencesControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class PreferencesControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|  |  | ||||||
|     protected $_user; |  | ||||||
|     protected $_helper; |  | ||||||
|     protected $_accounts; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|         $this->_helper = $this->mock('Firefly\Helper\Preferences\PreferencesHelperInterface'); |  | ||||||
|         $this->_accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         $viewRange = $this->mock('Preference'); |  | ||||||
|         $viewRange->shouldReceive('getAttribute')->with('data')->andReturn('1M'); |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('getDefault')->andReturn([]); |  | ||||||
|         $this->_helper->shouldReceive('get')->with('viewRange', '1M')->andReturn($viewRange); |  | ||||||
|         $this->_helper->shouldReceive('get')->with('frontpageAccounts', [])->andReturn([]); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'PreferencesController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostIndex() |  | ||||||
|     { |  | ||||||
|         $this->_helper->shouldReceive('set')->with('frontpageAccounts', [1]); |  | ||||||
|         $this->_helper->shouldReceive('set')->with('viewRange', '1M'); |  | ||||||
|         $this->action('POST', 'PreferencesController@postIndex', ['frontpageAccounts' => [1], 'viewRange' => '1M']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @@ -1,135 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class ProfileControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class ProfileControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_user; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     public function testChangePassword() |  | ||||||
|     { |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($this->_user->id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'ProfileController@changePassword'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($this->_user->id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'ProfileController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostChangePasswordDifferentNew() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($user->id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn($user->email); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('password')->andReturn($user->password); |  | ||||||
|  |  | ||||||
|         $this->action( |  | ||||||
|             'POST', 'ProfileController@postChangePassword', |  | ||||||
|             ['old' => 'sander', 'new1' => 'sander1', 'new2' => 'sander2'] |  | ||||||
|         ); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostChangePasswordOK() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         $user->password = 'sander'; |  | ||||||
|         $user->save(); |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($user->id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn($user->email); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('password')->andReturn($user->password); |  | ||||||
|  |  | ||||||
|         $this->action( |  | ||||||
|             'POST', 'ProfileController@postChangePassword', |  | ||||||
|             ['old' => 'sander', 'new1' => 'sander2', 'new2' => 'sander2'] |  | ||||||
|         ); |  | ||||||
|         $this->assertSessionHas('success'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     public function testPostChangePasswordNoCurrent() |  | ||||||
|     { |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($this->_user->id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('password')->andReturn('Blablabla'); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'ProfileController@postChangePassword', ['old' => '']); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostChangePasswordNoMatchNew() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($user->id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn($user->email); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('password')->andReturn($user->password); |  | ||||||
|  |  | ||||||
|         $this->action( |  | ||||||
|             'POST', 'ProfileController@postChangePassword', ['old' => 'sander', 'new1' => 'sander', 'new2' => 'sander'] |  | ||||||
|         ); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostChangePasswordSame() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($user->id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn($user->email); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('password')->andReturn($user->password); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'ProfileController@postChangePassword', ['old' => 'sander']); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| }  |  | ||||||
| @@ -1,178 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class RecurringControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class RecurringControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_user; |  | ||||||
|     protected $_repository; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|         $this->_repository = $this->mock( |  | ||||||
|             'Firefly\Storage\RecurringTransaction\RecurringTransactionRepositoryInterface' |  | ||||||
|         ); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCreate() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'RecurringController@create'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDelete() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($recurringTransaction->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'RecurringController@delete', $recurringTransaction->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDestroy() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.destroy',m::any()); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($recurringTransaction->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         $this->_repository->shouldReceive('destroy')->andReturn(true); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'RecurringController@destroy', $recurringTransaction->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDestroyFails() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.destroy',m::any()); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($recurringTransaction->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|         $this->_repository->shouldReceive('destroy')->andReturn(false); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'RecurringController@destroy', $recurringTransaction->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testEdit() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($recurringTransaction->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->once()->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'RecurringController@edit', $recurringTransaction->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('get')->andReturn([]); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'RecurringController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testShow() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($recurringTransaction->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'RecurringController@show', $recurringTransaction->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStore() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.store',m::any()); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($recurringTransaction); |  | ||||||
|         $this->action('POST', 'RecurringController@store'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreRedirect() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.store',m::any()); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($recurringTransaction); |  | ||||||
|         $this->action('POST', 'RecurringController@store', ['create' => '1']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreFails() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|         unset($recurringTransaction->active); |  | ||||||
|         unset($recurringTransaction->automatch); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($recurringTransaction); |  | ||||||
|         $this->action('POST', 'RecurringController@store', ['create' => '1']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdate() |  | ||||||
|     { |  | ||||||
|         $recurringTransaction = f::create('RecurringTransaction'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->andReturn($recurringTransaction->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         Event::shouldReceive('fire')->with('recurring.update',m::any()); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($recurringTransaction); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'RecurringController@update', $recurringTransaction->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class ReportControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class ReportControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'ReportController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| }  |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class SearchControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class SearchControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'SearchController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| }  |  | ||||||
| @@ -1,312 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class TransactionControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class TransactionControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_user; |  | ||||||
|     protected $_repository; |  | ||||||
|  |  | ||||||
|     protected $_accounts; |  | ||||||
|     protected $_budgets; |  | ||||||
|     protected $_piggies; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|         $this->_repository = $this->mock('Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface'); |  | ||||||
|         $this->_accounts = $this->mock('Firefly\Storage\Account\AccountRepositoryInterface'); |  | ||||||
|         $this->_budgets = $this->mock('Firefly\Storage\Budget\BudgetRepositoryInterface'); |  | ||||||
|         $this->_piggies = $this->mock('Firefly\Storage\Piggybank\PiggybankRepositoryInterface'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCreateDeposit() |  | ||||||
|     { |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|         $this->_piggies->shouldReceive('get')->andReturn([]); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'TransactionController@create', ['what' => 'deposit']); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCreateTransfer() |  | ||||||
|     { |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|         $this->_piggies->shouldReceive('get')->andReturn([]); |  | ||||||
|         $this->action('GET', 'TransactionController@create', ['what' => 'transfer']); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCreateWithdrawal() |  | ||||||
|     { |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|         $this->_piggies->shouldReceive('get')->andReturn([]); |  | ||||||
|         $this->action('GET', 'TransactionController@create', ['what' => 'withdrawal']); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDelete() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'TransactionController@delete', $journal->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testDestroy() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'TransactionController@destroy', $journal->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testEdit() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $type = f::create('TransactionType'); |  | ||||||
|         $type->type = 'Withdrawal'; |  | ||||||
|         $type->save(); |  | ||||||
|         $journal->transactiontype()->associate($type); |  | ||||||
|         $journal->save(); |  | ||||||
|  |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $journal->categories()->save($category); |  | ||||||
|  |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $journal->budgets()->save($budget); |  | ||||||
|  |  | ||||||
|         $one = f::create('Transaction'); |  | ||||||
|         $two = f::create('Transaction'); |  | ||||||
|         $one->transactionjournal()->associate($journal); |  | ||||||
|         $two->transactionjournal()->associate($journal); |  | ||||||
|         $one->save(); |  | ||||||
|         $two->save(); |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->_piggies->shouldReceive('get')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'TransactionController@edit', $journal->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testEditDeposit() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $type = f::create('TransactionType'); |  | ||||||
|         $type->type = 'Deposit'; |  | ||||||
|         $type->save(); |  | ||||||
|         $journal->transactiontype()->associate($type); |  | ||||||
|         $journal->save(); |  | ||||||
|  |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $journal->categories()->save($category); |  | ||||||
|  |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $journal->budgets()->save($budget); |  | ||||||
|  |  | ||||||
|         $one = f::create('Transaction'); |  | ||||||
|         $two = f::create('Transaction'); |  | ||||||
|         $one->transactionjournal()->associate($journal); |  | ||||||
|         $two->transactionjournal()->associate($journal); |  | ||||||
|         $one->save(); |  | ||||||
|         $two->save(); |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|  |  | ||||||
|         $this->_piggies->shouldReceive('get')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'TransactionController@edit', $journal->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testEditTransfer() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $type = f::create('TransactionType'); |  | ||||||
|         $type->type = 'Transfer'; |  | ||||||
|         $type->save(); |  | ||||||
|         $journal->transactiontype()->associate($type); |  | ||||||
|         $journal->save(); |  | ||||||
|  |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $journal->categories()->save($category); |  | ||||||
|  |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $journal->budgets()->save($budget); |  | ||||||
|  |  | ||||||
|         $one = f::create('Transaction'); |  | ||||||
|         $two = f::create('Transaction'); |  | ||||||
|         $one->transactionjournal()->associate($journal); |  | ||||||
|         $two->transactionjournal()->associate($journal); |  | ||||||
|         $one->save(); |  | ||||||
|         $two->save(); |  | ||||||
|  |  | ||||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); |  | ||||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); |  | ||||||
|         $this->_piggies->shouldReceive('get')->once()->andReturn([]); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'TransactionController@edit', $journal->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testIndex() |  | ||||||
|     { |  | ||||||
|  |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $type = f::create('TransactionType'); |  | ||||||
|         $type->type = 'Withdrawal'; |  | ||||||
|         $type->save(); |  | ||||||
|         $journal->transactiontype()->associate($type); |  | ||||||
|         $journal->save(); |  | ||||||
|  |  | ||||||
|         $one = f::create('Transaction'); |  | ||||||
|         $two = f::create('Transaction'); |  | ||||||
|         $one->transactionjournal()->associate($journal); |  | ||||||
|         $two->transactionjournal()->associate($journal); |  | ||||||
|         $one->save(); |  | ||||||
|         $two->save(); |  | ||||||
|  |  | ||||||
|         // make a paginator |  | ||||||
|         $paginator = Paginator::make([$journal], 1, 1); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('paginate')->with(25)->andReturn($paginator); |  | ||||||
|         $this->_repository->shouldReceive('get')->andReturn([]); |  | ||||||
|         $this->action('GET', 'TransactionController@index'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testShow() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->action('GET', 'TransactionController@show', $journal->id); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStore() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($journal); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'TransactionController@store', ['what' => 'deposit']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreFails() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         unset($journal->description); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($journal); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'TransactionController@store', ['what' => 'deposit', 'create' => '1']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testStoreRedirect() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('store')->andReturn($journal); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'TransactionController@store', ['what' => 'deposit', 'create' => '1']); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdate() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($journal); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'TransactionController@update', $journal->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUpdateFailed() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // for binding |  | ||||||
|         Auth::shouldReceive('user')->andReturn($this->_user); |  | ||||||
|         Auth::shouldReceive('check')->andReturn(true); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('id')->once()->andReturn($journal->user_id); |  | ||||||
|         $this->_user->shouldReceive('getAttribute')->with('email')->andReturn('some@email'); |  | ||||||
|  |  | ||||||
|         $journal->description = null; |  | ||||||
|  |  | ||||||
|         $this->_repository->shouldReceive('update')->andReturn($journal); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'TransactionController@update', $journal->id); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @@ -1,167 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
| use Mockery as m; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class UserControllerTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  * @SuppressWarnings(PHPMD.CamelCasePropertyName) |  | ||||||
|  */ |  | ||||||
| class UserControllerTest extends TestCase |  | ||||||
| { |  | ||||||
|     protected $_user; |  | ||||||
|     protected $_users; |  | ||||||
|     protected $_email; |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|  |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|         $this->_user = m::mock('User', 'Eloquent'); |  | ||||||
|         $this->_users = $this->mock('Firefly\Storage\User\UserRepositoryInterface'); |  | ||||||
|         $this->_email = $this->mock('Firefly\Helper\Email\EmailHelperInterface'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         m::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testLogin() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'UserController@login'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testLogout() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'UserController@logout'); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostLogin() |  | ||||||
|     { |  | ||||||
|         $input = [ |  | ||||||
|             'email'    => 'bla@bla', |  | ||||||
|             'password' => 'something', |  | ||||||
|         ]; |  | ||||||
|  |  | ||||||
|         Auth::shouldReceive('attempt')->with($input, false)->andReturn(true); |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'UserController@postLogin', $input); |  | ||||||
|         $this->assertResponseStatus(302); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostLoginFails() |  | ||||||
|     { |  | ||||||
|  |  | ||||||
|         $this->action('POST', 'UserController@postLogin'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostRegister() |  | ||||||
|     { |  | ||||||
|         Config::set('auth.allow_register', true); |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         $this->_users->shouldReceive('register')->andReturn($user); |  | ||||||
|         $this->_email->shouldReceive('sendPasswordMail')->with($user); |  | ||||||
|         $this->action('POST', 'UserController@postRegister'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostRegisterFails() |  | ||||||
|     { |  | ||||||
|         Config::set('auth.allow_register', true); |  | ||||||
|         $this->_users->shouldReceive('register')->andReturn(false); |  | ||||||
|         $this->action('POST', 'UserController@postRegister'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostRegisterNotAllowed() |  | ||||||
|     { |  | ||||||
|         Config::set('auth.allow_register', false); |  | ||||||
|         $this->action('POST', 'UserController@postRegister'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostRegisterVerify() |  | ||||||
|     { |  | ||||||
|         Config::set('auth.allow_register', true); |  | ||||||
|         Config::set('auth.verify_mail', true); |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         $this->_users->shouldReceive('register')->andReturn($user); |  | ||||||
|         $this->_email->shouldReceive('sendVerificationMail')->with($user); |  | ||||||
|         $this->action('POST', 'UserController@postRegister'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostRemindme() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         Config::set('auth.verify_reset', true); |  | ||||||
|         $this->_users->shouldReceive('findByEmail')->andReturn($user); |  | ||||||
|         $this->_email->shouldReceive('sendResetVerification'); |  | ||||||
|         $this->action('POST', 'UserController@postRemindme'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostRemindmeNoVerify() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         Config::set('auth.verify_reset', false); |  | ||||||
|         $this->_users->shouldReceive('findByEmail')->andReturn($user); |  | ||||||
|         $this->_email->shouldReceive('sendPasswordMail'); |  | ||||||
|         $this->action('POST', 'UserController@postRemindme'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPostRemindmeFails() |  | ||||||
|     { |  | ||||||
|         Config::set('auth.verify_reset', true); |  | ||||||
|         $this->_users->shouldReceive('findByEmail')->andReturn(false); |  | ||||||
|         $this->action('POST', 'UserController@postRemindme'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testRegister() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'UserController@register'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testRegisterNotAllowed() |  | ||||||
|     { |  | ||||||
|         Config::set('auth.allow_register', false); |  | ||||||
|         $this->action('GET', 'UserController@register'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testRemindme() |  | ||||||
|     { |  | ||||||
|         $this->action('GET', 'UserController@remindme'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testReset() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|  |  | ||||||
|         $this->_users->shouldReceive('findByReset')->andReturn($user); |  | ||||||
|         $this->_email->shouldReceive('sendPasswordMail'); |  | ||||||
|         $this->action('GET', 'UserController@reset'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testResetNoUser() |  | ||||||
|     { |  | ||||||
|         $this->_users->shouldReceive('findByReset')->andReturn(false); |  | ||||||
|         $this->action('GET', 'UserController@reset'); |  | ||||||
|         $this->assertResponseOk(); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Account', |  | ||||||
|     [ |  | ||||||
|         'user_id'         => 'factory|User', |  | ||||||
|         'account_type_id' => 'factory|AccountType', |  | ||||||
|         'name'            => 'word', |  | ||||||
|         'active'          => 'boolean' |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|       'AccountType', |  | ||||||
|           [ |  | ||||||
|               'type'     => 'unique:word', |  | ||||||
|               'editable' => 1 |  | ||||||
|           ] |  | ||||||
| ); |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Budget', |  | ||||||
|     [ |  | ||||||
|         'name'    => 'word', |  | ||||||
|         'user_id' => 'factory|User', |  | ||||||
|         'class'   => 'Budget' |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Category', |  | ||||||
|     [ |  | ||||||
|         'name'    => 'word', |  | ||||||
|         'user_id' => 'factory|User', |  | ||||||
|         'class'   => 'Category' |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Component', |  | ||||||
|     [ |  | ||||||
|         'name'    => 'word', |  | ||||||
|         'user_id' => 'factory|User', |  | ||||||
|         'class'   => 'Component' |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,26 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Limit', |  | ||||||
|     [ |  | ||||||
|  |  | ||||||
|         'component_id' => 'factory|Budget', |  | ||||||
|         'startdate'    => function () { |  | ||||||
|                 $start = new Carbon; |  | ||||||
|                 $start->startOfMonth(); |  | ||||||
|  |  | ||||||
|                 return $start; |  | ||||||
|             }, |  | ||||||
|         'amount'       => 100, |  | ||||||
|         'repeats'      => 'boolean', |  | ||||||
|         'repeat_freq'  => function () { |  | ||||||
|                 $frequencies = ['daily', 'weekly', 'monthly', 'quarterly', 'half-year', 'yearly']; |  | ||||||
|  |  | ||||||
|                 return $frequencies[rand(0, 5)]; |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'LimitRepetition', |  | ||||||
|     [ |  | ||||||
|  |  | ||||||
|         'limit_id'  => 'factory|Limit', |  | ||||||
|         'startdate' => function () { |  | ||||||
|                 $start = new Carbon; |  | ||||||
|                 $start->startOfMonth(); |  | ||||||
|  |  | ||||||
|                 return $start; |  | ||||||
|  |  | ||||||
|             }, |  | ||||||
|         'enddate'   => function () { |  | ||||||
|                 $end = new Carbon; |  | ||||||
|                 $end->endOfMonth(); |  | ||||||
|  |  | ||||||
|                 return $end; |  | ||||||
|  |  | ||||||
|             }, |  | ||||||
|         'amount'    => 100 |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,32 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Piggybank', |  | ||||||
|     [ |  | ||||||
|  |  | ||||||
|         'account_id'    => 'factory|Account', |  | ||||||
|         'name'          => 'word', |  | ||||||
|         'targetamount'  => 'integer', |  | ||||||
|         'startdate'     => function () { |  | ||||||
|                 $start = new Carbon; |  | ||||||
|                 $start->startOfMonth(); |  | ||||||
|  |  | ||||||
|                 return $start; |  | ||||||
|             }, |  | ||||||
|         'targetdate'    => function () { |  | ||||||
|                 $end = new Carbon; |  | ||||||
|                 $end->endOfMonth(); |  | ||||||
|  |  | ||||||
|                 return $end; |  | ||||||
|             }, |  | ||||||
|         'repeats'       => 0, |  | ||||||
|         'rep_length'    => null, |  | ||||||
|         'rep_times'     => 0, |  | ||||||
|         'rep_every'     => 0, |  | ||||||
|         'reminder'      => null, |  | ||||||
|         'reminder_skip' => 0, |  | ||||||
|         'order'         => 1, |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,14 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'PiggybankEvent', |  | ||||||
|     [ |  | ||||||
|  |  | ||||||
|         'piggybank_id' => 'factory|Piggybank', |  | ||||||
|         'date'         => new Carbon, |  | ||||||
|         'amount'       => 10 |  | ||||||
|  |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,25 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'PiggybankRepetition', |  | ||||||
|     [ |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         'piggybank_id'  => 'factory|Piggybank', |  | ||||||
|         'startdate'     => function () { |  | ||||||
|                 $start = new Carbon; |  | ||||||
|                 $start->startOfMonth(); |  | ||||||
|  |  | ||||||
|                 return $start; |  | ||||||
|             }, |  | ||||||
|         'targetdate'    => function () { |  | ||||||
|                 $end = new Carbon; |  | ||||||
|                 $end->endOfMonth(); |  | ||||||
|  |  | ||||||
|                 return $end; |  | ||||||
|             }, |  | ||||||
|         'currentamount' => 200 |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Preference', |  | ||||||
|     [ |  | ||||||
|  |  | ||||||
|         'user_id' => 'factory|User', |  | ||||||
|         'name'    => 'word', |  | ||||||
|         'data'    => 'word' |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| // TODO better factory. |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'RecurringTransaction', |  | ||||||
|     [ |  | ||||||
|  |  | ||||||
|         'user_id'     => 'factory|User', |  | ||||||
|         'name'        => 'string', |  | ||||||
|         'match'       => 'string', |  | ||||||
|         'amount_max'  => 100, |  | ||||||
|         'amount_min'  => 50, |  | ||||||
|         'date'        => new Carbon, |  | ||||||
|         'active'      => 'boolean', |  | ||||||
|         'automatch'   => 'boolean', |  | ||||||
|         'repeat_freq' => 'monthly', |  | ||||||
|         'skip'        => 'boolean', |  | ||||||
|  |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
|  |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'Transaction', |  | ||||||
|     [ |  | ||||||
|         'account_id'             => 'factory|Account', |  | ||||||
|         'piggybank_id'           => null, |  | ||||||
|         'transaction_journal_id' => 'factory|TransactionJournal', |  | ||||||
|         'description'            => 'string', |  | ||||||
|         'amount'                 => 'integer:5', |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,11 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
|  |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'TransactionCurrency', |  | ||||||
|     [ |  | ||||||
|         'code' => 'EUR' |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
|  |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'TransactionJournal', |  | ||||||
|     [ |  | ||||||
|         'transaction_type_id'     => 'factory|TransactionType', |  | ||||||
|         'transaction_currency_id' => 'factory|TransactionCurrency', |  | ||||||
|         'description'             => 'word', |  | ||||||
|         'completed'               => 'boolean', |  | ||||||
|         'user_id'                 => 'factory|User', |  | ||||||
|         'date'                    => new Carbon |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
|  |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'TransactionType', |  | ||||||
|     [ |  | ||||||
|         'type' => function () { |  | ||||||
|                 $types = ['Withdrawal', 'Deposit', 'Transfer', 'Opening balance']; |  | ||||||
|  |  | ||||||
|                 return $types[rand(0, 3)]; |  | ||||||
|             } |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| <?php |  | ||||||
| use League\FactoryMuffin\Facade; |  | ||||||
|  |  | ||||||
| Facade::define( |  | ||||||
|     'User', |  | ||||||
|     [ |  | ||||||
|         'email'          => 'safeEmail', |  | ||||||
|         'password'       => function () { |  | ||||||
|                 return \Str::random(60); |  | ||||||
|             }, |  | ||||||
|         'reset'          => function () { |  | ||||||
|                 return \Str::random(32); |  | ||||||
|             }, |  | ||||||
|         'remember_token' => null, |  | ||||||
|         'migrated'       => 'boolean' |  | ||||||
|     ] |  | ||||||
| ); |  | ||||||
| @@ -1,417 +0,0 @@ | |||||||
| <?php |  | ||||||
| use Carbon\Carbon; |  | ||||||
| use League\FactoryMuffin\Facade as f; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * Class ModelTest |  | ||||||
|  * |  | ||||||
|  * @SuppressWarnings(PHPMD.TooManyMethods) |  | ||||||
|  */ |  | ||||||
| class ModelTest extends TestCase |  | ||||||
| { |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     public function setUp() |  | ||||||
|     { |  | ||||||
|         parent::setUp(); |  | ||||||
|         Artisan::call('migrate'); |  | ||||||
|         Artisan::call('db:seed'); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function tearDown() |  | ||||||
|     { |  | ||||||
|         Mockery::close(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testAccount() |  | ||||||
|     { |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         $type = f::create('AccountType'); |  | ||||||
|         $piggybank = f::create('Piggybank'); |  | ||||||
|         $account->user()->associate($user); |  | ||||||
|         $account->accounttype()->associate($type); |  | ||||||
|         $account->piggybanks()->save($piggybank); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $this->assertEquals($account->predict(new Carbon), null); |  | ||||||
|         $this->assertEquals($account->balance(new Carbon), null); |  | ||||||
|         $this->assertEquals($account->user_id, $user->id); |  | ||||||
|         $this->assertEquals($piggybank->account_id, $account->id); |  | ||||||
|         $this->assertEquals($account->account_type_id, $type->id); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testAccountType() |  | ||||||
|     { |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $type = f::create('AccountType'); |  | ||||||
|         $type->accounts()->save($account); |  | ||||||
|  |  | ||||||
|         $this->assertEquals($account->account_type_id, $type->id); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testBudget() |  | ||||||
|     { |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $budget->limits()->save($limit); |  | ||||||
|         $budget->transactionjournals()->save($journal); |  | ||||||
|  |  | ||||||
|         $this->assertEquals($limit->component_id, $budget->id); |  | ||||||
|         $this->assertEquals($journal->budgets()->first()->id, $budget->id); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testCategory() |  | ||||||
|     { |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $category->transactionjournals()->save($journal); |  | ||||||
|  |  | ||||||
|         $this->assertEquals($journal->categories()->first()->id, $category->id); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testComponent() |  | ||||||
|     { |  | ||||||
|         $component = f::create('Component'); |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $component->limits()->save($limit); |  | ||||||
|         $component->save(); |  | ||||||
|  |  | ||||||
|         $transaction = f::create('Transaction'); |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $user = f::create('User'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         $component->transactions()->save($transaction); |  | ||||||
|         $component->transactionjournals()->save($journal); |  | ||||||
|         $component->user()->associate($user); |  | ||||||
|  |  | ||||||
|         $this->assertEquals($transaction->components()->first()->id, $component->id); |  | ||||||
|         $this->assertEquals($journal->components()->first()->id, $component->id); |  | ||||||
|         $this->assertEquals($limit->component()->first()->id, $component->id); |  | ||||||
|         $this->assertEquals($component->user_id, $user->id); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testLimit() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $rep = f::create('LimitRepetition'); |  | ||||||
|         $limit->budget()->associate($budget); |  | ||||||
|         $limit->limitrepetitions()->save($rep); |  | ||||||
|         $rep->save(); |  | ||||||
|         $limit->save(); |  | ||||||
|  |  | ||||||
|         $this->assertEquals($rep->limit_id, $limit->id); |  | ||||||
|         $this->assertEquals($limit->component_id, $budget->id); |  | ||||||
|  |  | ||||||
|         // create repetition: |  | ||||||
|         $start = new Carbon; |  | ||||||
|         $list = ['daily', 'weekly', 'monthly', 'quarterly', 'half-year', 'yearly']; |  | ||||||
|         foreach ($list as $entry) { |  | ||||||
|             $limit->repeat_freq = $entry; |  | ||||||
|             $limit->createRepetition($start); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
| //    /** |  | ||||||
| //     * @expectedException \Firefly\Exception\FireflyException |  | ||||||
| //     */ |  | ||||||
| //    public function testLimitrepetition() |  | ||||||
| //    { |  | ||||||
| //        $limit = f::create('Limit'); |  | ||||||
| //        $rep = f::create('LimitRepetition'); |  | ||||||
| //        $budget = f::create('Budget'); |  | ||||||
| //        $journal = f::create('TransactionJournal'); |  | ||||||
| //        $one = f::create('Transaction'); |  | ||||||
| //        $two = f::create('Transaction'); |  | ||||||
| //        $one->amount = 300; |  | ||||||
| //        $two->amount = -300; |  | ||||||
| // |  | ||||||
| //        $rep->limit()->associate($limit); |  | ||||||
| //        $limit->budget()->associate($budget); |  | ||||||
| //        $journal->transactions()->save($one); |  | ||||||
| //        $journal->transactions()->save($two); |  | ||||||
| //        $journal->budgets()->save($budget); |  | ||||||
| // |  | ||||||
| //        $this->assertEquals(($rep->amount - 300), $rep->left()); |  | ||||||
| // |  | ||||||
| //        // repeat frequency (not present) for periodOrder |  | ||||||
| //        $testDate = new Carbon; |  | ||||||
| //        $testDate->startOfMonth(); |  | ||||||
| //        $rep->repeat_freq = null; |  | ||||||
| // |  | ||||||
| //        // this test will FAIL because nowadays the $rep has a random thing. |  | ||||||
| //        // TODO |  | ||||||
| // |  | ||||||
| // |  | ||||||
| //        //$this->assertEquals($testDate->format('Ymd') . '-3', $rep->periodOrder()); |  | ||||||
| // |  | ||||||
| //        // repeat frequency (present) for periodOrder |  | ||||||
| //        $list = ['yearly', 'half-year', 'quarterly', 'monthly', 'weekly', 'daily']; |  | ||||||
| //        foreach ($list as $index => $entry) { |  | ||||||
| //            $rep->repeat_freq = $entry; |  | ||||||
| //            $this->assertEquals($testDate->format('Ymd') . '-' . $index, $rep->periodOrder()); |  | ||||||
| //        } |  | ||||||
| // |  | ||||||
| //        // repeat freq (invalid) for periodOrder |  | ||||||
| //        $rep->repeat_freq = 'bad'; |  | ||||||
| //        $rep->periodOrder(); |  | ||||||
| // |  | ||||||
| //    } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * @expectedException \Firefly\Exception\FireflyException |  | ||||||
|      */ |  | ||||||
|     public function testLimitrepetitionContinued() |  | ||||||
|     { |  | ||||||
|         $limit = f::create('Limit'); |  | ||||||
|         $rep = f::create('LimitRepetition'); |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $one = f::create('Transaction'); |  | ||||||
|         $two = f::create('Transaction'); |  | ||||||
|         $one->amount = 300; |  | ||||||
|         $two->amount = -300; |  | ||||||
|  |  | ||||||
|         $rep->limit()->associate($limit); |  | ||||||
|         $limit->budget()->associate($budget); |  | ||||||
|         $journal->transactions()->save($one); |  | ||||||
|         $journal->transactions()->save($two); |  | ||||||
|         $journal->budgets()->save($budget); |  | ||||||
|  |  | ||||||
|         // repeat frequency (not present) for periodShow |  | ||||||
|         $testDate = new Carbon; |  | ||||||
|         $testDate->startOfMonth(); |  | ||||||
|         $rep->repeat_freq = null; |  | ||||||
|         // TODO cannot test this with the new factories. |  | ||||||
| //        $this->assertEquals($testDate->format('F Y'), $rep->periodShow()); |  | ||||||
|  |  | ||||||
|         // repeat frequency (present) for periodOrder |  | ||||||
|         $list = ['yearly', 'half-year', 'quarterly', 'monthly', 'weekly', 'daily']; |  | ||||||
|         foreach ($list as $entry) { |  | ||||||
|             $rep->repeat_freq = $entry; |  | ||||||
|             $this->assertGreaterThan(0, strlen($rep->periodShow())); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // repeat freq (invalid) for periodOrder |  | ||||||
|         $rep->repeat_freq = 'bad'; |  | ||||||
|         $rep->periodShow(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPiggybank() |  | ||||||
|     { |  | ||||||
|         $piggy = f::create('Piggybank'); |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $piggy->account()->associate($account); |  | ||||||
|         $this->assertEquals($account->id, $piggy->account_id); |  | ||||||
|  |  | ||||||
|         $repetition = f::create('PiggybankRepetition'); |  | ||||||
|         $repetition->piggybank()->associate($piggy); |  | ||||||
|         $repetition->save(); |  | ||||||
|         $list = ['day', 'week', 'month', 'year']; |  | ||||||
|  |  | ||||||
|         // with a start date, so next reminder is built from a loop: |  | ||||||
|         foreach ($list as $reminder) { |  | ||||||
|             $piggy->reminder = $reminder; |  | ||||||
|             $repetition->save(); |  | ||||||
|             $piggy->nextReminderDate(); |  | ||||||
|         } |  | ||||||
|         // set the reminder period to be invalid, should return NULL |  | ||||||
|         $piggy->reminder = 'invalid'; |  | ||||||
|         $piggy->save(); |  | ||||||
|         $this->assertNull($piggy->nextReminderDate()); |  | ||||||
|  |  | ||||||
|         // set the start date to zero, give a valid $reminder, retry: |  | ||||||
|         $repetition->startdate = null; |  | ||||||
|         $piggy->reminder = 'month'; |  | ||||||
|         $repetition->save(); |  | ||||||
|         foreach ($list as $reminder) { |  | ||||||
|             $piggy->reminder = $reminder; |  | ||||||
|             $repetition->save(); |  | ||||||
|             $piggy->nextReminderDate(); |  | ||||||
|         } |  | ||||||
|         // set the reminder to be invalid again: |  | ||||||
|         $piggy->reminder = 'invalid'; |  | ||||||
|         $piggy->save(); |  | ||||||
|         $piggy->nextReminderDate(); |  | ||||||
|  |  | ||||||
|         // set it to be NULL |  | ||||||
|         $piggy->reminder = null; |  | ||||||
|         $piggy->save(); |  | ||||||
|         $piggy->nextReminderDate(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         // remove the repetition, retry: |  | ||||||
|         $piggy->reminder = 'month'; |  | ||||||
|         $piggy->save(); |  | ||||||
|         $repetition->delete(); |  | ||||||
|         $piggy->nextReminderDate(); |  | ||||||
|  |  | ||||||
|         $event = f::create('PiggybankEvent'); |  | ||||||
|         $event->piggybank()->associate($piggy); |  | ||||||
|         $event->save(); |  | ||||||
|         $this->assertEquals($piggy->piggybankevents()->first()->id, $event->id); |  | ||||||
|  |  | ||||||
|         $this->assertNull($piggy->repetitionForDate(new Carbon('2012-02-02'))); |  | ||||||
|  |  | ||||||
|         $transaction = f::create('Transaction'); |  | ||||||
|         $transaction->piggybank()->associate($piggy); |  | ||||||
|         $transaction->save(); |  | ||||||
|         $this->assertEquals($transaction->piggybank_id, $piggy->id); |  | ||||||
|         $this->assertEquals($piggy->transactions()->first()->id, $transaction->id); |  | ||||||
|  |  | ||||||
|         $repetition->pct(); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testPreference() |  | ||||||
|     { |  | ||||||
|         $pref = f::create('Preference'); |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         $pref->user()->associate($user); |  | ||||||
|         $this->assertEquals($pref->user_id, $user->id); |  | ||||||
|         $pref->data = 'Hello'; |  | ||||||
|         $this->assertEquals($pref->data, 'Hello'); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testRecurringtransaction() |  | ||||||
|     { |  | ||||||
|         $rec = f::create('RecurringTransaction'); |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         $rec->user()->associate($user); |  | ||||||
|         $this->assertEquals($rec->user_id, $user->id); |  | ||||||
|  |  | ||||||
|         $list = ['yearly', 'half-year', 'quarterly', 'monthly', 'weekly', 'daily']; |  | ||||||
|         foreach ($list as $entry) { |  | ||||||
|             $start = clone $rec->date; |  | ||||||
|             $rec->repeat_freq = $entry; |  | ||||||
|             $end = $rec->next(); |  | ||||||
|             $this->assertTrue($end > $start); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testTransaction() |  | ||||||
|     { |  | ||||||
|         $transaction = f::create('Transaction'); |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $component = f::create('Component'); |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $piggy = f::create('Piggybank'); |  | ||||||
|  |  | ||||||
|         $transaction->transactionJournal()->associate($journal); |  | ||||||
|         $this->assertEquals($transaction->transaction_journal_id, $journal->id); |  | ||||||
|         $transaction->components()->save($component); |  | ||||||
|         $this->assertEquals($transaction->components()->first()->id, $component->id); |  | ||||||
|         $transaction->budgets()->save($budget); |  | ||||||
|         $this->assertEquals($transaction->budgets()->first()->id, $budget->id); |  | ||||||
|         $transaction->categories()->save($category); |  | ||||||
|         $this->assertEquals($transaction->categories()->first()->id, $category->id); |  | ||||||
|         $transaction->account()->associate($account); |  | ||||||
|         $this->assertEquals($transaction->account_id, $account->id); |  | ||||||
|         $transaction->piggybank()->associate($piggy); |  | ||||||
|         $this->assertEquals($transaction->piggybank_id, $piggy->id); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testTransactionCurrency() |  | ||||||
|     { |  | ||||||
|         $cur = f::create('TransactionCurrency'); |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $cur->transactionjournals()->save($journal); |  | ||||||
|         $journal->save(); |  | ||||||
|         $cur->save(); |  | ||||||
|         $this->assertEquals($cur->id, $journal->transaction_currency_id); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testTransactionJournal() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $type = f::create('TransactionType'); |  | ||||||
|         $user = f::create('User'); |  | ||||||
|         $cur = f::create('TransactionCurrency'); |  | ||||||
|         $transaction = f::create('Transaction'); |  | ||||||
|         $component = f::create('Component'); |  | ||||||
|         $budget = f::create('Budget'); |  | ||||||
|         $category = f::create('Category'); |  | ||||||
|  |  | ||||||
|         $journal->transactionType()->associate($type); |  | ||||||
|         $this->assertEquals($type->id, $journal->transaction_type_id); |  | ||||||
|  |  | ||||||
|         $journal->user()->associate($user); |  | ||||||
|         $this->assertEquals($user->id, $journal->user_id); |  | ||||||
|  |  | ||||||
|         $journal->transactionCurrency()->associate($cur); |  | ||||||
|         $this->assertEquals($cur->id, $journal->transaction_currency_id); |  | ||||||
|  |  | ||||||
|         $journal->transactions()->save($transaction); |  | ||||||
|         $this->assertEquals($journal->transactions()->first()->id, $transaction->id); |  | ||||||
|  |  | ||||||
|         $journal->components()->save($component); |  | ||||||
|         $this->assertEquals($journal->components()->first()->id, $component->id); |  | ||||||
|  |  | ||||||
|         $journal->budgets()->save($budget); |  | ||||||
|         $this->assertEquals($journal->budgets()->first()->id, $budget->id); |  | ||||||
|  |  | ||||||
|         $journal->categories()->save($category); |  | ||||||
|         $this->assertEquals($journal->categories()->first()->id, $category->id); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testTransactionType() |  | ||||||
|     { |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $type = f::create('TransactionType'); |  | ||||||
|  |  | ||||||
|         $type->transactionjournals()->save($journal); |  | ||||||
|         $this->assertEquals($type->transactionJournals()->first()->id, $journal->id); |  | ||||||
|  |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public function testUser() |  | ||||||
|     { |  | ||||||
|         $user = f::create('User'); |  | ||||||
|  |  | ||||||
|         $account = f::create('Account'); |  | ||||||
|         $bud = f::create('Budget'); |  | ||||||
|         $cat = f::create('Category'); |  | ||||||
|         $comp = f::create('Component'); |  | ||||||
|         $pref = f::create('Preference'); |  | ||||||
|         $rec = f::create('RecurringTransaction'); |  | ||||||
|         $journal = f::create('TransactionJournal'); |  | ||||||
|         $piggy = f::create('Piggybank'); |  | ||||||
|  |  | ||||||
|         $user->accounts()->save($account); |  | ||||||
|         $this->assertEquals($account->id, $user->accounts()->first()->id); |  | ||||||
|  |  | ||||||
|         $user->components()->save($comp); |  | ||||||
|         $this->assertEquals($comp->id, $user->components()->first()->id); |  | ||||||
|  |  | ||||||
|         $user->budgets()->save($bud); |  | ||||||
|         $this->assertEquals($bud->id, $user->budgets()->first()->id); |  | ||||||
|  |  | ||||||
|         $user->categories()->save($cat); |  | ||||||
|         $this->assertEquals($cat->id, $user->categories()->first()->id); |  | ||||||
|  |  | ||||||
|         $user->preferences()->save($pref); |  | ||||||
|         $this->assertEquals($pref->id, $user->preferences()->first()->id); |  | ||||||
|  |  | ||||||
|         $user->recurringtransactions()->save($rec); |  | ||||||
|         $this->assertEquals($rec->id, $user->recurringtransactions()->first()->id); |  | ||||||
|  |  | ||||||
|         $user->transactionjournals()->save($journal); |  | ||||||
|         $this->assertEquals($journal->id, $user->transactionjournals()->first()->id); |  | ||||||
|  |  | ||||||
|         $piggy->account()->associate($account); |  | ||||||
|         $piggy->save(); |  | ||||||
|         $this->assertCount(1, $user->piggybanks()->get()); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user