123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <?php
- namespace Tests\Feature;
- use App\Http\Controllers\Controller;
- use App\Models\SystemMedia;
- use App\Models\SystemMediaCategory;
- use Illuminate\Http\UploadedFile;
- use Tests\AdminTestCase;
- use Illuminate\Foundation\Testing\WithFaker;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Tests\Traits\RequestActions;
- class SystemMediaControllerTest extends AdminTestCase
- {
- use RequestActions;
- use RefreshDatabase;
- protected $resourceName = 'system-media';
- protected function setUp(): void
- {
- parent::setUp();
- $this->login();
- }
- public function testDestroy()
- {
- $categoryId = factory(SystemMediaCategory::class)->create()->id;
- $file = UploadedFile::fake()->image('avatar.jpg', 200, 200);
- $this->storeResource(
- [
- 'file' => $file,
- Controller::UPLOAD_FOLDER_FIELD => 'tests',
- ],
- 'system-media-categories.system-media',
- ['id' => $categoryId]
- );
- $mediaId1 = $this->getLastInsertId('system_media');
- $path = Controller::UPLOAD_FOLDER_PREFIX.'/tests/'.md5_file($file).'.jpg';
- $this->assertTrue($this->storage->exists($path));
- // 复制一条记录
- $mediaId2 = factory(SystemMedia::class)
- ->create(tap(SystemMedia::first())->addHidden(['id'])->toArray())
- ->id;
- $res = $this->destroyResource($mediaId1);
- $res->assertStatus(204);
- // 有重复文件记录,所以不需要删除物理文件
- $this->assertTrue($this->storage->exists($path));
- $this->assertDatabaseMissing('system_media', [
- 'id' => $mediaId1,
- ]);
- $res = $this->destroyResource($mediaId2);
- $res->assertStatus(204);
- // 没有重复文件记录,删除物理文件
- $this->assertNotTrue($this->storage->exists($path));
- $this->assertDatabaseMissing('system_media', [
- 'id' => $mediaId2,
- ]);
- }
- public function testEdit()
- {
- $media = factory(SystemMedia::class)->create();
- $id = $media->id;
- $res = $this->editResource($id);
- $res->assertStatus(200)
- ->assertJsonFragment([
- 'id' => $id,
- 'category_id' => 0,
- ]);
- }
- public function testUpdate()
- {
- $categoryId = factory(SystemMediaCategory::class)->create()->id;
- $mediaId = factory(SystemMedia::class)->create()->id;
- // category_id exists
- $res = $this->updateResource($mediaId, [
- 'category_id' => 999,
- ]);
- $res->assertJsonValidationErrors(['category_id']);
- $res = $this->updateResource($mediaId, [
- 'category_id' => $categoryId,
- ]);
- $res->assertStatus(201);
- $this->assertDatabaseHas('system_media', [
- 'id' => $mediaId,
- 'category_id' => $categoryId,
- ]);
- }
- public function testBatchUpdate()
- {
- $categoryId = factory(SystemMediaCategory::class)->create()->id;
- $mediaIds = factory(SystemMedia::class, 2)->create()->pluck('id')->toArray();
- $res = $this->put(route('admin.system-media.batch.update'), [
- 'category_id' => $categoryId,
- 'id' => $mediaIds,
- ]);
- $res->assertStatus(201);
- $this->assertDatabaseHas('system_media', [
- 'id' => $mediaIds[0],
- 'category_id' => $categoryId,
- ]);
- $this->assertDatabaseHas('system_media', [
- 'id' => $mediaIds[1],
- 'category_id' => $categoryId,
- ]);
- }
- public function testBatchDestroy()
- {
- factory(SystemMedia::class, 2)->create();
- $res = $this->delete(route('admin.system-media.batch.destroy'), [
- 'id' => [1, 2],
- ]);
- $res->assertStatus(204);
- $this->assertDatabaseMissing('system_media', ['id' => 1]);
- $this->assertDatabaseMissing('system_media', ['id' => 2]);
- }
- }
|