diff --git a/src/Livewire/Servers.php b/src/Livewire/Servers.php index e52db790..fe3a47aa 100644 --- a/src/Livewire/Servers.php +++ b/src/Livewire/Servers.php @@ -37,7 +37,8 @@ public function render(): Renderable 'updated_at' => $updatedAt = CarbonImmutable::createFromTimestamp($system->timestamp), 'recently_reported' => $updatedAt->isAfter(now()->subSeconds(30)), ]; - }); + }) + ->sortBy('name'); }); if (Livewire::isLivewireRequest()) { diff --git a/tests/Feature/Livewire/ServersTest.php b/tests/Feature/Livewire/ServersTest.php index f727a872..82cbddfc 100644 --- a/tests/Feature/Livewire/ServersTest.php +++ b/tests/Feature/Livewire/ServersTest.php @@ -59,3 +59,31 @@ ], ])); }); + +it('sorts by server name', function () { + $data = [ + 'memory_used' => 1234, + 'memory_total' => 2468, + 'cpu' => 99, + 'storage' => [ + ['directory' => '/', 'used' => 123, 'total' => 456], + ], + ]; + Pulse::set('system', 'b-web', json_encode([ + 'name' => 'B Web', + ...$data, + ])); + Pulse::set('system', 'a-web', json_encode([ + 'name' => 'A Web', + ...$data, + ])); + Pulse::set('system', 'c-web', json_encode([ + 'name' => 'C Web', + ...$data, + ])); + + Pulse::ingest(); + + Livewire::test(Servers::class, ['lazy' => false]) + ->assertSeeInOrder(['A Web', 'B Web', 'C Web']); +});