refactor: upgrade to Livewire 4

This commit is contained in:
Benjamin Nussbaum 2026-01-14 23:59:00 +01:00
parent c94dd89361
commit a15645ad88
56 changed files with 166 additions and 278 deletions

View file

@ -1,7 +1,6 @@
<?php
use App\Models\User;
use Livewire\Volt\Volt as LivewireVolt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -14,7 +13,7 @@ test('login screen can be rendered', function (): void {
test('users can authenticate using the login screen', function (): void {
$user = User::factory()->create();
$response = LivewireVolt::test('auth.login')
$response = Livewire::test('auth.login')
->set('email', $user->email)
->set('password', 'password')
->call('login');

View file

@ -1,7 +1,6 @@
<?php
use App\Models\User;
use Livewire\Volt\Volt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -18,7 +17,7 @@ test('password can be confirmed', function (): void {
$this->actingAs($user);
$response = Volt::test('auth.confirm-password')
$response = Livewire::test('auth.confirm-password')
->set('password', 'password')
->call('confirmPassword');
@ -32,7 +31,7 @@ test('password is not confirmed with invalid password', function (): void {
$this->actingAs($user);
$response = Volt::test('auth.confirm-password')
$response = Livewire::test('auth.confirm-password')
->set('password', 'wrong-password')
->call('confirmPassword');

View file

@ -3,7 +3,6 @@
use App\Models\User;
use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Support\Facades\Notification;
use Livewire\Volt\Volt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -18,7 +17,7 @@ test('reset password link can be requested', function (): void {
$user = User::factory()->create();
Volt::test('auth.forgot-password')
Livewire::test('auth.forgot-password')
->set('email', $user->email)
->call('sendPasswordResetLink');
@ -30,7 +29,7 @@ test('reset password screen can be rendered', function (): void {
$user = User::factory()->create();
Volt::test('auth.forgot-password')
Livewire::test('auth.forgot-password')
->set('email', $user->email)
->call('sendPasswordResetLink');
@ -48,12 +47,12 @@ test('password can be reset with valid token', function (): void {
$user = User::factory()->create();
Volt::test('auth.forgot-password')
Livewire::test('auth.forgot-password')
->set('email', $user->email)
->call('sendPasswordResetLink');
Notification::assertSentTo($user, ResetPassword::class, function ($notification) use ($user): true {
$response = Volt::test('auth.reset-password', ['token' => $notification->token])
$response = Livewire::test('auth.reset-password', ['token' => $notification->token])
->set('email', $user->email)
->set('password', 'password')
->set('password_confirmation', 'password')

View file

@ -1,7 +1,5 @@
<?php
use Livewire\Volt\Volt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
test('registration screen can be rendered', function (): void {
@ -11,7 +9,7 @@ test('registration screen can be rendered', function (): void {
});
test('new users can register', function (): void {
$response = Volt::test('auth.register')
$response = Livewire::test('auth.register')
->set('name', 'Test User')
->set('email', 'test@example.com')
->set('password', 'password')

View file

@ -2,7 +2,6 @@
use App\Models\Device;
use App\Models\User;
use Livewire\Volt\Volt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -27,7 +26,7 @@ test('user can create a new device', function (): void {
'friendly_id' => 'test-device-1',
];
$response = Volt::test('devices.manage')
$response = Livewire::test('devices.manage')
->set('name', $deviceData['name'])
->set('mac_address', $deviceData['mac_address'])
->set('api_key', $deviceData['api_key'])
@ -52,7 +51,7 @@ test('device creation requires required fields', function (): void {
$user = User::factory()->create();
$this->actingAs($user);
$response = Volt::test('devices.manage')
$response = Livewire::test('devices.manage')
->set('name', '')
->set('mac_address', '')
->set('api_key', '')
@ -75,14 +74,14 @@ test('user can toggle proxy cloud for their device', function (): void {
'proxy_cloud' => false,
]);
$response = Volt::test('devices.manage')
$response = Livewire::test('devices.manage')
->call('toggleProxyCloud', $device);
$response->assertHasNoErrors();
expect($device->fresh()->proxy_cloud)->toBeTrue();
// Toggle back to false
$response = Volt::test('devices.manage')
$response = Livewire::test('devices.manage')
->call('toggleProxyCloud', $device);
expect($device->fresh()->proxy_cloud)->toBeFalse();
@ -98,7 +97,7 @@ test('user cannot toggle proxy cloud for other users devices', function (): void
'proxy_cloud' => false,
]);
$response = Volt::test('devices.manage')
$response = Livewire::test('devices.manage')
->call('toggleProxyCloud', $device);
$response->assertStatus(403);

View file

@ -4,7 +4,6 @@ use App\Models\User;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;
use Livewire\Livewire;
use Livewire\Volt\Volt;
use Symfony\Component\Yaml\Yaml;
beforeEach(function (): void {
@ -19,7 +18,7 @@ it('can render catalog component', function (): void {
Livewire::withoutLazyLoading();
$component = Volt::test('catalog.index');
$component = Livewire::test('catalog.index');
$component->assertSee('No plugins available');
});
@ -59,7 +58,7 @@ it('loads plugins from catalog URL', function (): void {
Livewire::withoutLazyLoading();
$component = Volt::test('catalog.index');
$component = Livewire::test('catalog.index');
$component->assertSee('Test Plugin');
$component->assertSee('testuser');
@ -102,7 +101,7 @@ it('hides preview button when screenshot_url is missing', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.index')
Livewire::test('catalog.index')
->assertSee('Test Plugin Without Screenshot')
->assertDontSeeHtml('variant="subtle" icon="eye"');
});
@ -114,7 +113,7 @@ it('shows error when plugin not found', function (): void {
Livewire::withoutLazyLoading();
$component = Volt::test('catalog.index');
$component = Livewire::test('catalog.index');
$component->call('installPlugin', 'non-existent-plugin');
@ -146,7 +145,7 @@ it('shows error when zip_url is missing', function (): void {
Livewire::withoutLazyLoading();
$component = Volt::test('catalog.index');
$component = Livewire::test('catalog.index');
$component->call('installPlugin', 'test-plugin');
@ -189,7 +188,7 @@ it('can preview a plugin', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.index')
Livewire::test('catalog.index')
->assertSee('Test Plugin')
->call('previewPlugin', 'test-plugin')
->assertSet('previewingPlugin', 'test-plugin')

View file

@ -3,7 +3,6 @@
use App\Models\Plugin;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Volt\Volt;
use Illuminate\Support\Str;
uses(RefreshDatabase::class);
@ -28,7 +27,7 @@ test('config modal correctly loads multi_string defaults into UI boxes', functio
'configuration' => ['tags' => 'alpha,beta']
]);
Volt::test('plugins.config-modal', ['plugin' => $plugin])
Livewire::test('plugins.config-modal', ['plugin' => $plugin])
->assertSet('multiValues.tags', ['alpha', 'beta']);
});
@ -50,7 +49,7 @@ test('config modal validates against commas in multi_string boxes', function ():
]
]);
Volt::test('plugins.config-modal', ['plugin' => $plugin])
Livewire::test('plugins.config-modal', ['plugin' => $plugin])
->set('multiValues.tags.0', 'no,commas,allowed')
->call('saveConfiguration')
->assertHasErrors(['multiValues.tags.0' => 'regex']);
@ -78,7 +77,7 @@ test('config modal merges multi_string boxes into a single CSV string on save',
'configuration' => []
]);
Volt::test('plugins.config-modal', ['plugin' => $plugin])
Livewire::test('plugins.config-modal', ['plugin' => $plugin])
->set('multiValues.items.0', 'First')
->call('addMultiItem', 'items')
->set('multiValues.items.1', 'Second')
@ -100,7 +99,7 @@ test('config modal resetForm clears dirty state and increments resetIndex', func
'configuration' => ['simple_key' => 'original_value']
]);
Volt::test('plugins.config-modal', ['plugin' => $plugin])
Livewire::test('plugins.config-modal', ['plugin' => $plugin])
->set('configuration.simple_key', 'dirty_value')
->call('resetForm')
->assertSet('configuration.simple_key', 'original_value')
@ -118,7 +117,7 @@ test('config modal dispatches update event for parent warning refresh', function
'data_strategy' => 'static'
]);
Volt::test('plugins.config-modal', ['plugin' => $plugin])
Livewire::test('plugins.config-modal', ['plugin' => $plugin])
->call('saveConfiguration')
->assertDispatched('config-updated');
});

View file

@ -6,7 +6,6 @@ use App\Models\Plugin;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Str;
use Livewire\Volt\Volt;
uses(RefreshDatabase::class);
@ -21,7 +20,7 @@ test('recipe settings can save trmnlp_id', function (): void {
$trmnlpId = (string) Str::uuid();
Volt::test('plugins.recipes.settings', ['plugin' => $plugin])
Livewire::test('plugins.recipes.settings', ['plugin' => $plugin])
->set('trmnlp_id', $trmnlpId)
->call('saveTrmnlpId')
->assertHasNoErrors();
@ -43,7 +42,7 @@ test('recipe settings validates trmnlp_id is unique per user', function (): void
'trmnlp_id' => null,
]);
Volt::test('plugins.recipes.settings', ['plugin' => $newPlugin])
Livewire::test('plugins.recipes.settings', ['plugin' => $newPlugin])
->set('trmnlp_id', 'existing-id-123')
->call('saveTrmnlpId')
->assertHasErrors(['trmnlp_id' => 'unique']);
@ -67,7 +66,7 @@ test('recipe settings allows same trmnlp_id for different users', function (): v
$this->actingAs($user2);
Volt::test('plugins.recipes.settings', ['plugin' => $plugin2])
Livewire::test('plugins.recipes.settings', ['plugin' => $plugin2])
->set('trmnlp_id', 'shared-id-123')
->call('saveTrmnlpId')
->assertHasNoErrors();
@ -86,7 +85,7 @@ test('recipe settings allows same trmnlp_id for the same plugin', function (): v
'trmnlp_id' => $trmnlpId,
]);
Volt::test('plugins.recipes.settings', ['plugin' => $plugin])
Livewire::test('plugins.recipes.settings', ['plugin' => $plugin])
->set('trmnlp_id', $trmnlpId)
->call('saveTrmnlpId')
->assertHasNoErrors();
@ -103,7 +102,7 @@ test('recipe settings can clear trmnlp_id', function (): void {
'trmnlp_id' => 'some-id',
]);
Volt::test('plugins.recipes.settings', ['plugin' => $plugin])
Livewire::test('plugins.recipes.settings', ['plugin' => $plugin])
->set('trmnlp_id', '')
->call('saveTrmnlpId')
->assertHasNoErrors();

View file

@ -2,7 +2,6 @@
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Livewire\Volt\Volt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -13,7 +12,7 @@ test('password can be updated', function (): void {
$this->actingAs($user);
$response = Volt::test('settings.password')
$response = Livewire::test('settings.password')
->set('current_password', 'password')
->set('password', 'new-password')
->set('password_confirmation', 'new-password')
@ -31,7 +30,7 @@ test('correct password must be provided to update password', function (): void {
$this->actingAs($user);
$response = Volt::test('settings.password')
$response = Livewire::test('settings.password')
->set('current_password', 'wrong-password')
->set('password', 'new-password')
->set('password_confirmation', 'new-password')

View file

@ -1,7 +1,6 @@
<?php
use App\Models\User;
use Livewire\Volt\Volt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -16,7 +15,7 @@ test('profile information can be updated', function (): void {
$this->actingAs($user);
$response = Volt::test('settings.profile')
$response = Livewire::test('settings.profile')
->set('name', 'Test User')
->set('email', 'test@example.com')
->call('updateProfileInformation');
@ -35,7 +34,7 @@ test('email verification status is unchanged when email address is unchanged', f
$this->actingAs($user);
$response = Volt::test('settings.profile')
$response = Livewire::test('settings.profile')
->set('name', 'Test User')
->set('email', $user->email)
->call('updateProfileInformation');
@ -50,7 +49,7 @@ test('user can delete their account', function (): void {
$this->actingAs($user);
$response = Volt::test('settings.delete-user-form')
$response = Livewire::test('settings.delete-user-form')
->set('password', 'password')
->call('deleteUser');
@ -67,7 +66,7 @@ test('correct password must be provided to delete account', function (): void {
$this->actingAs($user);
$response = Volt::test('settings.delete-user-form')
$response = Livewire::test('settings.delete-user-form')
->set('password', 'wrong-password')
->call('deleteUser');

View file

@ -5,7 +5,6 @@ declare(strict_types=1);
use App\Models\User;
use Illuminate\Support\Facades\Http;
use Livewire\Livewire;
use Livewire\Volt\Volt;
it('loads newest TRMNL recipes on mount', function (): void {
Http::fake([
@ -25,7 +24,7 @@ it('loads newest TRMNL recipes on mount', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Weather Chum')
->assertSee('Install')
->assertDontSeeHtml('variant="subtle" icon="eye"')
@ -50,7 +49,7 @@ it('shows preview button when screenshot_url is provided', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Weather Chum')
->assertSee('Preview');
});
@ -88,7 +87,7 @@ it('searches TRMNL recipes when search term is provided', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Initial Recipe')
->set('search', 'weather')
->assertSee('Weather Search Result')
@ -118,7 +117,7 @@ it('installs plugin successfully when user is authenticated', function (): void
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Weather Chum')
->call('installPlugin', '123')
->assertSee('Error installing plugin'); // This will fail because we don't have a real zip file
@ -142,7 +141,7 @@ it('shows error when user is not authenticated', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Weather Chum')
->call('installPlugin', '123')
->assertStatus(403); // This will return 403 because user is not authenticated
@ -171,7 +170,7 @@ it('shows error when plugin installation fails', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Weather Chum')
->call('installPlugin', '123')
->assertSee('Error installing plugin'); // This will fail because the zip content is invalid
@ -205,7 +204,7 @@ it('previews a recipe with async fetch', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Weather Chum')
->call('previewRecipe', '123')
->assertSet('previewingRecipe', '123')
@ -247,7 +246,7 @@ it('supports pagination and loading more recipes', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Recipe Page 1')
->assertDontSee('Recipe Page 2')
->assertSee('Load next page')
@ -276,7 +275,7 @@ it('resets pagination when search term changes', function (): void {
Livewire::withoutLazyLoading();
Volt::test('catalog.trmnl')
Livewire::test('catalog.trmnl')
->assertSee('Initial 1')
->call('loadMore')
->set('search', 'weather')

View file

@ -4,7 +4,6 @@ declare(strict_types=1);
use App\Models\DevicePalette;
use App\Models\User;
use Livewire\Volt\Volt;
uses(Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -25,7 +24,7 @@ test('component loads all device palettes on mount', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index');
$component = Livewire::test('device-palettes.index');
$palettes = $component->get('devicePalettes');
expect($palettes)->toHaveCount($initialCount + 3);
@ -36,7 +35,7 @@ test('can open modal to create new device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('openDevicePaletteModal');
$component
@ -51,7 +50,7 @@ test('can create a new device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('description', 'Test Palette Description')
->set('grays', 16)
@ -76,7 +75,7 @@ test('can create a grayscale-only palette without colors', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'grayscale-palette')
->set('grays', 256)
->set('colors', [])
@ -102,7 +101,7 @@ test('can open modal to edit existing device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('openDevicePaletteModal', $palette->id);
$component
@ -125,7 +124,7 @@ test('can update an existing device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('openDevicePaletteModal', $palette->id)
->set('name', 'updated-palette')
->set('description', 'Updated Description')
@ -153,7 +152,7 @@ test('can delete a device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('deleteDevicePalette', $palette->id);
expect(DevicePalette::find($palette->id))->toBeNull();
@ -175,7 +174,7 @@ test('can duplicate a device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('duplicateDevicePalette', $palette->id);
$component
@ -192,7 +191,7 @@ test('can add a color to the colors array', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colorInput', '#FF0000')
->call('addColor');
@ -207,7 +206,7 @@ test('cannot add duplicate colors', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colors', ['#FF0000'])
->set('colorInput', '#FF0000')
->call('addColor');
@ -222,7 +221,7 @@ test('can add multiple colors', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colorInput', '#FF0000')
->call('addColor')
->set('colorInput', '#00FF00')
@ -239,7 +238,7 @@ test('can remove a color from the colors array', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colors', ['#FF0000', '#00FF00', '#0000FF'])
->call('removeColor', 1);
@ -251,7 +250,7 @@ test('removing color reindexes array', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colors', ['#FF0000', '#00FF00', '#0000FF'])
->call('removeColor', 0);
@ -271,7 +270,7 @@ test('can open modal in view-only mode for api-sourced palette', function (): vo
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('openDevicePaletteModal', $palette->id, true);
$component
@ -284,7 +283,7 @@ test('name is required when creating device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('grays', 16)
->call('saveDevicePalette');
@ -301,7 +300,7 @@ test('name must be unique when creating device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'existing-name')
->set('grays', 16)
->call('saveDevicePalette');
@ -320,7 +319,7 @@ test('name can be same when updating device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('openDevicePaletteModal', $palette->id)
->set('grays', 16)
->call('saveDevicePalette');
@ -333,7 +332,7 @@ test('grays is required when creating device palette', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('grays', null)
->call('saveDevicePalette');
@ -346,7 +345,7 @@ test('grays must be at least 1', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('grays', 0)
->call('saveDevicePalette');
@ -359,7 +358,7 @@ test('grays must be at most 256', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('grays', 257)
->call('saveDevicePalette');
@ -372,7 +371,7 @@ test('colors must be valid hex format', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('grays', 16)
->set('colors', ['invalid-color', '#FF0000'])
@ -386,7 +385,7 @@ test('color input must be valid hex format when adding color', function (): void
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colorInput', 'invalid-color')
->call('addColor');
@ -398,7 +397,7 @@ test('color input accepts valid hex format', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colorInput', '#FF0000')
->call('addColor');
@ -410,7 +409,7 @@ test('color input accepts lowercase hex format', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('colorInput', '#ff0000')
->call('addColor');
@ -422,7 +421,7 @@ test('description can be null', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('grays', 16)
->set('description', null)
@ -439,7 +438,7 @@ test('framework class can be empty string', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('grays', 16)
->set('framework_class', '')
@ -456,7 +455,7 @@ test('empty colors array is saved as null', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('grays', 16)
->set('colors', [])
@ -473,7 +472,7 @@ test('component resets form after saving', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'test-palette')
->set('description', 'Test Description')
->set('grays', 16)
@ -503,7 +502,7 @@ test('component handles palette with null colors when editing', function (): voi
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('openDevicePaletteModal', $palette->id);
$component->assertSet('colors', []);
@ -524,7 +523,7 @@ test('component handles palette with string colors when editing', function (): v
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('openDevicePaletteModal', $palette->id);
$component->assertSet('colors', ['#FF0000', '#00FF00']);
@ -538,7 +537,7 @@ test('component refreshes palette list after creating', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->set('name', 'new-palette')
->set('grays', 16)
->call('saveDevicePalette');
@ -566,7 +565,7 @@ test('component refreshes palette list after deleting', function (): void {
$this->actingAs($user);
$component = Volt::test('device-palettes.index')
$component = Livewire::test('device-palettes.index')
->call('deleteDevicePalette', $palette1->id);
$palettes = $component->get('devicePalettes');