create(['name' => 'Rascunho', 'published_at' => null]); $second = WeddingPackage::factory()->published()->create(['name' => 'Segundo', 'sort_order' => 20]); $first = WeddingPackage::factory()->published()->create(['name' => 'Primeiro', 'sort_order' => 10]); $packages = WeddingPackage::query()->published()->orderBy('sort_order')->get(); $this->assertCount(2, $packages); $this->assertTrue($packages->first()?->is($first)); $this->assertTrue($packages->last()?->is($second)); } public function test_content_seeder_creates_official_wedding_modalities(): void { $this->app->detectEnvironment(fn (): string => 'testing'); $this->seed(ContentSeeder::class); $this->assertSame( ['Essenza', 'Conduzione', 'Grand Jour'], WeddingPackage::query()->published()->orderBy('sort_order')->pluck('name')->all(), ); } public function test_factory_generates_a_slug_and_autofills_blank_slug_from_name(): void { $package = WeddingPackage::factory()->published()->create(); $this->assertNotEmpty($package->slug); $this->assertSame(Str::slug($package->name), $package->slug); $explicit = WeddingPackage::factory()->create(['name' => 'Pacote com nome', 'slug' => null]); $this->assertSame('pacote-com-nome', $explicit->slug); } public function test_package_icon_catalog_accepts_known_keys_and_rejects_unknown(): void { foreach (PackageIconCatalog::keys() as $key) { $this->assertTrue(PackageIconCatalog::isValid($key)); $this->assertNotNull(PackageIconCatalog::labelFor($key)); } $this->assertFalse(PackageIconCatalog::isValid('paw')); $this->assertNull(PackageIconCatalog::labelFor('paw')); } }