57 lines
1.7 KiB
PHP
57 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use App\Livewire\Modals\CreateRoom;
|
|
use App\Livewire\Rooms\Show;
|
|
use App\Models\Device;
|
|
use App\Models\Room;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Livewire\Livewire;
|
|
use Tests\TestCase;
|
|
|
|
class RoomsTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
public function test_create_room_modal_creates_a_room(): void
|
|
{
|
|
$this->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
|
|
}
|
|
}
|