Add BamBuddy AMS, queue, history and stats to the print farm page
Deploy HickLab3D Dashboard / Deploy to production (push) Successful in 28s

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Hickmeister
2026-10-11 20:14:29 +01:00
co-authored by Claude Sonnet 5.5
parent f7e3c8fe16
commit b11538944f
6 changed files with 135 additions and 3 deletions
+46
View File
@@ -0,0 +1,46 @@
<?php
namespace Tests\Feature;
use App\Models\User;
use Illuminate\Foundation\Testing\LazilyRefreshDatabase;
use Illuminate\Support\Facades\Http;
use Tests\TestCase;
class BambuddyPageTest extends TestCase
{
use LazilyRefreshDatabase;
public function test_print_farm_shows_ams_queue_history_and_stats(): void
{
Http::preventStrayRequests();
Http::fake([
'https://3d.example.test/api/v1/printers/1/status' => Http::response([
'connected' => true, 'state' => 'RUNNING', 'progress' => 40.0, 'remaining_time' => 125,
'layer_num' => 52, 'total_layers' => 130, 'current_print' => 'Nozzle_Holder',
'temperatures' => ['nozzle' => 260.0, 'bed' => 90.0],
'ams' => [['id' => 0, 'humidity' => 40, 'temp' => 27.1, 'is_ams_ht' => false, 'tray' => [
['id' => 0, 'tray_color' => '489FDFFF', 'tray_type' => 'ABS', 'remain' => 36, 'exists' => true],
['id' => 1, 'tray_color' => null, 'tray_type' => null, 'remain' => 0, 'exists' => false],
]]],
]),
'https://3d.example.test/api/v1/printers' => Http::response([['id' => 1, 'name' => 'Printy Boii 2', 'model' => 'X1C']]),
'https://3d.example.test/api/v1/queue/' => Http::response([
['id' => 5, 'status' => 'pending', 'position' => 1, 'archive_name' => 'Queued_Bracket', 'completed_at' => null],
['id' => 4, 'status' => 'completed', 'position' => 0, 'archive_name' => 'Old_Job', 'completed_at' => '2026-10-01T10:00:00'],
]),
'https://3d.example.test/api/v1/archives/stats' => Http::response(['total_prints' => 36, 'successful_prints' => 32, 'failed_prints' => 4, 'total_print_time_hours' => 81.5, 'total_filament_grams' => 1937.1]),
'https://3d.example.test/api/v1/archives/*' => Http::response([[
'id' => 36, 'printer_id' => 1, 'print_name' => 'Finished_Vase', 'status' => 'completed', 'filament_type' => 'ABS',
'filament_used_grams' => 49.94, 'actual_time_seconds' => 7265, 'completed_at' => '2026-10-11T09:13:01.375546',
]]),
]);
config()->set('services.bambuddy', ['url' => 'https://3d.example.test', 'api_key' => 'key']);
$admin = User::factory()->create(['role' => 'admin']);
$this->actingAs($admin)->get(route('printers.index'))->assertOk()
->assertSee('Layer 52 of 130')->assertSee('2h 5m')->assertSee('Humidity 40%')->assertSee('Empty')
->assertSee('Queued_Bracket')->assertDontSee('Old_Job')->assertSee('1 queued')
->assertSee('Finished_Vase')->assertSee('2h 1m')->assertSee('Sun 11 Oct 2026, 09:13')->assertSee('81.5 h');
}
}