More tests; profile controller.

This commit is contained in:
James Cole
2014-08-09 13:40:13 +02:00
parent 8eae1750c1
commit f18a5fd0a3
3 changed files with 179 additions and 44 deletions

View File

@@ -84,7 +84,6 @@ class EloquentUserRepository implements UserRepositoryInterface
*/
public function updatePassword(\User $user, $password)
{
$password = \Hash::make($password);
/** @noinspection PhpUndefinedFieldInspection */
$user->password = $password;
/** @noinspection PhpUndefinedMethodInspection */

View File

@@ -10,19 +10,19 @@ use LaravelBook\Ardent\Ardent;
/**
* User
*
* @property integer $id
* @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at
* @property string $email
* @property string $password
* @property string $reset
* @property string $remember_token
* @property boolean $migrated
* @property-read \Illuminate\Database\Eloquent\Collection|\Account[] $accounts
* @property-read \Illuminate\Database\Eloquent\Collection|\Preference[] $preferences
* @property-read \Illuminate\Database\Eloquent\Collection|\Component[] $components
* @property-read \Illuminate\Database\Eloquent\Collection|\Budget[] $budgets
* @property-read \Illuminate\Database\Eloquent\Collection|\Category[] $categories
* @property integer $id
* @property \Carbon\Carbon $created_at
* @property \Carbon\Carbon $updated_at
* @property string $email
* @property string $password
* @property string $reset
* @property string $remember_token
* @property boolean $migrated
* @property-read \Illuminate\Database\Eloquent\Collection|\Account[] $accounts
* @property-read \Illuminate\Database\Eloquent\Collection|\Preference[] $preferences
* @property-read \Illuminate\Database\Eloquent\Collection|\Component[] $components
* @property-read \Illuminate\Database\Eloquent\Collection|\Budget[] $budgets
* @property-read \Illuminate\Database\Eloquent\Collection|\Category[] $categories
* @method static \Illuminate\Database\Query\Builder|\User whereId($value)
* @method static \Illuminate\Database\Query\Builder|\User whereCreatedAt($value)
* @method static \Illuminate\Database\Query\Builder|\User whereUpdatedAt($value)
@@ -31,8 +31,8 @@ use LaravelBook\Ardent\Ardent;
* @method static \Illuminate\Database\Query\Builder|\User whereReset($value)
* @method static \Illuminate\Database\Query\Builder|\User whereRememberToken($value)
* @method static \Illuminate\Database\Query\Builder|\User whereMigrated($value)
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
* @property-read \Illuminate\Database\Eloquent\Collection|\Piggybank[] $piggybanks
* @property-read \Illuminate\Database\Eloquent\Collection|\TransactionJournal[] $transactionjournals
* @property-read \Illuminate\Database\Eloquent\Collection|\Piggybank[] $piggybanks
* @property-read \Illuminate\Database\Eloquent\Collection|\RecurringTransaction[] $recurringtransactions
*/
class User extends Ardent implements UserInterface, RemindableInterface
@@ -48,14 +48,6 @@ class User extends Ardent implements UserInterface, RemindableInterface
'password' => 'required|between:60,60',
'reset' => 'between:32,32',
];
public static $factory
= [
'email' => 'email',
'password' => 'string|60',
'migrated' => '0'
];
/**
* The database table used by the model.
*
@@ -69,31 +61,21 @@ class User extends Ardent implements UserInterface, RemindableInterface
*/
protected $hidden = ['remember_token'];
public static function factory()
{
return [
'email' => 'email',
'password' => 'sander',
'migrated' => '0'
];
}
public function accounts()
{
return $this->hasMany('Account');
}
public function recurringtransactions()
{
return $this->hasMany('RecurringTransaction');
}
public function piggybanks()
{
return $this->hasMany('Piggybank');
}
public function preferences()
{
return $this->hasMany('Preference');
}
public function components()
{
return $this->hasMany('Component');
}
public function budgets()
{
return $this->hasMany('Budget');
@@ -104,6 +86,31 @@ class User extends Ardent implements UserInterface, RemindableInterface
return $this->hasMany('Category');
}
public function components()
{
return $this->hasMany('Component');
}
public function piggybanks()
{
return $this->hasMany('Piggybank');
}
public function preferences()
{
return $this->hasMany('Preference');
}
public function recurringtransactions()
{
return $this->hasMany('RecurringTransaction');
}
public function setPasswordAttribute($value)
{
$this->attributes['password'] = Hash::make($value);
}
public function transactionjournals()
{
return $this->hasMany('TransactionJournal');

View File

@@ -0,0 +1,129 @@
<?php
use Mockery as m;
use Zizaco\FactoryMuff\Facade\FactoryMuff as f;
/**
* Class ProfileControllerTest
*/
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');
// 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->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');
$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();
}
}