feat(templates): importar de otro proyecto con tabla Rappasoft + selección múltiple
Sustituye el modal (proyecto + checkboxes) por una tabla Rappasoft: - ImportTemplatesTable lista todas las plantillas de proyectos accesibles (excluye el destino), con filtros en cabecera (nombre, proyecto) y checkbox de selección (bulk). - Acción masiva "Importar seleccionadas" copia al proyecto destino (dedupe por nombre) y avisa a TemplateManager por evento (templates-imported) para refrescar/cerrar. - TemplateManager: eliminada la lógica vieja (importProjectId/importableTemplates/ selectedImportTemplateIds/importFromProject); el modal embebe la tabla. Tests: TemplateImportTest adaptado (selección+import, excluye destino). Suite 92 passing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Livewire\Inspections\TemplateManager;
|
||||
use App\Livewire\Projects\ImportTemplatesTable;
|
||||
use App\Models\InspectionTemplate;
|
||||
use App\Models\Project;
|
||||
use App\Models\User;
|
||||
@@ -38,19 +39,30 @@ class TemplateImportTest extends TestCase
|
||||
'fields' => [['name' => 'ok', 'label' => 'OK', 'type' => 'boolean']],
|
||||
]);
|
||||
|
||||
// Tabla Rappasoft: lista plantillas de otros proyectos, selección con checkbox.
|
||||
Livewire::actingAs($user)
|
||||
->test(TemplateManager::class, ['project' => $target])
|
||||
->call('openImportProjectModal')
|
||||
->set('importProjectId', $source->id)
|
||||
->set('selectedImportTemplateIds', [$tpl->id])
|
||||
->call('importFromProject')
|
||||
->assertHasNoErrors();
|
||||
->test(ImportTemplatesTable::class, ['projectId' => $target->id])
|
||||
->assertSee('Recepción acero')
|
||||
->set('selected', [(string) $tpl->id])
|
||||
->call('importSelected')
|
||||
->assertDispatched('templates-imported');
|
||||
|
||||
$this->assertDatabaseHas('inspection_templates', [
|
||||
'project_id' => $target->id, 'name' => 'Recepción acero',
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_import_table_excludes_target_project_templates(): void
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
$target = $this->project($user, 'DST2');
|
||||
InspectionTemplate::create(['project_id' => $target->id, 'name' => 'Propia del destino', 'fields' => []]);
|
||||
|
||||
Livewire::actingAs($user)
|
||||
->test(ImportTemplatesTable::class, ['projectId' => $target->id])
|
||||
->assertDontSee('Propia del destino');
|
||||
}
|
||||
|
||||
public function test_import_template_from_csv(): void
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
|
||||
Reference in New Issue
Block a user