Files
firefly-iii/app/tests/controllers/RecurringControllerTest.php

178 lines
6.1 KiB
PHP
Raw Normal View History

2014-08-09 13:21:24 +02:00
<?php
use League\FactoryMuffin\Facade as f;
2014-08-28 07:53:54 +02:00
use Mockery as m;
2014-08-09 13:21:24 +02:00
/**
* Class RecurringControllerTest
2014-08-10 18:22:42 +02:00
*
* @SuppressWarnings(PHPMD.TooManyMethods)
* @SuppressWarnings(PHPMD.CamelCasePropertyName)
2014-08-09 13:21:24 +02:00
*/
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');
2014-08-28 07:53:54 +02:00
2014-08-09 13:21:24 +02:00
// 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');
2014-08-10 11:30:14 +02:00
$this->action('GET', 'RecurringController@delete', $recurringTransaction->id);
2014-08-09 13:21:24 +02:00
$this->assertResponseOk();
}
public function testDestroy()
{
$recurringTransaction = f::create('RecurringTransaction');
2014-08-28 07:53:54 +02:00
Event::shouldReceive('fire')->with('recurring.destroy',m::any());
2014-08-09 13:21:24 +02:00
// 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);
2014-08-10 11:30:14 +02:00
$this->action('POST', 'RecurringController@destroy', $recurringTransaction->id);
2014-08-09 13:21:24 +02:00
$this->assertResponseStatus(302);
}
public function testDestroyFails()
{
$recurringTransaction = f::create('RecurringTransaction');
// for binding
Auth::shouldReceive('user')->andReturn($this->_user);
Auth::shouldReceive('check')->andReturn(true);
2014-08-28 07:53:54 +02:00
Event::shouldReceive('fire')->with('recurring.destroy',m::any());
2014-08-09 13:21:24 +02:00
$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);
2014-08-10 11:30:14 +02:00
$this->action('POST', 'RecurringController@destroy', $recurringTransaction->id);
2014-08-09 13:21:24 +02:00
$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');
2014-08-10 11:30:14 +02:00
$this->action('GET', 'RecurringController@edit', $recurringTransaction->id);
2014-08-09 13:21:24 +02:00
$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');
2014-08-10 11:30:14 +02:00
$this->action('GET', 'RecurringController@show', $recurringTransaction->id);
2014-08-09 13:21:24 +02:00
$this->assertResponseOk();
}
public function testStore()
{
$recurringTransaction = f::create('RecurringTransaction');
2014-08-28 07:53:54 +02:00
Event::shouldReceive('fire')->with('recurring.store',m::any());
2014-08-09 13:21:24 +02:00
$this->_repository->shouldReceive('store')->andReturn($recurringTransaction);
$this->action('POST', 'RecurringController@store');
$this->assertResponseStatus(302);
}
public function testStoreRedirect()
{
$recurringTransaction = f::create('RecurringTransaction');
2014-08-28 07:53:54 +02:00
Event::shouldReceive('fire')->with('recurring.store',m::any());
2014-08-09 13:21:24 +02:00
$this->_repository->shouldReceive('store')->andReturn($recurringTransaction);
2014-08-10 11:30:14 +02:00
$this->action('POST', 'RecurringController@store', ['create' => '1']);
2014-08-09 13:21:24 +02:00
$this->assertResponseStatus(302);
}
public function testStoreFails()
{
$recurringTransaction = f::create('RecurringTransaction');
2014-08-10 11:30:14 +02:00
unset($recurringTransaction->active);
unset($recurringTransaction->automatch);
2014-08-09 13:21:24 +02:00
$this->_repository->shouldReceive('store')->andReturn($recurringTransaction);
2014-08-10 11:30:14 +02:00
$this->action('POST', 'RecurringController@store', ['create' => '1']);
2014-08-09 13:21:24 +02:00
$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');
2014-08-28 07:53:54 +02:00
Event::shouldReceive('fire')->with('recurring.update',m::any());
$this->_repository->shouldReceive('update')->andReturn($recurringTransaction);
2014-08-09 13:21:24 +02:00
2014-08-10 11:30:14 +02:00
$this->action('POST', 'RecurringController@update', $recurringTransaction->id);
2014-08-21 15:27:08 +02:00
$this->assertResponseStatus(302);
2014-08-09 13:21:24 +02:00
}
}