Skip to content

Commit bd39abb

Browse files
Merge pull request #1455 from liberu-genealogy/copilot/fix-gedcom-upload-error
Fix .ged file upload rejected as invalid type in GEDCOM import
2 parents c0fa17c + 8c2a72c commit bd39abb

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

app/Filament/App/Resources/GedcomResource.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public static function form(Schema $schema): Schema
7171
->multiple(false)
7272
->required()
7373
->acceptedFileTypes(['.ged', '.gramps', 'text/plain', 'application/xml', 'text/xml'])
74+
->mimeTypeMap(['ged' => 'text/plain', 'gramps' => 'application/xml'])
7475
->maxSize(100000)
7576
->disk('private')
7677
->directory('gedcom-form-imports')

tests/Feature/Filament/Resources/GedcomResourceTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use App\Jobs\ExportGedCom;
77
use App\Models\Gedcom;
88
use App\Models\User;
9+
use Filament\Forms\Components\FileUpload;
910
use Illuminate\Foundation\Testing\RefreshDatabase;
1011
use Illuminate\Support\Facades\Auth;
1112
use Illuminate\Support\Facades\Queue;
@@ -74,4 +75,31 @@ public function test_export_gedcom_does_not_dispatch_without_authenticated_user(
7475

7576
Queue::assertNotPushed(ExportGedCom::class);
7677
}
78+
79+
public function test_file_upload_component_accepts_ged_files_via_mime_type_map(): void
80+
{
81+
$upload = FileUpload::make('filename')
82+
->acceptedFileTypes(['.ged', '.gramps', 'text/plain', 'application/xml', 'text/xml'])
83+
->mimeTypeMap(['ged' => 'text/plain', 'gramps' => 'application/xml']);
84+
85+
$mimeTypeMap = $upload->getMimeTypeMap();
86+
87+
$this->assertArrayHasKey('ged', $mimeTypeMap, '.ged extension should have a MIME type mapping');
88+
$this->assertEquals('text/plain', $mimeTypeMap['ged'], '.ged files should map to text/plain');
89+
$this->assertArrayHasKey('gramps', $mimeTypeMap, '.gramps extension should have a MIME type mapping');
90+
$this->assertEquals('application/xml', $mimeTypeMap['gramps'], '.gramps files should map to application/xml');
91+
}
92+
93+
public function test_file_upload_component_accepted_file_types_includes_ged_extension(): void
94+
{
95+
$upload = FileUpload::make('filename')
96+
->acceptedFileTypes(['.ged', '.gramps', 'text/plain', 'application/xml', 'text/xml'])
97+
->mimeTypeMap(['ged' => 'text/plain', 'gramps' => 'application/xml']);
98+
99+
$acceptedTypes = $upload->getAcceptedFileTypes();
100+
101+
$this->assertContains('.ged', $acceptedTypes, 'FileUpload should accept .ged files');
102+
$this->assertContains('.gramps', $acceptedTypes, 'FileUpload should accept .gramps files');
103+
$this->assertContains('text/plain', $acceptedTypes, 'FileUpload should accept text/plain MIME type');
104+
}
77105
}

0 commit comments

Comments
 (0)