mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-02-25 18:45:27 -06:00 
			
		
		
		
	Covered transaction controller.
This commit is contained in:
		
							
								
								
									
										298
									
								
								app/tests/controllers/TransactionControllerTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										298
									
								
								app/tests/controllers/TransactionControllerTest.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,298 @@ | ||||
| <?php | ||||
|  | ||||
| use Mockery as m; | ||||
| use Zizaco\FactoryMuff\Facade\FactoryMuff as f; | ||||
|  | ||||
| /** | ||||
|  * Class TransactionControllerTest | ||||
|  */ | ||||
| class TransactionControllerTest extends TestCase | ||||
| { | ||||
|     protected $_user; | ||||
|     protected $_repository; | ||||
|  | ||||
|     protected $_accounts; | ||||
|     protected $_budgets; | ||||
|  | ||||
|     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'); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public function tearDown() | ||||
|     { | ||||
|         m::close(); | ||||
|     } | ||||
|  | ||||
|     public function testCreateDeposit() | ||||
|     { | ||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); | ||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); | ||||
|         $this->action('GET', 'TransactionController@create', ['what' => 'deposit']); | ||||
|         $this->assertResponseOk(); | ||||
|     } | ||||
|  | ||||
|     public function testCreateTransfer() | ||||
|     { | ||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); | ||||
|         $this->_budgets->shouldReceive('getAsSelectList')->andReturn([]); | ||||
|         $this->action('GET', 'TransactionController@create', ['what' => 'transfer']); | ||||
|         $this->assertResponseOk(); | ||||
|     } | ||||
|  | ||||
|     public function testCreateWithdrawal() | ||||
|     { | ||||
|         $this->_accounts->shouldReceive('getActiveDefaultAsSelectList')->andReturn([]); | ||||
|         $this->_budgets->shouldReceive('getAsSelectList')->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->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([]); | ||||
|  | ||||
|         // 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([]); | ||||
|  | ||||
|         // 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->id); | ||||
|  | ||||
|         $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); | ||||
|     } | ||||
| }  | ||||
		Reference in New Issue
	
	Block a user