mirror of
https://github.com/flarum/framework.git
synced 2024-11-24 01:38:28 +08:00
Add unit test for AvatarUploader
This commit is contained in:
parent
308f2c9efd
commit
264ff9f7bb
89
tests/unit/User/AvatarUploaderTest.php
Normal file
89
tests/unit/User/AvatarUploaderTest.php
Normal file
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\Tests\unit\User;
|
||||
|
||||
use Flarum\User\AvatarUploader;
|
||||
use Flarum\User\User;
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Intervention\Image\ImageManagerStatic;
|
||||
use League\Flysystem\FilesystemInterface;
|
||||
use Mockery as m;
|
||||
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class AvatarUploaderTest extends TestCase
|
||||
{
|
||||
use MockeryPHPUnitIntegration;
|
||||
|
||||
private $dispatcher;
|
||||
private $filesystem;
|
||||
private $uploader;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->dispatcher = m::mock(Dispatcher::class);
|
||||
$this->dispatcher->shouldIgnoreMissing();
|
||||
Model::setEventDispatcher($this->dispatcher);
|
||||
|
||||
$this->filesystem = m::mock(FilesystemInterface::class);
|
||||
$this->uploader = new AvatarUploader($this->filesystem);
|
||||
}
|
||||
|
||||
public function test_removing_avatar_removes_file()
|
||||
{
|
||||
$this->filesystem->shouldReceive('has')->with('ABCDEFGHabcdefgh.png');
|
||||
$this->filesystem->shouldReceive('delete')->with('ABCDEFGHabcdefgh.png')->andReturn(true);
|
||||
|
||||
$user = new User();
|
||||
$user->changeAvatarPath('ABCDEFGHabcdefgh.png');
|
||||
// Necessary because AvatarUpload looks into the original attributes for the raw value,
|
||||
// which isn't usually automatically updated without saving to the database
|
||||
$user->syncOriginal();
|
||||
|
||||
$this->uploader->remove($user);
|
||||
$user->syncOriginal();
|
||||
|
||||
$this->assertEquals(null, $user->getOriginal('avatar_url'));
|
||||
}
|
||||
|
||||
public function test_removing_url_avatar_removes_no_file()
|
||||
{
|
||||
$this->filesystem->shouldReceive('has')->with('https://example.com/avatar.png')->andReturn(false);
|
||||
$this->filesystem->shouldNotReceive('delete');
|
||||
|
||||
$user = new User();
|
||||
$user->changeAvatarPath('https://example.com/avatar.png');
|
||||
$user->syncOriginal();
|
||||
|
||||
$this->uploader->remove($user);
|
||||
$user->syncOriginal();
|
||||
|
||||
$this->assertEquals(null, $user->getOriginal('avatar_url'));
|
||||
}
|
||||
|
||||
public function test_changing_avatar_removes_file()
|
||||
{
|
||||
$this->filesystem->shouldReceive('put');
|
||||
$this->filesystem->shouldReceive('has')->with('ABCDEFGHabcdefgh.png')->andReturn(true);
|
||||
$this->filesystem->shouldReceive('delete')->with('ABCDEFGHabcdefgh.png');
|
||||
|
||||
$user = new User();
|
||||
$user->changeAvatarPath('ABCDEFGHabcdefgh.png');
|
||||
$user->syncOriginal();
|
||||
|
||||
$this->uploader->upload($user, ImageManagerStatic::canvas(50, 50));
|
||||
$user->syncOriginal();
|
||||
|
||||
$this->assertNotEquals('ABCDEFGHabcdefgh.png', $user->getOriginal('avatar_url'));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user