Merge pull request #16683 from marcusmoore/bug/sc-28755

Create default label when importing assets if none exists
This commit is contained in:
snipe 2025-04-14 09:52:48 +01:00 committed by GitHub
commit 1c387795fe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 71 additions and 3 deletions

View file

@ -16,10 +16,22 @@ class AssetImporter extends ItemImporter
{ {
parent::__construct($filename); parent::__construct($filename);
$this->defaultStatusLabelId = Statuslabel::first()->id; $this->defaultStatusLabelId = Statuslabel::first()?->id;
if (!is_null(Statuslabel::deployable()->first())) { if (!is_null(Statuslabel::deployable()->first())) {
$this->defaultStatusLabelId = Statuslabel::deployable()->first()->id; $this->defaultStatusLabelId = Statuslabel::deployable()->first()?->id;
}
if (is_null($this->defaultStatusLabelId)) {
$defaultLabel = Statuslabel::create([
'name' => 'Default Status',
'deployable' => 0,
'pending' => 1,
'archived' => 0,
'notes' => 'Default status label created by AssetImporter',
]);
$this->defaultStatusLabelId = $defaultLabel->id;
} }
} }

View file

@ -0,0 +1,56 @@
<?php
namespace Tests\Unit\Importer;
use App\Importer\AssetImporter;
use App\Models\Statuslabel;
use Tests\TestCase;
use function Livewire\invade;
class AssetImportTest extends TestCase
{
public function test_uses_first_deployable_status_label_as_default_if_one_exists()
{
Statuslabel::truncate();
$pendingStatusLabel = Statuslabel::factory()->pending()->create();
$readyToDeployStatusLabel = Statuslabel::factory()->readyToDeploy()->create();
$importer = new AssetImporter('assets.csv');
$this->assertEquals(
$readyToDeployStatusLabel->id,
invade($importer)->defaultStatusLabelId
);
}
public function test_uses_first_status_label_as_default_if_deployable_status_label_does_not_exist()
{
Statuslabel::truncate();
$statusLabel = Statuslabel::factory()->pending()->create();
$importer = new AssetImporter('assets.csv');
$this->assertEquals(
$statusLabel->id,
invade($importer)->defaultStatusLabelId
);
}
public function test_creates_default_status_label_if_one_does_not_exist()
{
Statuslabel::truncate();
$this->assertEquals(0, Statuslabel::count());
$importer = new AssetImporter('assets.csv');
$this->assertEquals(1, Statuslabel::count());
$this->assertEquals(
Statuslabel::first()->id,
invade($importer)->defaultStatusLabelId
);
}
}