actingAs(User::factory()->create()); Livewire::test(CreateRoom::class) ->set('name', 'Wohnzimmer') ->set('icon', 'lamp') ->call('save') ->assertRedirect(route('rooms.index')); $this->assertDatabaseHas('rooms', ['name' => 'Wohnzimmer', 'icon' => 'lamp']); } public function test_create_room_rejects_an_unknown_icon(): void { $this->actingAs(User::factory()->create()); Livewire::test(CreateRoom::class) ->set('name', 'X') ->set('icon', 'not-an-icon') ->call('save') ->assertHasErrors('icon'); } public function test_deleting_a_room_keeps_devices_but_unassigns_them(): void { $this->actingAs(User::factory()->create()); $room = Room::create(['name' => 'Küche', 'icon' => 'rooms', 'sort' => 1]); $device = Device::create(['name' => 'Lampe', 'vendor' => 'Shelly', 'protocol' => 'http', 'room_id' => $room->id, 'config' => ['ip' => '1.2.3.4']]); Livewire::test(Show::class, ['room' => $room]) ->call('deleteRoom') ->assertRedirect(route('rooms.index')); $this->assertModelMissing($room); $this->assertNull($device->fresh()->room_id); // device kept, just unassigned } }