create(); $this->actingAsForApi(User::factory()->create()) ->deleteJson(route('api.companies.destroy', $company)) ->assertForbidden(); } public function testCanDeleteCompany() { $company = Company::factory()->create(); $this->actingAsForApi(User::factory()->deleteCompanies()->create()) ->deleteJson(route('api.companies.destroy', $company)) ->assertStatusMessageIs('success'); $this->assertDatabaseMissing('companies', ['id' => $company->id]); } public function testCannotDeleteCompanyThatHasAssociatedItems() { $companyWithAssets = Company::factory()->hasAssets()->create(); $companyWithAccessories = Company::factory()->hasAccessories()->create(); $companyWithConsumables = Company::factory()->hasConsumables()->create(); $companyWithComponents = Company::factory()->hasComponents()->create(); $companyWithUsers = Company::factory()->hasUsers()->create(); $actor = $this->actingAsForApi(User::factory()->deleteCompanies()->create()); $actor->deleteJson(route('api.companies.destroy', $companyWithAssets))->assertStatusMessageIs('error'); $actor->deleteJson(route('api.companies.destroy', $companyWithAccessories))->assertStatusMessageIs('error'); $actor->deleteJson(route('api.companies.destroy', $companyWithConsumables))->assertStatusMessageIs('error'); $actor->deleteJson(route('api.companies.destroy', $companyWithComponents))->assertStatusMessageIs('error'); $actor->deleteJson(route('api.companies.destroy', $companyWithUsers))->assertStatusMessageIs('error'); $this->assertDatabaseHas('companies', ['id' => $companyWithAssets->id]); $this->assertDatabaseHas('companies', ['id' => $companyWithAccessories->id]); $this->assertDatabaseHas('companies', ['id' => $companyWithConsumables->id]); $this->assertDatabaseHas('companies', ['id' => $companyWithComponents->id]); $this->assertDatabaseHas('companies', ['id' => $companyWithUsers->id]); } }