diff --git a/app/Importer/AssetImporter.php b/app/Importer/AssetImporter.php index 1112a04e3..ad6902805 100644 --- a/app/Importer/AssetImporter.php +++ b/app/Importer/AssetImporter.php @@ -16,10 +16,22 @@ class AssetImporter extends ItemImporter { parent::__construct($filename); - $this->defaultStatusLabelId = Statuslabel::first()->id; - + $this->defaultStatusLabelId = Statuslabel::first()?->id; + 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; } } diff --git a/tests/Unit/Importer/AssetImportTest.php b/tests/Unit/Importer/AssetImportTest.php new file mode 100644 index 000000000..09e594c1b --- /dev/null +++ b/tests/Unit/Importer/AssetImportTest.php @@ -0,0 +1,56 @@ +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 + ); + } +}