user = new PresentableUser; } public function testName() { $this->assertEquals('John Doe', $this->user->present()->name); } /** @test */ public function nameOrEmail() { $this->assertEquals('John Doe', $this->user->present()->nameOrEmail); $this->user->first_name = ''; $this->assertEquals('Doe', $this->user->present()->nameOrEmail); $this->user->last_name = ''; $this->assertEquals('john.doe@test.com', $this->user->present()->nameOrEmail); } /** @test */ public function avatar() { $this->assertEquals(url('assets/img/profile.png'), $this->user->present()->avatar); $this->user->avatar = "//www.gravatar.com/avatar"; $this->assertEquals("//www.gravatar.com/avatar", $this->user->present()->avatar); $this->user->avatar = "http://somewebsite.com/avatar.png"; $this->assertEquals("http://somewebsite.com/avatar.png", $this->user->present()->avatar); $this->user->avatar = "foo.png"; $this->assertEquals(url("upload/users/foo.png"), $this->user->present()->avatar); } /** @test */ public function birthday() { $this->assertEquals('N/A', $this->user->present()->birthday); $this->user->birthday = Carbon::now()->subYears(20); $this->assertEquals($this->user->birthday->toDateString(), $this->user->present()->birthday); } /** @test */ public function fullAddress() { $this->assertEquals('Some Country', $this->user->present()->fullAddress); $this->user->address = 'Street 123'; $this->assertEquals('Street 123, Some Country', $this->user->present()->fullAddress); $this->user->country_id = null; $this->user->country = null; $this->assertEquals('Street 123', $this->user->present()->fullAddress); $this->user->address = ''; $this->assertEquals('N/A', $this->user->present()->fullAddress); } /** @test */ public function lastLogin() { $this->assertEquals('N/A', $this->user->present()->lastLogin); $date = Carbon::now()->subDay(1); $this->user->last_login = $date->copy(); $this->assertEquals($date->diffForHumans(), $this->user->present()->lastLogin); } /** @test */ public function labelClass() { $this->assertEquals('success', $this->user->present()->labelClass); $this->user->status = UserStatus::BANNED; $this->assertEquals('danger', $this->user->present()->labelClass); $this->user->status = UserStatus::UNCONFIRMED; $this->assertEquals('warning', $this->user->present()->labelClass); } } class PresentableUser extends Model { use \Vanguard\Presenters\Traits\Presentable; protected $presenter = UserPresenter::class; public $first_name = 'John'; public $last_name = 'Doe'; public $email = 'john.doe@test.com'; public $avatar = null; public $birthday = null; public $country_id = 1; public $country; public $address = ''; public $last_login = null; public $status = UserStatus::ACTIVE; public function __construct() { $this->country = new StubCountry; } } class StubCountry { public $id = 1; public $name = 'Some Country'; }