get('/upload'); $response->assertRedirect('/login'); }); it('can render upload page when authenticated', function () { $user = User::factory()->create(); $this->actingAs($user); $component = Volt::test('upload.index'); $component ->assertSee('File Upload') ->assertSee('Select File') ->assertSee('Maximum file size: 50 MB') ->assertSee('https://upload.trai.mcs.local/api/upload'); }); it('can upload file successfully', function () { Http::fake([ 'https://upload.trai.mcs.local/api/upload' => Http::response('Success', 200), ]); $user = User::factory()->create(); $this->actingAs($user); Storage::fake('local'); $file = UploadedFile::fake()->create('document.pdf', 100); Volt::test('upload.index') ->set('file', $file) ->call('upload') ->assertSet('uploadStatus', 'success') ->assertSet('uploadMessage', 'File uploaded successfully!') ->assertSet('file', null); }); it('validates file is required', function () { $user = User::factory()->create(); $this->actingAs($user); Volt::test('upload.index') ->set('file', null) ->call('upload') ->assertHasErrors(['file' => 'required']); }); it('validates file size limit', function () { $user = User::factory()->create(); $this->actingAs($user); Storage::fake('local'); $file = UploadedFile::fake()->create('large.pdf', 51201); // Exceeds 50MB Volt::test('upload.index') ->set('file', $file) ->call('upload') ->assertHasErrors('file'); }); it('handles upload errors gracefully', function () { Http::fake([ 'https://upload.trai.mcs.local/api/upload' => Http::response('Server Error', 500), ]); $user = User::factory()->create(); $this->actingAs($user); Storage::fake('local'); $file = UploadedFile::fake()->create('document.pdf', 100); Volt::test('upload.index') ->set('file', $file) ->call('upload') ->assertSet('uploadStatus', 'error') ->assertSee('Upload failed'); }); it('can clear selected file', function () { $user = User::factory()->create(); $this->actingAs($user); Storage::fake('local'); $file = UploadedFile::fake()->create('document.pdf', 100); Volt::test('upload.index') ->set('file', $file) ->assertSet('file', fn ($value) => $value !== null) ->set('file', null) ->assertSet('file', null); });